Skip to content

Zapier Automation: Subcontractor Follow-Up Email Sequence

For Construction Cost Estimators ·

Tools:Zapier, Google Sheets, Gmail (or Outlook)
Time to build:1-2 hours
Difficulty:Intermediate-Advanced
Prerequisites:Comfortable with Google Sheets. No prior Zapier experience needed
Zapier

What This Builds

You'll set up an automation that monitors your bid tracker spreadsheet and automatically sends follow-up emails to subcontractors who haven't responded, at day 7 and day 14 after you invited them. Instead of manually tracking who you've chased and writing individual follow-ups, the system handles it while you focus on actual pricing.

On a typical bid with 20 invited subs, this automation saves 4-8 hours of follow-up work. The emails go out on schedule without you doing anything after the initial setup.

Prerequisites

  • Free Zapier account at zapier.com (the basic version handles this workflow)
  • Google Sheets (free) for your bid tracker
  • Gmail or Outlook email account
  • The Google Sheets bid tracker must have columns for: sub name, sub email, trade, bid due date, and quote status
  • Time: 1-2 hours to build; 0 minutes per bid afterward (it runs automatically)

The Concept

Think of Zapier as a rule engine that connects your apps. You define: "When [this happens] in [this app], do [that] in [that app]." In this case: "When a row in my bid tracker has been in 'Invited' status for 7 days, send that sub an email automatically."

You set the rules once. Zapier checks your spreadsheet every few minutes and fires the emails without you touching it.


Build It Step by Step

Part 1: Set up your bid tracker spreadsheet

Your Google Sheet needs specific columns for this to work. Create a new sheet (or add columns to your existing one) with these exact headers:

ColumnHeaderWhat goes here
AProject Namee.g., "Atlanta Office Tower"
BSub Company Namee.g., "ABC Mechanical"
CSub Emailtheir contact email
DTradee.g., "Mechanical"
EBid Due Datedate format: MM/DD/YYYY
FInvite Datedate you sent the invitation
GQuote Status"Invited" / "Confirmed" / "Quote Received" / "No Bid"
HFollow-Up 1 Sentleave blank initially
IFollow-Up 2 Sentleave blank initially

The key columns Zapier will monitor: F (Invite Date), G (Quote Status), H and I (Follow-Up Sent).

Part 2: Create your follow-up email templates

Before building the Zap, write your two follow-up email templates. Keep them short:

Day 7 template: Subject: [Project Name]: Quote Status Check Body: Hi [Sub Name], following up on our bid invitation for [Project Name] sent [Invite Date]. Our bid is due [Bid Due Date]. Please confirm if you plan to quote and send your pricing by [Bid Due Date minus 1 day]. Questions? Reply here or call [your number]. Thanks.

Day 14 template: Subject: [Project Name]: Final Reminder Body: Hi [Sub Name], this is our final reminder for [Project Name]. We need your [Trade] quote by [Bid Due Date minus 1 day] to include in our bid. If you're not able to quote, please let us know so we can adjust our coverage. Thank you.

Save these somewhere accessible. You'll copy-paste them into Zapier.

Part 3: Create the Zap for Day 7 follow-up

  1. Log into zapier.com, click Create Zap
  2. Trigger: Choose Google SheetsNew or Updated Row
    • Connect your Google account when prompted
    • Select your bid tracker spreadsheet and the sheet tab
    • Set Trigger column to G (Quote Status)
  3. Filter (add this step): Click +Filter by Zapier
    • Condition 1: Quote Status = Invited
    • Condition 2: Follow-Up 1 Sent is empty (blank)
    • Condition 3: Days since Invite Date ≥ 7 (you'll use a formula step for this)
  4. Date calculation step: Click +Formatter by ZapierDate/TimeCalculate Date
    • Start date: use the Invite Date field from your sheet
    • Operation: Add 7 days
    • This gives you "7 days after invite" to compare against today
  5. Filter 2: Only continue if today's date is on or after the calculated date
  6. Action: Choose Gmail (or Outlook) → Send Email
    • To: Sub Email field from sheet
    • Subject: paste your Day 7 subject line
    • Body: paste your Day 7 template. Use the field placeholders {Sub Company Name}, {Project Name}, etc.
  7. Final step: Update your Google Sheet row. Set Follow-Up 1 Sent column to today's date (so it doesn't send again)
  8. Name and turn on: Name it "Bid Tracker: Day 7 Follow-Up" and click Turn On

Part 4: Create the Zap for Day 14 follow-up

Repeat Part 3 with these changes:

  • Change the date calculation to Add 14 days
  • Change the filter: Follow-Up 2 Sent is empty AND Follow-Up 1 Sent is not empty (so it only fires after day 7 ran)
  • Use your Day 14 email template
  • Update Follow-Up 2 Sent column when it fires
  • Name it "Bid Tracker: Day 14 Follow-Up"

Part 5: Test before going live

Test with a fake row:

  1. Add a test row to your spreadsheet with your own email address as the sub email
  2. Set Invite Date to 8 days ago, Quote Status to "Invited"
  3. Run the Zap manually (Test button in Zapier)
  4. Check your email. You should receive the Day 7 follow-up
  5. Verify the Follow-Up 1 Sent column updated in your sheet
  6. Delete the test row when done

Real Example: Full Bid Cycle

Setup: You're managing a bid for a 200,000 SF office building. You invited 22 subs across 11 trades.

Day 0: You add all 22 subs to your bid tracker with status "Invited" and today's invite date. Zapier is watching.

Day 7: 14 subs have replied (Quote Received or Confirmed). Zapier automatically sends the Day 7 follow-up to the remaining 8 who are still "Invited." You're in a pricing meeting and didn't touch it.

Day 10: 4 more subs respond. 4 remain "Invited."

Day 14: Zapier sends the Day 14 final reminder to those 4. You change one to "No Bid" after they call to decline.

Day 15: 3 remaining quotes arrive. You have full coverage.

Time saved: ~4 hours of manual follow-up emails and tracking.


What to Do When It Breaks

  • Zap doesn't trigger → The most common cause is the Google Sheets trigger checking for "new or updated" rows but not catching existing rows. Add a test row change (update a cell) to force a trigger. Zapier checks every 15 minutes on free accounts.
  • Emails go to wrong people → Double-check your column mapping in the Gmail step. Make sure it's pulling from the Sub Email column, not Project Name.
  • Follow-up sent twice → The "Follow-Up 1 Sent is empty" filter should prevent this. Check that your update step is writing to the correct column.
  • Date math is wrong → Zapier's date formatter requires a specific input format. If your Google Sheet dates are MM/DD/YYYY, make sure Zapier is reading them correctly. Try formatting the sheet column as plain text if you're getting errors.

Variations

  • Simpler version: Skip Zapier entirely. Set calendar reminders for day 7 and day 14 after each bid invitation, and draft follow-ups manually using the Outlook Copilot guide (Level 2). Less automation but same structure.
  • Extended version: Add a third Zap that sends you (not the sub) a summary email at bid close listing every sub still in "Invited" status. That's your final coverage check before submitting.

What to Do Next

  • This week: Build and test with one active bid
  • This month: Use it on every bid; refine the email templates based on response rates
  • Advanced: Add a column for "Sub Phone" and use a Zapier SMS integration to send a text reminder on day 14 instead of a second email (higher open rates)

Advanced guide for Construction Cost Estimator professionals. These techniques use more sophisticated AI features that may require paid subscriptions.