Skip to main content
AI/MLjeremylongshore

procore-core-workflow-b

"Procore core workflow b \u2014 construction management platform integration.\n\

Stars
2,267
Source
jeremylongshore/claude-code-plugins-plus-skills
Updated
2026-05-31
Slug
jeremylongshore--claude-code-plugins-plus-skills--procore-core-workflow-b
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/saas-packs/procore-pack/skills/procore-core-workflow-b/SKILL.md -o .claude/skills/procore-core-workflow-b.md

Drops the SKILL.md into .claude/skills/procore-core-workflow-b.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Procore Core Workflow B

Overview

Build a submittal workflow: create submittals, assign reviewers, track approvals, and manage the review cycle.

Prerequisites

  • Completed procore-core-workflow-a (RFIs)

Instructions

Step 1: Create Submittal

submittal = requests.post(
    f"{BASE}/projects/{project_id}/submittals",
    headers={**headers, "Content-Type": "application/json"},
    json={
        "submittal": {
            "title": "Concrete mix design — Foundation",
            "specification_section": "03 30 00",
            "description": "Concrete mix design for foundation pour, 4000 PSI.",
            "received_from_id": 33333,  # Subcontractor
            "approver_id": 44444,        # Project engineer
            "due_date": "2026-04-20",
        }
    },
)
submittal_id = submittal.json()["id"]
print(f"Submittal #{submittal.json()['number']} created")

Step 2: Update Submittal Status

# Approve the submittal
requests.patch(
    f"{BASE}/projects/{project_id}/submittals/{submittal_id}",
    headers={**headers, "Content-Type": "application/json"},
    json={"submittal": {"status_id": 2}},  # 2 = Approved
)

Step 3: List Submittals with Filters

# Get all pending submittals
pending = requests.get(
    f"{BASE}/projects/{project_id}/submittals",
    headers=headers,
    params={"filters[status_id]": 1},  # 1 = Open/Pending
)
for s in pending.json():
    print(f"  #{s['number']}: {s['title']} — Due: {s['due_date']}")

Output

  • Submittals created with specification sections
  • Review workflow with approve/reject
  • Filtered submittal listing

Error Handling

Error Cause Solution
422 Missing approver Required field Set approver_id
403 Cannot approve Not the approver Only assigned approver can approve

Resources

Next Steps

Handle events: procore-webhooks-events