Unadhi Guides

Wedding vendor shortlist sheet: each photographer's, caterer's and decorator's published inbox, WhatsApp and Instagram, with quote, advance and the date they hold

Updated 23 Oct 2026 · Disclosure: the contact scraper linked below is an Unadhi product on the Apify Store. This guide is free, and the sheet works with a CSV from any tool or by copying contacts by hand. Current Apify pricing is only on the Store page. This page has no affiliate links and nobody paid to be mentioned.

What you get: one Google Sheet for hiring wedding vendors with one row per vendor you are considering (photographer, caterer, decorator, makeup artist, DJ or band, mehendi artist, venue): the inbox, phone, ready wa.me link and Instagram page each vendor publishes on its own website, the date you asked, the quote, the advance they want and the date they hold your wedding date until. A Next step column (ask now / message on Instagram / chase today / decide by ... / booked / no), a compare tab that ranks quotes inside the budget for each category, and a budget tab with booked totals and advances paid per category. Formulas are below. The example rows are made up.

The finished sheet

vendors tab (example rows are made up)

CategoryVendorDomainInboxPhoneInstagramAsked onQuoteAdvanceHold untilNext step
PhotographyExample Studioexample-studio.inbookings@example-studio.in+910000000001instagram.com/examplestudio2026-10-19180000500002026-10-31decide by 2026-10-31
PhotographySample Framessample-frames.comhello@sample-frames.com+9100000000022026-10-16chase today
CateringDemo Caterersdemo-caterers.ininstagram.com/democaterersmessage on Instagram
DecorTest Decor Cotest-decor.coevents@test-decor.co+9100000000042026-10-21240000800002026-10-25decide by 2026-10-25

Who this is for

Good vendors get booked early for popular dates. The slow part is finding each vendor's actual booking inbox, phone and WhatsApp, then comparing quotes that arrive in different shapes (package price, per plate, advance, hold period). This sheet does both, and keeps every category in one place.

Step 1: list the vendors (tab list)

Columns: A category, B vendor, C website, E instagram (optional). Add every vendor you are considering from recommendations, wedding fairs and search results. In D2, turn the websites into domains:

=ARRAYFORMULA(IF(C2:C="",,LOWER(REGEXREPLACE(REGEXREPLACE(TRIM(C2:C),"^(https?://)?(www\.)?",""),"[/?#].*$",""))))

That turns https://www.Example-Studio.in/weddings into example-studio.in, the same form the scraper writes in its domain field, so it is the key the formulas join on. Many wedding vendors only have an Instagram page and no website: leave C empty for them and paste the Instagram link into E.

Step 2: get each vendor's public inbox, phone, WhatsApp and Instagram (tab scrape)

With the contact scraper

Open the Website Contact Scraper: Emails, Phones & WhatsApp on the Apify Store, paste column D into Websites or domains (plain list) and use this input (JSON tab):

{
  "urls": ["example-studio.in", "sample-frames.com", "demo-caterers.in"],
  "maxPagesPerSite": 4,
  "defaultCountry": "IN",
  "checkEmailMx": true,
  "includePersonalEmails": false,
  "includePersonProfiles": false
}

When the run finishes, export the dataset as CSV, then in your sheet use File → Import → Upload, "Insert new sheet", and name the tab scrape. Keep the headers. Apify flattens lists into numbered columns such as emails/0/email, emails/1/email, phones/0/phone, socials/whatsapp/0/url and socials/instagram/0/url; the formulas find them by header name, so column order does not matter.

Free, without the scraper

Make a scrape tab with the headers domain, status, emails/0/email, emails/1/email, phones/0/phone, socials/whatsapp/0/url and socials/instagram/0/url, open each vendor's contact page and type what you see, with ok in status. Slower, but the same formulas work.

Step 3: the vendors tab

Category =list!A2, Vendor =list!B2, Domain =list!D2. Every contact column uses one lookup pattern; change only the header in quotes. Put the first two emails found in hidden helper columns N and O:

=IFERROR(INDEX(scrape!$A:$ZZ,
  MATCH($C2, INDEX(scrape!$A:$ZZ, 0, MATCH("domain", scrape!$1:$1, 0)), 0),
  MATCH("emails/0/email", scrape!$1:$1, 0)), "")

with emails/1/email in O. Then the Inbox in D2 prefers an address that looks like a booking inbox:

=IF(REGEXMATCH(O2, "(?i)^(bookings?|enquir(y|ies)|inquir(y|ies)|weddings?|events?|hello)@"), O2, N2)

Phone in E2 uses the same lookup with phones/0/phone, WhatsApp in a column P with socials/whatsapp/0/url, and Instagram in F2 with socials/instagram/0/url, wrapped so a link you typed yourself is kept:

=IF(list!E2<>"", list!E2, IFERROR(INDEX(scrape!$A:$ZZ,
  MATCH($C2, INDEX(scrape!$A:$ZZ, 0, MATCH("domain", scrape!$1:$1, 0)), 0),
  MATCH("socials/instagram/0/url", scrape!$1:$1, 0)), ""))

If Inbox, Phone and WhatsApp are all empty, check status in the table below.

Step 4: the quote columns and Next step

Type what each vendor sends you: Asked on (G), Quote (H, the full package price for what you asked for), Advance (I) and Hold until (J, the date the vendor keeps your wedding date free without an advance). Add column L Answer: booked, no or blank, and column M Advance paid (the amount, once you pay it).

Next step in K2:

=IF(B2="", "",
 IF(L2="booked", "booked", IF(L2="no", "no",
 IF(G2="", IF(AND(D2="", E2="", P2=""), IF(F2="", "find contact", "message on Instagram"), "ask now"),
 IF(H2="", IF(TODAY()-G2>=3, "chase today", "wait"),
 IF(J2="", "ask how long they hold the date",
 IF(J2<TODAY(), "hold expired: ask again", "decide by " & TEXT(J2, "yyyy-mm-dd"))))))))

Three days is the chase point; change it to suit. Sort or filter by Next step each evening and whoever is helping takes the "ask now" and "chase today" rows.

Step 5: the budget and compare tabs

On a budget tab, put each category in A and its budget in B. Then:

C2 (booked):       =SUMIFS(vendors!H:H, vendors!A:A, A2, vendors!L:L, "booked")
D2 (left):         =B2-C2
E2 (advance paid): =SUMIFS(vendors!M:M, vendors!A:A, A2)
F2 (quotes in):    =COUNTIFS(vendors!A:A, A2, vendors!H:H, "<>")

Add a total row with =SUM(B2:B), =SUM(C2:C) and =SUM(E2:E), and format D red when it is below zero. On a compare tab, type a category in A1 and list every quote for it inside its budget, cheapest first:

=SORT(FILTER({vendors!B2:B, vendors!H2:H, vendors!I2:I, vendors!J2:J},
  vendors!A2:A=A1, vendors!H2:H<>"",
  vendors!H2:H<=VLOOKUP(A1, budget!A:B, 2, FALSE), vendors!L2:L<>"no"), 2, TRUE)

Quotes are only comparable when they cover the same things. Note in a spare column what each one includes (hours, number of photographers, album, plates, travel, taxes) before you rank them.

What the status values mean

statusMeaningWhat to do
okSite readUse the inbox, phone, WhatsApp or Instagram found
blocked-by-robotsThe site asks bots not to crawlOpen its contact page yourself
blocked-by-termsThe site's terms forbid scraping (clause quoted in error)Same
blocked-by-tos-listThe "website" is a platform page such as Instagram or FacebookMessage the vendor on that platform
blocked-by-site, rate-limited, failedHTTP 401/403/429, too many requests, or unreachableRetry later, or call

The enquiry that gets a full quote back

Ask for everything you need to compare in one message, so the vendor answers once. Example for a photographer:

Subject: Wedding photography enquiry: 12-13 Dec, about 300 guests

Hello,

We are planning our wedding on 12 and 13 December in [city], with
about 300 guests: [list the events, e.g. haldi, sangeet, wedding, reception].
Could you send:

1. Whether you are free on those dates
2. Your package price for this, and what it includes
   (hours, number of photographers, video, album, travel)
3. The advance, and when the balance is due
4. Your cancellation and date-change terms
5. How long you can hold the dates for us

Thank you,
[Name], [phone]

This is a customer asking for a quote, not marketing, so it is fine to email or message a vendor's published booking contact. Keep the sheet to what the booking needs and share it only with the people planning.

Check before you pay an advance

Partner programme opening soon

Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received.

Sources

Related

← All guides

Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.