For Wedding & Event Planners

Stop Answering
"How Much for Our Wedding?"
Let a Calculator Do It

Free budget calculator for your wedding planning or venue website. Couples get instant estimates. You get qualified leads. Setup in 5 minutes.

No credit card required
Free forever for calculators
Works on Wix, WordPress, any site
💒 Wedding Budget Calculator
📅 Event Details
 
🏛️ Venue Selection
 
✨ Services
💐 Extras
 
💰 Budget Estimate
$ 20,200.00
👥 100 guests • $202/guest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
export function weddingBudgetForm(form: FormTs) {
form.setTitle(() => '💒 Wedding Budget Calculator');
 
form.configureCompletionScreen({
type: 'text',
title: () => '🎉 Budget Ready!',
message: () => 'Your wedding budget estimate has been created. Download the PDF to share with your partner!'
});
 
const venueRates: Record<string, number> = {
'backyard': 500,
'restaurant': 2500,
'hotel': 5000,
'barn': 3500,
'estate': 8000
};
 
const seasonMultipliers: Record<string, number> = {
'peak': 1.3,
'shoulder': 1.0,
'off-peak': 0.8
};
 
const eventDetails = form.addSubform('eventDetails', {
title: () => '📅 Event Details',
mobileBreakpoint: 0
});
 
eventDetails.addRow(row => {
row.addInteger('guestCount', {
label: 'Number of Guests',
min: 20,
max: 500,
defaultValue: 100,
isRequired: true
}, '1fr');
 
row.addDropdown('season', {
label: 'Season',
options: [
{ id: 'peak', name: 'Peak (Jun-Sep) +30%' },
{ id: 'shoulder', name: 'Shoulder (Apr-May, Oct)' },
{ id: 'off-peak', name: 'Off-Peak (Nov-Mar) -20%' }
],
defaultValue: 'shoulder',
isRequired: true
}, '1fr');
});
 
const venueSection = form.addSubform('venue', {
title: () => '🏛️ Venue Selection',
mobileBreakpoint: 0
});
 
venueSection.addRow(row => {
row.addRadioButton('venueType', {
label: 'Venue Type',
options: [
{ id: 'backyard', name: '🏡 Backyard ($500)' },
{ id: 'restaurant', name: '🍽️ Restaurant ($2,500)' },
{ id: 'barn', name: '🌾 Barn/Rustic ($3,500)' },
{ id: 'hotel', name: '🏨 Hotel ($5,000)' },
{ id: 'estate', name: '🏰 Estate ($8,000)' }
],
defaultValue: 'hotel',
orientation: 'vertical',
isRequired: true
});
});
 
const servicesSection = form.addSubform('services', {
title: () => '✨ Services',
mobileBreakpoint: 500
});
 
servicesSection.addRow(row => {
row.addDropdown('catering', {
label: 'Catering Style',
options: [
{ id: 'buffet', name: 'Buffet ($45/person)' },
{ id: 'plated', name: 'Plated ($65/person)' },
{ id: 'stations', name: 'Stations ($75/person)' }
],
defaultValue: 'plated',
isRequired: true
}, '1fr');
 
row.addDropdown('bar', {
label: 'Bar Service',
options: [
{ id: 'none', name: 'No Bar ($0)' },
{ id: 'beer-wine', name: 'Beer & Wine ($25/pp)' },
{ id: 'full', name: 'Open Bar ($50/pp)' }
],
defaultValue: 'beer-wine'
}, '1fr');
});
 
servicesSection.addRow(row => {
row.addDropdown('photography', {
label: 'Photography',
options: [
{ id: 'none', name: 'None ($0)' },
{ id: 'basic', name: 'Basic ($1,500)' },
{ id: 'standard', name: 'Standard ($3,000)' },
{ id: 'premium', name: 'Premium ($5,000)' }
],
defaultValue: 'standard'
}, '1fr');
 
row.addDropdown('music', {
label: 'Music',
options: [
{ id: 'playlist', name: 'DIY Playlist ($0)' },
{ id: 'dj', name: 'DJ ($1,200)' },
{ id: 'band', name: 'Live Band ($3,500)' }
],
defaultValue: 'dj'
}, '1fr');
});
 
const extrasSection = form.addSubform('extras', {
title: () => '💐 Extras',
mobileBreakpoint: 500
});
 
extrasSection.addRow(row => {
row.addCheckboxList('extras', {
label: 'Select Extras',
options: [
{ id: 'flowers', name: '💐 Flowers & Decor (+$1,500)' },
{ id: 'cake', name: '🎂 Wedding Cake (+$500)' },
{ id: 'planner', name: '📋 Wedding Planner (+$2,000)' },
{ id: 'photobooth', name: '📸 Photo Booth (+$800)' }
],
defaultValue: ['flowers', 'cake'],
orientation: 'vertical'
});
});
 
const getVenueCost = () => {
const venueType = venueSection.radioButton('venueType')?.value() || 'hotel';
const season = eventDetails.dropdown('season')?.value() || 'shoulder';
const base = venueRates[venueType] || 5000;
const mult = seasonMultipliers[season] || 1;
return Math.round(base * mult);
};
 
const getCateringCost = () => {
const guests = eventDetails.integer('guestCount')?.value() || 100;
const catering = servicesSection.dropdown('catering')?.value() || 'plated';
const bar = servicesSection.dropdown('bar')?.value() || 'beer-wine';
 
const cateringPrices: Record<string, number> = { buffet: 45, plated: 65, stations: 75 };
const barPrices: Record<string, number> = { none: 0, 'beer-wine': 25, full: 50 };
 
return guests * ((cateringPrices[catering] || 65) + (barPrices[bar] || 25));
};
 
const getServicesCost = () => {
const photoPrices: Record<string, number> = { none: 0, basic: 1500, standard: 3000, premium: 5000 };
const musicPrices: Record<string, number> = { playlist: 0, dj: 1200, band: 3500 };
 
const photo = servicesSection.dropdown('photography')?.value() || 'standard';
const music = servicesSection.dropdown('music')?.value() || 'dj';
 
return (photoPrices[photo] || 0) + (musicPrices[music] || 0);
};
 
const getExtrasCost = () => {
const selected = extrasSection.checkboxList('extras')?.value() || [];
const prices: Record<string, number> = {
flowers: 1500,
cake: 500,
planner: 2000,
photobooth: 800
};
return selected.reduce((total, id) => total + (prices[id] || 0), 0);
};
 
const getTotalCost = () => getVenueCost() + getCateringCost() + getServicesCost() + getExtrasCost();
 
const summary = form.addSubform('summary', {
title: () => '💰 Budget Estimate',
isCollapsible: false
});
 
summary.addRow(row => {
row.addPriceDisplay('total', {
label: 'Estimated Total',
computedValue: () => getTotalCost(),
alignment: 'center',
variant: 'large'
});
});
 
summary.addRow(row => {
row.addTextPanel('perGuest', {
computedValue: () => {
const guests = eventDetails.integer('guestCount')?.value() || 100;
const perGuest = Math.round(getTotalCost() / guests);
return `👥 ${guests} guests • $${perGuest}/guest`;
},
customStyles: {
fontSize: '0.95rem',
color: '#059669',
textAlign: 'center',
fontWeight: '500'
}
});
});
 
form.configureSubmitButton({
label: () => 'Get Vendor Recommendations'
});
}
 

Why Wedding Planners Love It

Stop spending hours on budget discussions. Let couples explore options and come to you ready to book.

Save Hours Per Week

No more endless emails about pricing. Couples get instant budget estimates 24/7.

More Qualified Leads

Couples who submit already know their budget. Focus on clients who are ready to commit.

Look Professional

Interactive budget tools build trust and set you apart from competitors.

No Coding Required

Describe what you need. Our AI builds your calculator in minutes.

Add a Budget Calculator in 3 Steps

1

Build Your Calculator

Use our AI assistant or pick a template. Set your venue prices, service packages, and seasonal rates.

2

Customize Your Look

Match your brand colors and add your logo. Mobile-friendly by default. Looks great everywhere.

3

Embed Anywhere

Copy 2 lines of code. Works on WordPress, Wix, Squarespace, Shopify, or any custom site.

Add to your website
<script src="https://formts.com/widget.js"></script>
<formts-widget link-id="your-calculator"></formts-widget>

Everything You Need to Automate Quotes

Real-Time Calculations

Prices update instantly as couples build their dream wedding. No page reloads, no waiting.

Email Notifications

Get notified the moment someone requests a quote. Never miss a lead.

PDF Proposals

Auto-generate beautiful proposal PDFs with your branding. Send instantly.

Seasonal Pricing

Set different rates for peak season, weekends, and holidays automatically.

Works Everywhere

Embed on any website with 2 lines of code. WordPress, Wix, Squarespace, custom sites.

Mobile Optimized

Looks great on phones and tablets. Couples browse on mobile while dreaming.

Frequently Asked Questions

Do I need to know how to code?

No. Our AI assistant builds the calculator from your description. Just tell it about your services and pricing structure. You can also start from a template and customize it - no coding required.

Will it work on my Wix/WordPress/Squarespace site?

Yes. FormTs works on any website that allows custom HTML. You just paste 2 lines of code where you want the calculator to appear. Works on WordPress, Wix, Squarespace, Shopify, and any custom site.

Is the calculator really free?

Yes. Calculators that don't collect submissions are completely free - no limits, no credit card. If you want to collect couple details, the Free plan includes 100 submissions/month. Need more? Pro gives you 1,000/month.

Can I customize for seasonal pricing?

Absolutely. You can set different rates for peak season, off-season, weekdays vs weekends, and holidays. The calculator adjusts pricing automatically based on the date couples select.

How do I get notified when someone requests a quote?

All submissions appear in your dashboard instantly. Pro plan includes email notifications and webhooks to connect with Zapier, n8n, Make, or send data directly to your CRM.

Can couples download their budget estimate?

Yes! You can enable PDF downloads so couples get a beautiful, branded proposal document with all their selections and pricing. Great for them to share with family.

Ready to Stop Wasting Time on Budget Calls?

Join hundreds of wedding planners and venues who automated their pricing. Start with a free template or let AI build your custom calculator.

No credit card required. Free plan available. Setup in under 10 minutes.