Click accept_470
Opens vtg-bid-intake form in new tab
Manual
Fill Intake Form
Sales Exec · Blueprints · delivery · partner · mfr · due date · bond
Manual
Click any step to see detail · Scroll right if needed · Two tracks share the same invoicing lane
Monday_Item_ID__c as the external ID — creating new SF records or updating existing ones idempotently. After the SF upsert, the Worker writes the Salesforce Account ID back to the UID column (text_mm6s8adk) on the monday.com Accounts board, completing the cross-system link. A backfill script (backfill.mjs) ran against all 791 existing accounts to populate Salesforce and stamp the UID column. Complements vtg-monday-sf-sync which syncs Bids — this Worker handles the CRM Account/Contact layer.link_mm591mdg, and creates a bond subitem + email if bond is required. The accept also sends a trigger to El Nova, which creates the Accepted Monitor board item.link_mm591mdg, and creates a bond subitem + email if required. Patched Sep 3 2026: fixed Account/Contact lookup (items_page + contains_text — previously used unreliable items_by_multiple_column_values), fixed SOV Builder link not being written, bond section redesigned (Surety bond read-only), retries bumped 3→4.?item={monday_item_id}. Supports multi-tab buildings, ADD-ALTS tab, Summary tab, section type picker (Wired/Wireless/Firewall/UPS/Cable/MIBS/Fiber/Other), SKU dropdown, per-row labor, markup overrides, and bond toggle. Save & Submit generates a jsPDF SOV PDF and uploads it to the Bids #3 Files column. Saved payload includes a vendorPOs array pre-grouped by vendor — ready for future NetSuite PO creation.logo file column. Sets logo_status to Logo Found / Needs Manual Logo / No Website. Triggered on Account creation. Companion script vtg-logo-backfill (backfill.mjs) ran against all 786 existing Accounts.config/tools.json is source of truth for tool entries. Docs backed by GitHub markdown files.sso.us.tdsynnex.com, caches the token in KV with auto-refresh, and exposes a /api/lookup?pn=PARTNUMBER endpoint. Handles both numeric part numbers (synnexSKU) and alphanumeric (mfgPN). Falls back to SKU_CATALOG KV for VTG-specific items (labor, Cloudpath). Called internally by vtg-sov-builder via a [[services]] binding — never exposed directly to the browser. Key bug fixed at build: TD Synnex returns HTTP 200 with status: "Not found" for unknown SKUs (not a 404), requiring an explicit status-string check to trigger the KV fallback.text_mm6s8adk) on the Accounts board. A backfill script (backfill.mjs) ran against all 791 existing accounts to populate Salesforce and stamp the UID column. Complements vtg-monday-sf-sync which syncs Bids — this Worker handles the CRM Account/Contact layer.document_status_changed webhook when a SOW finishes generating, downloads the .docx, and routes by template name — "ScopeStack eRate Template V2" uploads to Bids #3 SOW Document column (file_mm6wm4hn); anything else goes to El Nova Leads Customer Summary (file_mkw7hy4z). Endpoint 2 (POST /generate): triggered by a "Generate SOW" button click on a Bids #3 item — reads the 470# from the item, finds the matching ScopeStack project, and triggers programmatic SOW generation; the webhook then auto-delivers the doc. 470# extracted from filename or via project API lookup when filename is null.remote ap-cli <MAC> "get lldp neighbors" on each via SSH, parses output to extract switch hostname, port, chassis MAC, and management IP, displays as a formatted console table, exports to a timestamped CSV, and optionally writes LLDP data back to each AP's description field via controller CLI. Built to run locally because remote sites lack public-facing IPs on the controller. Uses prompt-based SSH waiting (_wait_for()) rather than blind sleeps. Added to VTG portal as tool #23.text_mm6s8adk) by the vtg-sf-account-sync Worker after a successful Account upsert. Serves as the permanent cross-system identifier linking a monday.com Account record to its Salesforce counterpart. The external ID field Monday_Item_ID__c on the SF Account object is the join key used for idempotent upserts — UID is what comes back.wrangler deploy from Command Prompt (not PowerShell — blocked by Norton). Source files at OneDrive\VTG Flows\<worker-name>\.https://{accountId}.suitetalk.api.netsuite.com/…/oauth2/v1/token.wrangler deploy), manage KV keys (wrangler kv key put/get/delete), and set secrets (wrangler secret put). Must be run from Command Prompt (not PowerShell — blocked by Norton AV)./admin/skus. Lets Jon manage the product catalog without touching code or running wrangler commands: browse all vendor SKUs, add individual parts, upload JSON catalog files, and see the wrangler CLI commands for bulk pushes. Vendor catalogs loaded: Ruckus switches/APs, N1C UPS (62 SKUs at 2026-27 Platinum pricing), VTG cabling (shared with Materials Log).query (the GraphQL mutation), variables (JSON with {"file": null}), map (JSON with {"0": ["variables.file"]}), and the file itself as field "0". The simpler variables[file] form-append approach silently returns a 200 OK but does not actually persist the file. Endpoint: https://api.monday.com/v2/file (not the standard /v2 endpoint). Used by vtg-scopestack-doc-sync to attach SOW .docx files to board items.| ID | Trigger | Action | Notes |
|---|---|---|---|
| 615242921 | When an item is created | Send a webhook | Fires vtg-account-logo Worker on Account creation to scrape + upload district logo |
| 615244207 | When column text_mkxpgyv6 (website URL) changes | Send a webhook | Re-triggers logo fetch when El Nova website URL is updated on an existing Account |
| SF sync webhook | When Account created or updated | Send webhook → vtg-sf-account-sync | LIVE Sep 8 2026 — upserts Account + Contact to Salesforce via Monday_Item_ID__c external ID; writes SF Account ID back to UID column (text_mm6s8adk) |
| ID | Trigger | Action | Notes |
|---|---|---|---|
| 7920733007 | When "Accept 470" button clicked | Set Status column (color_mm599ptd) → Accepted | The first step in the accept chain — status change then triggers the webhook below |
| 608965294 | When Status → Accepted (color_mm599ptd) | Send webhook | Fires vtg-bid-intake Worker to create the Bids #3 item; also sends El Nova accept trigger |
| 615218876 / 615223909 | When "Accept 470" button (button_mkw37e4e) changes | Send webhook (×2) | El Nova integration webhooks registered via API (source: API, app 1573784) — El Nova listens for these to update its own system on accept |
| 617748761 | When file column (file_mkw7hy4z) changes | Send webhook | Fires when a USAC PDF or addendum is uploaded — used by the Opportunity Score extraction Worker (CAM Leads) |
| 490861922 | When "Accept 470" button clicked | Move item to group (Accepted group) | Austin's original El Nova automation — physically moves the lead item to the Accepted group on the board |
| 490862005 | When "Reject 470" button clicked | Move item to Rejected group | Routes rejected leads off the active list — rejected leads do NOT go to Accepted Monitor |
| 493350968 / 493351900 / 493355183 / 493355373 | When addendum file column changes + item is in specific group | Move item to group + notify assigned person | Four automations covering two file columns × two group contexts — notifies the assigned sales person: "New addendum for {District} - 470#: {name}" |
| 566810401 / 566810403 | When item created / When item name changes | AI: extract "470 #" from item name → text_mm2f36c column | monday AI automation — parses the 470# out of the lead item name and writes it to a dedicated text column for downstream useAI |
| ScopeStack webhook (Sep 8) | ScopeStack document_status_changed (status=finished, type=sow) | Download .docx → upload to Bids #3 file_mm6wm4hn or El Nova Leads file_mkw7hy4z | vtg-scopestack-doc-sync · LIVE Sep 8 2026 |
| ID | Trigger | Action | Notes |
|---|---|---|---|
| 482374702 | New item created | Set Bid Creation Date (deal_creation_date) to today | Timestamps every new bid automatically |
| 482374703 | New item created | Set Bid Stage → Folder Creation | All new bids start at stage Folder Creation (index 15) |
| 482374765 | New item created | Create 23 subitems (full bid lifecycle task list) | The backbone of the bid task system — creates all tasks from Folder Creation through Awaiting Results in one shot, each pre-tagged by stage and pre-dated from Bid Due Date |
| 483152942 | New item created | Mirror Bid Due Date to subitem "Bid Due Date Mirror" column | Keeps subitem task due date formula in sync from the parent bid due date |
| 483296416 | New item created | Refresh Bid Name Formula column (formula_mkwrhcw) | Forces the formula "District - 470#: XXXXXXXXX" to populate on creation |
| 482374704 | Stage → Deal Reg | Create linked item on Deal Reg board (18176632827) | Auto-creates the Deal Reg record when stage changes; links back via connect_boards1 relation |
| 482374714 | Stage → Deal Reg | Move item to Deal Reg group | Group = physical location of the item in the board view |
| 482374721 | Stage → Bid Building | Move item to Bid Building group | |
| 482374719 | Stage → Bid Compilation | Move item to Bid Compilation group | |
| 482374720 | Stage → Bid Submittal | Move item to Bid Submittal group | |
| 482374739 | Stage → Awaiting Results | Move item to Awaiting Results group | |
| 482374746 | Stage → Post-Sale | Create 6 Post-Sale subitems + move to Post-Sale group | LOI, CW contract (dead task), FCDL/SPI tasks, PO, SOV update |
| 482374740 | Stage → Post-Monday | Move item to Post-Monday group | |
| 559103546 | Item enters Post-Monday group | Create item on E-Rate Deals board (18406412794) | The active Post-Monday handoff — replaces the inactive 482374713 (Projects #4) and 482374738 (CS/PM notification) |
| 482374717 | Stage → Wins Archive | Post completion update + move to Wins Archive group | Message: "This Bid has been completed and billed in full! Congrats! Bid Creation Date: {date} Bid Close Date: {date}" |
| 482374723 | Stage → Lost | Post update + move to Lost group + rename item | Message: "This Bid was lost. Please update all attached Boards, and fill in final amounts and results." |
| 562741747 | Stage → Post-Sale (status index 12) | Send webhook to vtg-cs-form | One of two vtg-cs-form webhook triggers |
| 483153616 | Stage → Post-Sale (secondary trigger) | Send webhook to vtg-cs-form | Redundant webhook for vtg-cs-form reliability |
| 482374706 | Subitem status → ARCHIVE | Archive the subitem | Manual archive — hides completed/irrelevant tasks from the active subitem view |
| 482374707 | Subitem status → You're Up! | Notify assignee | "You're Up! {task} is due {date} for {bid name}. You're not waiting on anyone." |
| 482374711 | Subitem status → N/A | Clear assignee, due date, and Bid Stage Subitem | Effectively removes the task from the active queue; used for inapplicable BEAR/SPI tasks |
| 482374715 | Subitem due date set + Sales Rep = Jake | Auto-assign Jake to subitem | Watches deal_owner column — assigns Jake (92155649) to his subitems automatically |
| 482374716 | Subitem due date set + Sales Rep = Alan | Auto-assign Alan to subitem | Watches deal_owner column — assigns Alan (92155651) to his subitems automatically |
| 482374722 | Subitem due date = today (noon ET) | Notify subitem assignee | "Task due today: {task} is due {date} for {bid name}" |
| 482374728 / 482374735 / 482374751 | Subitem due date = today (11am ET) + not complete | Set parent status (Jake/Alan/Dylan Subitem Status) → Due Today | Three automations, one per person — highlights bids that need same-day attention on the parent item view |
| 482374745 / 482374748 / 482374755 | Subitem status → Complete + assignee = Dylan/Alan/Jake | Clear parent Subitem Status column (remove Due Today) | Clears the parent highlight once the person's task is done |
| 482374724Inactive | Bid Due Date - 5 days | Notify assigned reps | "Bid due in 5 days: {bid name} is due {date}. Delivery Method: {method}" |
| 482374730Inactive | Subitem due date + 3 days (overdue) | Notify subitem assignee | 3-day overdue task reminder — currently off |
| 482374713Inactive | Item enters Post-Monday group | Create item on Projects #4 + link via connect_boards6 | Replaced by 559103546 (E-Rate Deals creation). Left inactive as reference. |
| 482374738Inactive | Stage → Post-Monday | Notify CS/PM team | "Hello CS and PM, this project now has a PO and is ready for processing." Replaced by E-Rate Deals flow. |
| 7917794784 (workflow) | When Bid Stage status changes to something | Create a subitem | General-purpose workflow used to add subitems on specific stage transitions beyond the initial 23-task creation |
| 7917866595 (workflow) | When subitem column changes | Change parent item Bid Stage column to match | Keeps parent Bid Stage in sync when a subitem's Bid Stage Subitem column is manually changed |
| 566854668 / 566856009 / 566856718 (integrations) | Blueprint column → Wireless/Fiber Optic/BMIC | Overwrite item with matching item template | Three project-type templates applied when Blueprint is set on Bids #3 itemsApp |
| 545905802 / 545905803 (AI) | New item created / Item name changes | AI: extract "470#:" from item name → text_mkqz3hww | monday AI extraction automationAI |
| 578063979 / 578063986 (AI) | Item created (if Project Year empty) / text_mkqz3hww changes | AI: categorize into Project Year dropdown (dropdown_mkqz1ay) | Sets Project Year dropdown by AI-categorizing the 470# text columnAI |
| 591750313 | Stage → Ready for Invoicing (lead_status index 3) | Send webhook to vtg-billing-ready | Triggers billing notification email to eratebilling@vtgus.com |
| 628087115 | NS Sales Order # column (text_mm6hv20b) changes | Send webhook to vtg-po-sync | Live Aug 25 2026 — triggers PO sync back from NetSuite |
| Generate SOW button (Sep 8) | Generate SOW button (button_mm70vvrb) clicked on Bids #3 item | Send webhook to vtg-scopestack-doc-sync /generate endpoint | Triggers programmatic SOW generation in ScopeStack; webhook auto-delivers the .docx back to Bids #3 SOW Document column (file_mm6wm4hn) |
| ID | Trigger | Action | Notes |
|---|---|---|---|
| 482368826 | New item created | Set Project Stage → New (index 6) | All new Projects #4 items start at New stage automatically |
| 482368825 | Stage → Kick Off | Move to Kick Off group | |
| 482368827 | Stage → All Products Received | Move to All Products Received group | |
| 482368829 | Stage → Pre-Install Staging (index 7) | Move to Construction Hold / Phased Install group | Group is "Construction Hold or Phased install" — covers hold and staging scenarios |
| 482368831 | Stage → Pre-Install Staging (index 11) | Move to Equipment Only group | Equipment-only projects route to the Equipment Only group on pre-install staging |
| 482368832 | Stage → Installing (index 8) | Move to Installing group | |
| 482368830 | Stage → Closeout (index 9) | Move to Closeout group | |
| 482368834 | Stage → Ready for Invoicing (index 3) | Move to Ready for Invoicing group | |
| 482368833 | Stage → Closed (index 4) | Move to Closed group | |
| 482368828Error | Stage → Waiting for Product | Move to Waiting for Product group | Error: "missing_group" — target group no longer exists. Group was likely deleted or renamed. |
| 591750313 (Projects webhook) | Stage → Ready for Invoicing | Send webhook to vtg-billing-ready | Fires billing notification email to eratebilling@vtgus.com via vtg-billing-ready Worker |
| 628087115 (Projects PO webhook) | NS Sales Order # column (text_mm6hv20b) changes | Send webhook to vtg-po-sync | Live Aug 25 2026 — fires vtg-po-sync when SO# is manually entered or backfilled |
| 545905802 / 545905803 (AI) | New item created / Item name changes | AI: extract "470#" from item name → text_mkqz3hww | AI extracts 470# for reporting and linkingAI |
| 545919569 / 545919570Error | New item / name change | AI: extract Company → lead_company column | Error: "The chosen column no longer exists." Column was deleted; automations broken.AI |
| 578063979 / 578063986 (AI) | Item created (if Project Year empty) / text changes | AI: categorize into Project Year dropdown | Sets dropdown_mkqz1ay (Project Year) by AI categorization of the 470# textAI |
| 566854668 / 566856009 / 566856718 (integrations) | Blueprint column (color_mm2frt9j) → Wireless / Fiber Optic / BMIC | Overwrite item with matching item template | Three blueprint templates: "Wireless deployment - VectorFi - Wired", "Fiber Optic Cabling", "BMIC"App |
| 7917221940 (workflow) | Stage → Accept (index 6) | Move item to Construction Hold / Phased Install group | |
| 7917971701 (workflow) Inactive | Subitem status → Done (from anything) | Move parent item to Ready for Invoicing group | An older subitem-driven billing trigger — now superseded by vtg-materials-log stage advancement |
| 7917999463 (workflow) | Stage → Ready for Invoicing | Notify Accounting team | "This project is complete and ready to bill in full" — notifies the Accounting team (team ID 1424500) in monday.com |
| 7918015674 (workflow) | Blueprint column changes + contains BMIC | Create subitem assigned to Engineer team | "Insert the first row here" + "This might be a spot for the task" — a partially-configured placeholder; may need refinement |
| 7918629648 (workflow) | Stage → Equipment Only (index 11) | Move to Equipment Only group | |
| 7918731761 (workflow) | Blueprint column changes + Blueprint = Equipment Only (label 8) | Move to Equipment Only group | Routes equipment-only projects to the correct group when Blueprint is selected |
| 7920172789 (workflow) | Stage → Ready for Invoicing | Set Actual Revenue Month (date_mm4tatyy) = today | Stamps the revenue date for Forecast vs. Actual dashboard |
| 7920172818 (workflow) | Stage → Closed | Set Actual Revenue Month (date_mm4tatyy) = today | Also stamps revenue date on Closed — covers projects that skip Ready for Invoicing |
| 7920230690 (workflow) | Stage → Closed | Notify Branden Sumerix + Dylan Lindhout | "Performance Bond Complete — notify the bonding company that this project is complete." |
| 7920569056 (workflow) | Stage → Ready for Invoicing | Set Ready for Invoicing Date (date_mm54qwps) = today | Timestamps the Ready for Invoicing date for billing SLA tracking |
| 7922447604 (workflow) | Stage → Installing | Set Materials Log link column (link_mm6mhdcx) = vtg-materials-log URL for this item | Live Aug 27 2026 — auto-populates the PM's one-click link to the materials log tool |
| backfill (Sep 3) | One-time | Populate new 📊 SOV Builder column (link_mm6vbks) for all 156 existing bids | Manual backfill completed Sep 3 2026; vtg-bid-intake now stamps both link_mm6vbks and link_mm591mdg on new bid creation going forward |
config/tools.json. Admin is currently password-gated; Azure AD SSO is planned.