Zapier Automation: Automated Subcontractor Bid Solicitation Sequences
What This Builds
An automated system that sends bid solicitation emails to your entire subcontractor list whenever you start a new project, triggered by a single row entry in a Google Sheet. When bid day approaches, a second automation fires reminder emails to non-responders. What used to take 2-4 hours of manual email writing and sending becomes a 5-minute setup process that runs itself.
Prerequisites
- Zapier account (free plan works for basic automation; Zapier Starter at {{tool:Zapier.price}} needed for multi-step automations)
- Gmail or Outlook email account you use for bid correspondence
- Google Sheets (free) for your project and subcontractor tracking
- A list of your regular subcontractors with email addresses
- Basic comfort with spreadsheets
The Concept
Think of Zapier as an assembly line worker who watches your spreadsheet 24/7. The moment you add a new row (a new project), the worker automatically sends personalized emails to everyone on your subcontractor list for the relevant trades. Another worker watches a different trigger (bid date approaching) and sends follow-up emails to anyone who hasn't responded. You write the email templates once. The automation fills in the project details and sends them for you.
Build It Step by Step
Part 1: Set Up Your Spreadsheet Foundation
1. Create a Project Master Sheet in Google Sheets: Set up one sheet called "Projects" with these column headers:
- A: Project ID (your internal number)
- B: Project Name
- C: Project Type (Office / Healthcare / Warehouse / etc.)
- D: Project Location
- E: Bid Due Date
- F: Bid Due Time
- G: Where to Get Drawings (link or description)
- H: Contact Name
- I: Contact Email
- J: Scope Description (2-3 sentences about the project)
- K: Email Sent? (leave blank; Zapier will write here)
2. Create a Subcontractor List Sheet: Create a second sheet called "Subcontractors" with:
- A: Sub Company Name
- B: Contact Name
- C: Email Address
- D: Trade (Mechanical / Electrical / Concrete / Drywall / etc.)
- E: Active? (Yes/No)
Fill this in with your regular subcontractors.
Part 2: Write Your Email Template
3. Draft your solicitation email template: Use ChatGPT to create a professional template with merge field placeholders. The placeholders will be filled in by Zapier.
Your template might look like:
Subject: Bid Invitation – {{Project Name}} – Due {{Bid Due Date}} {{Bid Due Time}}
Dear {{Sub Contact Name}},
We are pleased to invite you to bid the {{Trade}} scope on {{Project Name}}, a {{Project Type}} project located in {{Project Location}}.
Bid Due: {{Bid Due Date}} at {{Bid Due Time}}
Project Scope:
{{Scope Description}}
Drawings and specifications are available at: {{Where to Get Drawings}}
Please confirm receipt of this invitation and let us know if you plan to submit a proposal. Questions can be directed to {{Your Contact Name}} at [your email].
We appreciate your partnership and look forward to your proposal.
[Your company name and signature]
Save this template. You'll enter it into Zapier in the next step.
Part 3: Build the Zapier Automation
4. Log into Zapier: Go to zapier.com and log in (or create a free account).
5. Create a new Zap. Trigger: New row in Google Sheets:
- Click Create Zap (or + New Zap)
- Search for Google Sheets as the Trigger app
- Select trigger event: New Spreadsheet Row
- Connect your Google account and select your Projects spreadsheet
- Select the "Projects" sheet/tab
- Click Test trigger. Zapier will pull the most recent row to confirm it's connected
6. Add a Filter step (only run when Email Sent is blank):
- Click + to add a step, search for Filter by Zapier
- Set condition: Column K (Email Sent?) Does not exist or Is empty
- This prevents re-sending emails if you edit an existing project row
7. Add a Lookup step to find matching subs by trade: This is where it gets more advanced. For a simplified version, skip the automatic trade matching and use one of these approaches instead:
- Simple approach: Create separate Projects sheets by trade (one for Mechanical, one for Electrical, etc.) and run separate Zaps for each
- Advanced approach: Use a Zapier lookup table or Google Sheets QUERY formula to pull matching subs
For the simple approach:
- Add a Gmail (or Outlook) action step
- Set To: as your subcontractor email address (you'll need one Zap per sub, or use a different approach below)
8. The practical shortcut: Gmail BCC to a trade group: The most practical setup for most estimators:
- Create a Gmail group (or distribution list in Outlook) for each major trade: mechanical@yourdomain.com, electrical@yourdomain.com, etc.
- Add all subs for each trade to the respective group
- In your Zap, send the solicitation email TO each trade group address
- The group distributes to all subs automatically
This means you maintain your sub lists in Gmail/Outlook groups rather than Zapier, which is simpler to manage.
9. Configure the Gmail action:
- Add Gmail as the action app
- Select Send Email
- Connect your Gmail account
- Map the fields:
- To: Enter your Mechanical trade group email (or individual sub email)
- Subject: Click the merge icon and select your Project Name and Date columns
- Body: Paste your email template; click merge icons to insert column data in each placeholder location
10. Add a "Mark as sent" step:
- Add another Google Sheets action
- Select Update Spreadsheet Row
- Set Column K (Email Sent?) to "Yes" and today's date
- This prevents duplicate sends
11. Test the Zap:
- Add a test project row in your Projects sheet
- Run the Zap manually and confirm the email sends correctly
- Check that the merge fields populated correctly (Project Name, Date, etc.)
- Turn the Zap on
Part 4: Build the Follow-Up Reminder Automation
12. Create a second Zap for follow-up reminders: This Zap runs on a schedule (daily) and sends reminders when bid day is approaching.
- Create a new Zap
- Trigger: Schedule by Zapier → every day at 7:00 AM
- Add Google Sheets → Find Rows. Look for rows where Bid Due Date is 3 days from today and Email Sent is "Yes" but Response Received is blank
- Action: Gmail → Send reminder email to the relevant trade groups
This requires more complex date logic. For a simpler approach, use Zapier's built-in date functions or the Google Sheets QUERY function to pre-calculate a "Send Reminder Date" column (Bid Date minus 3 days) and trigger on matches to that column.
Real Example: Office Building Bid
Setup: Estimator adds a new row to the Projects sheet for "Riverside Corporate Center," a 45,000 SF office building with a bid due March 31st.
Trigger: Zapier detects the new row at 8:00 AM.
Automation runs: At 8:05 AM, bid invitation emails go out to all 23 subcontractors across 6 trade groups (mechanical, electrical, concrete, drywall/framing, glazing, roofing). Each email has the project name, bid date, scope description, and drawings link auto-filled from the spreadsheet row.
Time saved: 45 minutes of individual email writing and sending → 5 minutes to fill in the spreadsheet row.
Follow-up: 3 days before bid day (March 28th), a second automation sends reminders to all trade groups: "Bid Reminder: Riverside Corporate Center. Your quote is due Monday March 31st at 2:00 PM."
What to Do When It Breaks
- Emails not sending → Check Zapier's "Task History." It shows exactly which step failed and why. Common cause: Gmail connection expired and needs re-authorization.
- Merge fields showing as blank → The column mapping in Zapier may be off. Go back into the Zap editor and re-map the fields manually
- Sending duplicate emails → Check that the "Email Sent?" filter step is working correctly; you may need to clear old test data from the sheet
- Zapier doesn't detect new rows → Make sure you're adding truly new rows, not editing existing ones; Zapier only triggers on net-new rows
Variations
- Simpler version: Skip the automation entirely and just use a Gmail template (Drafts → Save as template) with placeholders you update manually. This saves 60% of the time with 10% of the setup effort
- Extended version: Connect to BuildingConnected's API (if available) to automatically pull your active sub list from your existing BD platform
What to Do Next
- This week: Build the basic spreadsheet structure and write your email template
- This month: Launch the first Zap for one trade (mechanical) and test it on a real bid
- Advanced: Add a response tracking column and build a "non-responders" follow-up Zap that targets only subs who haven't confirmed
Advanced guide for Construction Cost Estimator professionals. Zapier subscription may be required for multi-step automations. Tool interfaces may change. Visit zapier.com for current documentation.