Mirror your Procore submittal log into a Google Sheet

Every weekday at 6am, refresh a Google Sheet with current submittal status for every active project, so stakeholders without a Procore seat can follow along.

Deterministic Code
ProcoreGoogle SheetsOperationsData Sync
PromptCreate

Every weekday at 6am, mirror my Procore submittal log into a Google Sheet so that architects, owners, and subcontractors who do not hold a Procore seat can still see current submittal status without anyone exporting it by hand. Use a cron trigger, Monday through Friday at 6am in my local timezone.

Start with Procore List Projects to get my company's active projects. For each active project, call Procore List Submittals to pull that project's full submittal log. Page through the results so a long log comes back complete rather than truncated to the first page.

Write each project's submittals into its own tab of a single Google Sheets spreadsheet, which I will identify by spreadsheet ID. Name each tab after the Procore project. Before writing, read the spreadsheet's existing tabs with Get Spreadsheet and create any missing project tab with Batch Update Spreadsheet, so a newly started project does not break the run.

Use exactly these columns, in this order, with a header row in row 1: submittal number, title, spec section, status, ball in court, revision, submit by date, due date, approved date. Do not reorder, rename, or insert columns. People will build filters and pivot tables on top of this sheet, so the column layout has to stay identical from run to run.

Each run must replace the whole tab rather than append to it. Clear the tab's data range with Google Sheets Clear Values first, then write the header row plus all current submittal rows starting at A1 with Google Sheets Update Values. This matters: an append only sheet drifts out of sync as submittals change status, and clearing before writing also removes leftover rows from a previous run when the log gets shorter. The sheet should always read as a clean current snapshot.

If a project has no submittals, still write the header row to its tab. An empty log should produce a valid empty table, never a blank or broken tab.

Write every cell as a plain value rather than a formula, and send values as raw text so that Sheets does not reinterpret submittal numbers like 03-100 as dates. Format all three date columns as YYYY-MM-DD. When a field is missing on a submittal, for example an approved date on something still in review, write an empty cell so every row keeps the same number of columns and nothing shifts left. Sort rows by submittal number so the ordering is stable between runs.

Every step here is a known list or write operation over structured fields, so build this as deterministic nodes. Do not summarize, reword, or interpret anything: copy status, ball in court, and every other value through exactly as Procore reports it.

What does this prompt do?

  • Every weekday at 6am, pulls the submittal log for each of your active Procore projects and writes it into a shared Google Sheet, one tab per project.
  • Replaces the contents of each tab on every run, so the sheet is always a clean picture of where things stand today rather than a growing list of stale rows.
  • Gives every project a consistent set of columns: submittal number, title, spec section, status, ball in court, revision, submit by date, due date, and approved date.
  • Lets architects, owners, and subcontractors check submittal status in a spreadsheet they already have access to, with no Procore licence and no manual export.

What do I need to use this?

  • A Procore account that can see the projects and submittals you want to share
  • A Google account and one spreadsheet set aside for the submittal log
  • The link to that spreadsheet, so the workflow knows where to write
  • A view only share on the spreadsheet for the outside parties who need to follow along

How can I customize it?

  • Change the timing: run it once every weekday morning, twice a day, or only on Mondays.
  • Limit which projects get a tab, for example only the jobs currently in construction rather than every active project.
  • Adjust the columns or their order if your team tracks something extra, such as the responsible contractor or the submittal type.
  • Point it at a second spreadsheet so each client or owner gets their own copy with only their project on it.

FAQs

Do the people reading the sheet need a Procore licence?
No, and that is the whole point. Anyone you share the Google Sheet with can see current submittal status without a Procore seat, so architects, owners, and subcontractors stay in the loop without adding cost.
Will this overwrite notes I type into the sheet?
Yes, within the columns it manages. Each run replaces the contents of the project tab so the data stays accurate. If your team wants to add commentary, keep it on a separate tab in the same spreadsheet and it will be left alone.
What happens to a project that has no submittals yet?
It still gets a tab with the header row in place, so the sheet stays consistent and nobody hits a blank or broken tab. Rows appear as soon as submittals exist in Procore.
How up to date is the sheet during the day?
It reflects Procore as of the last run, so with a 6am schedule it shows where things stood that morning. If your team needs fresher numbers, run it more than once a day.
What if we add a new project in Procore?
It gets picked up on the next run and a new tab is created for it automatically, so you do not have to set anything up when a job starts.

Related templates

Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client account

Stop re-keying submittal status into spreadsheets

Let the submittal log update itself every morning, so the people outside Procore always see the current picture.