Skip to content

Zapier Automation: Turn a New RFP Intake into a Response Team Checklist and Reminders

For Sales Engineers ·

Tools:Zapier, Google Forms, Google Sheets, Gmail
Time to build:2 to 3 hours
Difficulty:Advanced
Prerequisites:Comfortable with the RFP response process. See the Level 3 guide "How-To Guide: Build a Claude Project as Your RFP and Security Questionnaire Answer Library" for where the answers themselves come from. This guide handles the coordination around that library, not the answers.
Zapier

What This Builds

Every RFP starts the same way. Someone has to notice it arrived, figure out which sections need which specialist, and remind three people about a due date they'll otherwise find out about the week it's due. This builds two connected Zaps. The first turns a new RFP intake into a tracked checklist row per section, with owners and due dates, and emails the team the same day. The second runs every week and sends a standing digest of every RFP section that isn't done yet, so nothing quietly slips.

Prerequisites

  • Professional plan ($29.99/month). Two-step Zaps run on Zapier's free plan, but both Zaps here have more than two steps, which needs a paid plan
  • A Google account with Forms, Sheets, and Gmail (free)
  • Sales operations' sign-off if RFP intake already lives in a CRM field you'd rather trigger from instead of a form
  • Total ongoing cost: $29.99/month

The Concept

A Zap is a set of steps that run in the same order every time something happens, the way a checklist fills itself out instead of you filling it out by hand. You tell it what to watch for (a new form submission), what to do first (calculate a due date), what to do next (write rows to a tracker), and what to do last (send an email). Once it's built and turned on, a new RFP triggers the whole chain without you touching it.


Build It Step by Step

Part 1: Build the Intake Form

Go to forms.google.com and create a form called "RFP Intake." Add these fields, all required except where noted:

  • RFP or Deal Name (short answer)
  • Account (short answer, industry and rough size is enough if the account name itself is sensitive at this stage)
  • Response Due Date (date)
  • Security Section Owner (short answer, an email address)
  • Technical or Architecture Section Owner (short answer, an email address)
  • Compliance Section Owner (short answer, an email address, optional if compliance rarely applies to your deals)
  • Priority (multiple choice: High, Medium, Low)

Share this form with whoever logs new RFPs, usually you or the account executive.

Part 2: Zap A, Intake to Checklist

In Zapier, click Create Zap.

Trigger: Google Forms, New Form Response. Connect your account, select the RFP Intake form, and test the trigger so Zapier pulls in a sample response.

Step 2, calculate the draft due date: Add a Formatter by Zapier step. Formatter's Date / Time category handles adding or subtracting time from a date, with a mode built for line items as well as single values. Use it to subtract three days from the Response Due Date field, so your team has a target for a first draft ahead of the real deadline. The exact option name in the transform list may read a little differently depending on your Zapier version, so look for the one that lets you add or subtract a number of days from a date field.

Steps 3 through 5, write one tracker row per section: Add three separate Google Sheets Create Spreadsheet Row actions, one after another, each writing to the same "RFP Response Tracker" sheet. This is three fixed steps, not a loop: one for Security, one for Technical/Architecture, one for Compliance. Each row should include RFP Name, Account, Section, Owner (mapped from that section's owner field), Draft Due (from Step 2), Final Due (the original Response Due Date), and Status, which you set to "Not Started" for every new row. If a section's owner field was left blank on the form, the row still gets created with a blank owner (a Zap can't skip one step in the middle without a Paths setup, which this guide avoids). Treat a blank owner as your visual cue: either assign someone, or mark that row "Done" right away if the section doesn't apply to this deal, so it drops out of the weekly digest.

Add one helper column to the tracker sheet, Open, with this formula pasted down every row (assuming Status is in column G): =IF(G2="Done", "no", "yes"). The digest Zap below filters on it.

Step 6, notify the team: Add a Gmail Send Email action. Send to a shared distribution address if your team has one. If you map the three owner fields directly instead, know that a blank owner address in the To field can make the Gmail step error out, which is one more reason to fill every owner field or use the distribution address. Use a subject like "New RFP: [RFP Name], due [Final Due]" and a body listing each section, its owner, and both due dates, pulled from the fields above.

Turn the Zap on.

About duplicate processing: Google Forms' New Form Response trigger fires once per submission and won't refire if someone edits an existing response later, so this Zap can't double-send from the same intake. If you switch the trigger to watch a Google Sheet directly instead of a form (say, because intake already lives in a CRM-fed sheet), add a "Notified" column and a Filter by Zapier step that only lets rows through where that column is still blank, then have a later step mark it filled. Without that guard, a sheet-based trigger can refire on an edited row and send the checklist twice.

Part 3: Zap B, the Weekly Open-Items Digest

Create a second Zap.

Trigger: Schedule by Zapier, Every Week. Pick a day and time, Monday morning works well for most teams.

Step 2, pull open items: Add a Google Sheets Lookup Spreadsheet Rows (Advanced) step searching the RFP Response Tracker with one condition: the Open column equals "yes." Filtering by status rather than by a due-date window matters here: an item that's already overdue still has a status other than Done, so it keeps appearing in every digest until someone actually finishes it and updates the status. A due-date filter alone would let something drop out of sight the day after it was supposed to be finished, which is exactly what this digest is meant to prevent.

Step 3, join the results into one block: Add a Formatter by Zapier step, Utilities category, using the Line-item to Text option to join the RFP Name, Section, Owner, and due date from every matching row into one block of text, one line per item.

Step 4, send the digest: Add a Gmail Send Email action to your team. In the body, write something like:

Copy and paste this
Open RFP checklist items as of today:

[Step 3 joined text]

One Zapier behavior to know before you rely on this: when Step 2 finds zero open rows, the Zap halts at that step. Zap History shows the run as Halted (not an error, and a halted run uses no tasks), and no digest email goes out that week. In other words, no Monday email means everything is marked Done, or it means something broke, and the only way to tell the two apart is Zap History. If your team would rather get a "nothing open" email every week, keep one permanent row in the tracker with RFP Name "Standing check," Section "none," and Status left blank, so Step 2 always finds at least that one line.

Turn this Zap on too.

Part 4: Test and Refine

Submit a test entry through the intake form with a real (but low-stakes) due date. Confirm three rows appear in the tracker with the right owners and due dates, and that the notification email arrives. Then manually run the digest Zap once from Zapier's interface: you should see your test rows listed. Mark one row "Done" in the sheet and run the digest again. That row should disappear. Leave another row's due date in the past without changing its status, and confirm it still shows up in the digest, since that's the overdue-items behavior this whole design depends on. Then mark every row Done and run once more: Zap History should show that run as Halted at Step 2, with no email sent. Seeing that once means you'll recognize it later instead of mistaking it for a failure.


Real Example: A Security-Heavy RFP Comes In

Setup: An account executive submits the intake form for "Acme Logistics RFP," due in twelve days, with a Security owner, a Technical owner, and no Compliance owner (this deal doesn't need one).

Trigger: The form submission fires Zap A immediately.

Output: Three rows appear in the tracker, each with a Draft Due date nine days out and a Final Due date matching the RFP deadline, all with status "Not Started." The Compliance row has a blank owner because the form field was left empty, so the account executive marks it "Done" the same day since this deal has no compliance section. An email goes to the team's RFP distribution address the same afternoon, listing all three sections and their owners.

One week later: The Technical section is marked "Done" but Security is still "Not Started" with three days left. That Monday's digest lists only the Security row, since Technical dropped off once it was marked Done. The Security row keeps appearing in every subsequent digest, including the week after its due date passes, until someone updates its status.

Time saved: the manual version of this, remembering who owns what and chasing status by memory, tends to lose track of at least one section per RFP cycle when volume picks up. This keeps every open section visible without anyone needing to remember to check.


What to Do When It Breaks

  • Zap A doesn't fire on a new form submission → open Zap History in Zapier and check the trigger step. A common cause is the Google account connection expiring; reconnect it from the Zap's trigger settings.
  • A tracker row has a blank owner → that's expected when the form field was left empty. Add a filter to your intake form making the relevant owner field required, or check the tracker sheet weekly for blank owner cells.
  • The digest halts every week even though the sheet has open rows → the Lookup step's condition has to match the Open column's text exactly. Check that the Open formula is pasted down every row, that it returns "yes" (not "Yes" or a stray space), and that the Zap is pointed at the right tab.
  • Silent failure: weeks go by with no new checklist rows even though RFPs keep arriving → check Zap History for Zap A. Zapier also turns off a Zap automatically after it fails repeatedly and emails the account owner when that happens, so make sure that notification email isn't filtered into a folder nobody checks.

Variations

  • Simpler version: Skip the tracker sheet and send a single Gmail checklist email per RFP, with no ongoing digest. You lose the standing visibility into what's still open, but it's a lighter build.
  • Extended version: Add a Google Calendar event creation step alongside the tracker row, so each section owner also gets a calendar block for their draft due date.

What to Do Next

  • This week: Build Zap A and run one real RFP through it.
  • This month: Add Zap B and watch how the digest changes week to week as items move to Done.
  • Advanced: Feed the tracker sheet's completed sections into a technical win or loss summary once the RFP closes, so the same sheet supports the whole lifecycle.

Advanced guide for sales engineer professionals. Zapier's Zap History stores the data that passes through each step, including anything from the intake form, so keep account names generic at intake time if the deal is early-stage or under an NDA that restricts even internal mentions, and check with whoever owns your NDA process if you're unsure.