# Constructable > Constructable is an AI-native construction management platform for commercial general contractors, covering preconstruction, project management, field management, and financial management in one connected product. It is a modern alternative to Procore and Autodesk Construction Cloud, with flat monthly pricing and unlimited users. Drawing workflows are available on desktop web, mobile web, and the native app, including Split View, overlays, bulk actions, recording, PDF exports, and offline viewing. This file contains the full text of Constructable's product pages, customer stories, API and MCP documentation, and help center. An index of all pages is at https://constructable.ai/llms.txt --- # Constructable > AI-native, all-in-one construction management software for general contractors and subcontractors, with flat monthly pricing, unlimited users, and free data migration. Source: https://constructable.ai Constructable is all-in-one construction management software for small-to-mid sized general contractors and subcontractors, covering the project lifecycle from bidding to closeout. It is positioned as a more modern replacement for Procore or Autodesk Construction Cloud, with simplified workflows, AI tools built in, and predictable monthly pricing. ## Why teams switch - **Fast, full, free data migration**: up and running in days, not months. Average onboarding time is under 21 days, and there are no extra fees for onboarding or data migration. - **Ease of use**: customers say it is easy to learn and use; the team does user research and jobsite ride-alongs. - **AI tools that reduce effort**: eliminate tedious manual work. - **Flat pricing**: a flat fee per plan, billed monthly or annually. Not priced by Annual Construction Volume (ACV), no audits of your books, no overage fees. - **Unlimited users**: your team, owners, consultants, subcontractors, and vendors at no extra cost. ## Highlighted capabilities - **Split View drawing viewer**: open a sheet detail next to the sheet you are on. See [field management](https://constructable.ai/features/field-management). - **Bulk invoice import**: auto-import a whole stack of invoices at once, with no double entry. See [financial management](https://constructable.ai/features/financial-management). - **Submittal pre-check**: automatically check submittal documents against specs. See [project management](https://constructable.ai/features/project-management). - **ChatGPT and Claude integrations**: full read and write integrations through a Constructable ChatGPT plugin and a Constructable Claude connector. - **Markup, commenting, and measurement on plans** (Bluebeam Sessions-style), stored in the cloud, with access control and resolve/archive. - **Financials**: budgeting, change orders, Schedules of Values, and invoicing across the project lifecycle. - **Built-in eSignatures**: included in the subscription, so a separate DocuSign account is not needed. - **Mobile apps** for iPhone and Android ([download](https://constructable.ai/download)). ## Accounting integrations Two-way syncing integrations with accounting ERPs. The page shows Intuit QuickBooks, Sage, Deltek ComputerEase, and Acumatica. The FAQ names full two-way sync with QuickBooks Online and Sage Intacct, and says more are in progress. Missing one you need? [Contact us](https://constructable.ai/contact). ## Customers and backing Customers shown include Holladay Construction Group, Abbott|Reed Builders, JDL Construction, Elevated Companies, Premium West Construction, Clear Construction, RLH Fire Protection, Stocker Associates, MLGP, TriStone Group, Premium Concrete, White Builders, and Brough Construction. See [customer stories](https://constructable.ai/customer-stories). Switching from Procore? See the [Procore alternative page](https://constructable.ai/procore-alternative). Constructable is backed by Y Combinator, Khosla Ventures, and Waybury Capital. ## Get started Book a demo at https://constructable.ai/sales. Pricing is at https://constructable.ai/pricing. --- # Preconstruction > Constructable's preconstruction tools: bid management with scoped bid packages and bidder tracking, on-drawing takeoffs with unit costs, and a centralized contact directory. Source: https://constructable.ai/features/preconstruction Constructable's preconstruction tools help contractors win more work with better bids. Bid packages are organized, scopes are clearly defined, and takeoffs are measured directly on the drawings. ## Why use Constructable for preconstruction - **Organized bid packages**: clear scopes, instructions, and deadlines keep subs aligned and bids coming in. - **Clear communication**: distribute bids, track responses, and manage contacts in one place. - **Accurate takeoffs**: measure quantities directly on drawings, with unit tracking. ## Bid management - **Bidder landing page**: bidders say whether they intend to bid, view or download the drawings and documents, and submit bid amounts per scope directly. The page also shows contacts, the due date, the project description, and bidding instructions. - **Correspondence log**: tracks every email sent to bidders, with delivery status (delivered, opened, bounced), so you always know who received what. - **Distribution tracking**: see who is bidding, who declined, and who still needs follow-up, across multiple packages. Bulk actions include emailing bidders, sending reminders, and updating statuses. - **Scopes**: add multiple scopes to one bid package without uploading separate documents for each, and receive a separate bid amount for each scope. - **Reminders**: remind one bidder or all bidders at once. - **Email bids**: forward bids received by email to bids@constructable.ai and each bidder's status updates automatically. - **Bid lists**: tag bidders to categorize them and re-add them on your next job. ## Takeoffs - Measure on drawings with linear feet, area, or quantity markers. - Organize takeoff items by category, each with its own color. - Apply unit costs and multipliers for instant pricing, and export takeoff data with one click. - Multiple team members can work on the same sheet, takeoff set, or item in real time. ## Directory management - A central directory of subcontractors, consultants, and owners - Contact history that logs every invitation, bid, and response - Permissions so people see only the information meant for them - Automatic detection of duplicate contacts in the global directory ## Customer quote "Managing bid scopes is so easy and we've gotten more accurate bids as a result." (Scott Merson, Preconstruction Manager, Abbott|Reed Builders) ## Get started Book a demo at https://constructable.ai/sales. --- # Project management > Constructable's project management tools: RFIs on drawings, multi-stage submittals with AI pre-check, specs, documents, bundled notifications, meetings, inspections, and closeout. Source: https://constructable.ai/features/project-management Constructable's project management tools keep RFIs, submittals, documents, and project communication in one place, so nothing is buried in email or lost in paperwork. ## Why manage projects with Constructable - One platform for owners, subs, and consultants - Multi-stage submittal workflows with clear ball-in-court - One AI-searchable hub for project communication, documents, and specs - Markups and comments carry straight into RFIs ## RFIs - Create RFIs directly on drawings by placing a pin, naming it, and opening it for responses. No screenshots needed. - Track responses and due dates, with full audit trails. - Ball-in-court visibility shows who is accountable. ## Submittals - Multi-stage workflows with due dates and role assignments - Status tracking that shows who owes the next response, plus a central submittal log updated in real time - Revision control that keeps the latest package front and center - Automated approval sequencing that picks the right approvers - **Submittal Pre-Check**: compares product data sheets to your project specs line by line and highlights the matching text, so you can catch issues before sending to consultants. ## Specs, documents, and drawings - Specs are organized automatically by CSI MasterFormat division and section. You can import existing spec books with revision tracking and link submittals to spec sections. - Documents: drag-and-drop files and folders with per-folder sharing permissions (similar to SharePoint or Google Drive). Search covers titles, items, and file contents, with both keyword and AI semantic search and OCR on every document. - Drawings: version control with full history, Split View for comparing any two sheets (with a lock option), and Blend Modes for overlaying sheets. - Every feature keeps an audit trail of changes. ## Notifications, meetings, and more - **Smart notifications**: project notifications are bundled into a single email, with links straight to the item. Preferences can be set by project, item type, or individual item. - **Meetings**: agendas with sections, items, and sub-items. Schedule and run meetings with real-time notes. Smart sections pull in the latest open RFIs and submittals automatically. - **Inspections**: create, schedule, and run safety, QA, and QC checks, with quick data capture in the field. - **Lien waivers**: create, send, track, and eSign all four types. You can also upload a signed PDF and send one-click reminders. - **One-click closeouts**: choose data types and generate a full closeout package as a single .zip file. ## Customer quote "The tools are so user friendly that our team and our trade partners were up and running in no time." (Jordyn Nelson Fox, Project Manager, Holladay Construction Group) ## Get started Book a demo at https://constructable.ai/sales. --- # Field management > Constructable's offline-first field tools: daily logs with automatic weather, mobile drawings with real-time markups, AI-searchable photos, and punch lists with AI autofill. Source: https://constructable.ai/features/field-management Constructable's field tools connect daily logs, drawings, photos, and punch lists between the field and the office, so work is captured once and shared everywhere. ## Why use Constructable in the field - **Field and office stay in sync**: notes and markups live in the plans. Share them broadly or keep them to a small group. - **Easy, accurate data capture**: log notes, photos, videos, and more, with the whole team kept up to date. - **Offline-first**: work is stored on the device when there is no internet and syncs automatically once back online. - **Role-based permissions**: external crews see exactly what they need. - **Quick onboarding**: teams are up and running in days, not months. The product is designed around how supers, PMs, and subs already work. ## Daily logs - Track crews, equipment, employee hours, and project progress. - Weather is captured automatically every hour from the project zip code. - Record delays and their causes: weather, permitting, owner directives, material delays, or waiting on RFIs or submittals. - Structured data helps with billing and resolving disputes, and daily logs are searchable. ## Drawings - Real-time markups: draw, measure, and annotate together. - A mobile-optimized viewer that loads sheets quickly on phones and tablets, with sheets fully available offline. - Revision management: the latest revision shows by default, past versions are easy to reach, and users are notified when new drawings are published. ## Photos - Take or upload photos and tie them to logs, drawings, comments, or punch items. - Albums keep timestamps, comments, and embedded metadata. Date, time, and location are captured automatically. - AI search across the whole project: photos are tagged automatically, so you can find them by describing what you are looking for. - Share through permissions, export selected photos to PDF, or create shareable albums. ## Punch lists - Create, assign, and track deficiencies with photos, with an approval workflow for due dates and progress. - Pin punch items directly on drawings. - **AI punch lists**: dictate a deficiency, autofill every field with one click, and assignees receive structured, accurate items. ## Other details - Unlimited storage, with no file size limits. - Drawing workflows are available on desktop web, mobile web, and the native app, including Split View, overlays, bulk actions, recording, PDF exports, and offline viewing. ## Customer quote "Constructable's offline-first approach is a game changer for us." (Steve Behnke, Superintendent, Abbott|Reed) ## Get started Book a demo at https://constructable.ai/sales. --- # Financial management > Constructable's financial tools: live budgets, commitments, change orders with built-in eSignature, subcontractor invoicing and retention, lien waivers, and QuickBooks Online and Sage Intacct sync. Source: https://constructable.ai/features/financial-management Constructable's financial management keeps projects profitable with real-time budget visibility and automated processes. It covers commitments, owner contracts, change orders, and invoicing in connected workflows. ## Why use Constructable for financials - **Integrated workflows**: commitments, change orders, and invoices flow together with your accounting system. - **Real-time visibility**: budgets update live as work is billed and approved, and whenever change events or new commitments are created. - **Automated processes**: retention, approvals, and syncing happen in the background. ## Commitments - Manage prime contracts and owner invoicing. - Create subcontractor or vendor commitments and purchase orders, with scopes of work, costs, and retention. - Invoices and change orders link to commitments automatically, and statuses and approvals are tracked. ## Change orders and contracts - Change orders with line items, cost codes, and schedule impacts. - Built-in eSignature with status tracking; no outside tools or integrations required. - Commitments and budgets update when a change order is executed. - A full audit trail of who signed and when, with completed documents stored in the cloud. ## Budgeting - Budget vs. actual reporting in real time, with forecast-to-complete overrides. - Track modifications and forecast over/under. - Build budgets with cost codes and line items, then lock them for accountability. - Log receipts as direct costs by snapping a photo on a phone. - A dedicated "Non-Committed Costs" report tracks general conditions and indirect costs against the budget. ## Billing - You set the billing period and due date. Subcontractors log in and submit invoices against the correct Schedule of Values (SOV) line items. - Retention is set per commitment, can be adjusted by line item, and is calculated and released automatically. - Full two-way sync with QuickBooks Online and Sage Intacct for accounting and payment processing. - A full-screen editor for long owner invoices. ## Lien waivers Create, send, track, and eSign all four types of lien waivers. You can also upload an already-signed PDF and send one-click email reminders. ## Customer quote "With Constructable, I can easily see the full financial picture of each project, making it quicker to tie out my books at month-end." (Stacey Tourdot, Senior Staff Accountant, Abbott|Reed) ## Get started Book a demo at https://constructable.ai/sales. --- # AI workflows and tools > Constructable's AI and productivity tools: a source-linked AI Answer Engine, automatic drawing scale detection, AI punch lists, Magic Extractor, Split View, Blend Modes, and Dark Mode. Source: https://constructable.ai/features/ai-workflows Constructable combines user-centered design with AI to make construction work faster and easier. All AI features are included in every plan at no extra cost. ## AI Answer Engine - Ask a question about your project and get an answer right away. Documents, drawing details, log entries, paint colors, and even untagged photos are searchable. - Search by keyword or ask project-specific questions. - Answers always link to the primary source in your project (document, drawing, log, or photo) so you can check them. - Responses are grounded in your project data. If Constructable can't find an answer, it says so instead of guessing. ## Drawing tools - **Automatic scale detection** (new AI feature): Constructable detects and applies the correct scale for each drawing, so you can start measuring without calibrating. - **Split View**: click a sheet detail to open it side by side. Lock, sync, and resize any two sheets or revisions. An offset lock keeps the two views moving together while preserving differences in position or zoom. - **Blend Modes**: overlay two sheets or revisions in one of three modes. - Differences: colors the two sheets red and blue, with a blend slider. - Ghost: shows the second sheet faintly over the first, with an opacity slider. - Highlight: shows changed areas in white and unchanged areas in black. - **Magic Extractor**: drag a box around a table or text on a drawing and AI extracts it with formatting preserved, ready to paste into a spreadsheet or document. - **Screen recording on drawings**: attach screen recordings, with voice-over and mouse movement, to comments pinned on drawings. ## AI punch lists Dictate a deficiency and click "autofill from description". Constructable fills in the assignee, trade, location, and other fields using the project's context, so assignees get structured, accurate items. ## Dark Mode A customer favorite. Toggle it from the main menu to reduce eye strain in low light. ## Customer quote "I can't go back to our old software." (Ryan Adams, Operations Manager, Abbott|Reed) ## Get started Book a demo at https://constructable.ai/sales. --- # Pricing > Constructable's flat-rate plans, billed monthly: unlimited users, collaborators, and projects, plus free migration, onboarding, training, and support. Source: https://constructable.ai/pricing ## Plans Flat rate, billed monthly. Every plan includes unlimited users, collaborators, projects, support, and onboarding. - **Field Management**: $850/month - **Field and Project Management**: $2,000/month - **Field, Project, and Financial Management**: $3,500/month | Feature | Field Management | Field and Project Management | Field, Project, and Financial Management | | --- | --- | --- | --- | | Drawings and Collaboration | Yes | Yes | Yes | | Photos and Documents | Yes | Yes | Yes | | Punch List and Daily Logs | Yes | Yes | Yes | | Bid Management | — | Yes | Yes | | Takeoffs | — | Yes | Yes | | RFIs and Submittals | — | Yes | Yes | | Change Orders and Contracts | — | — | Yes | | Budgeting and Financials | — | — | Yes | Smaller teams can [contact us](https://constructable.ai/contact) for small team pricing. Constructable sells flat-rate plans billed monthly. There are three packages that build on each other: Field Management, Field and Project Management, and Field, Project, and Financial Management. ## Included in every plan - Unlimited users and collaborators - Unlimited projects - Support and onboarding - Pricing is not based on Annual Construction Volume (ACV) - No hidden fees - Small teams can [contact us](https://constructable.ai/contact) for small-team pricing ## Services - **Free data migration and onboarding**: Constructable handles data migration, archiving, and onboarding, and helps with change management. - **Unlimited training**: calls, screen shares, or walkthroughs for as long as your team needs them, from the first login onward. - **Direct support**: no ticket queues or outsourced call centers. You reach the team by chat, email, or phone, and the people who built the product are the ones who help you. ## Pricing calculator ("Build more. Keep more.") The page includes an interactive calculator that compares an estimated annual Constructable cost with an estimated annual Procore subscription. - **Inputs**: anticipated Annual Construction Volume (a slider from $1M to $250M) and the capabilities your team needs. Field essentials are always included. You can add RFIs & submittals, Bids, Takeoffs, Budgets & contracts, and Invoicing. - **Constructable estimate**: the lowest listed plan that covers the selected features, annualized from its monthly price. Field essentials alone map to Field Management. RFIs & submittals, Bids, or Takeoffs require Field and Project Management. Budgets & contracts or Invoicing require the full financial plan. - **Small teams**: below $20M in annual volume, small-team pricing scales linearly from $5,000/year at $0 volume up to the listed plan price at $20M. - **Procore estimate**: a volume-discount curve informed by public quotes and customer reports. Each added capability raises the estimate by an illustrative percentage, and the page shows a ±30% range around it. - **Output**: annual costs for both products at the chosen volume, plus a chart of annual software cost against construction volume. - **Caveats stated on the page**: the figures are illustrative USD annual subscription estimates. Procore amounts are not quotes or actual prices, and the feature adjustments and range are assumptions, not published Procore rates. One-time services, taxes, and negotiated discounts are excluded. ## Customer quote "Constructable is like Goldilocks, not too much, not too little." (Scott Holman, RLH Fire Protection) ## Get started Book a demo at https://constructable.ai/sales. --- # Procore alternative > How Constructable compares with Procore for mid-size commercial general contractors on pricing, packaging, migration, AI pricing, and user access, and how to plan a switch. Source: https://constructable.ai/procore-alternative Constructable presents itself as an easier-to-use Procore alternative with better pricing for mid-size commercial general contractors. It brings drawings, RFIs, submittals, field reports, and financials together for a predictable monthly price, and includes white-glove data migration and onboarding. ## Constructable vs. Procore at a glance - **Pricing basis** - Constructable: published flat-rate packages billed monthly. Not based on annual construction volume. - Procore: you have to contact sales. Custom annual rates depend on the modules you select and your annual construction volume. - **Product selection** - Constructable: three packages: Field; Project & Field; or Financial, Project & Field. - Procore: you have to contact sales, choose a plan and extra product modules, and settle the scope and cost of migration and onboarding. - **Migration, onboarding, and training** - Constructable: included at no extra cost. White-glove data migration, team onboarding, and unlimited training and support. - Procore: you have to contact sales. Migration and onboarding typically cost an extra $5,000 to $30,000 or more. - **AI feature pricing** - Constructable: included at no extra cost, with unlimited AI usage across all projects. Available functionality depends on your package. - Procore: you have to contact sales. AI features are paid add-ons with a minimum 6-month commitment, and project limits or usage-based billing apply. - **User access**: both include unlimited users. The page says it checked these descriptions on September 18, 2026 against Constructable's packages and Procore's published pricing information, and advises confirming scope and terms in your quote. It says Constructable is worth evaluating if you want connected field and office workflows with predictable plan pricing, and that Procore may fit teams whose processes already rely on its ecosystem. The comparison is published by Constructable, which is not affiliated with or endorsed by Procore. ## Pricing calculator The page embeds the same calculator as the [pricing page](https://constructable.ai/pricing). It compares an estimated annual Constructable cost with an estimated Procore subscription, based on annual construction volume and the features you select. The Procore figures are estimates, not quotes. ## Switching stories - **Holladay Construction Group** moved to Constructable after 8 years on its previous platform. It wanted software that fit its size and scale and cost less. It began planning 90 days before its renewal. [Story](https://constructable.ai/customer-stories/holladay-construction-group) - **Clear Group** reports better financial visibility and faster Sage Intacct setup since moving from Procore, with migration support for its design-build team. [Story](https://constructable.ai/customer-stories/clear-group) ## Plan your move before renewal 1. **Review your workflows.** Bring your field, project, and accounting requirements to a demo, and confirm the tools and integrations you need. 2. **Agree on the migration scope.** Review active projects, historical records, exports, and permissions with the Constructable team. 3. **Train and roll out.** Set up your team, test everyday workflows, and schedule launch around active work and renewal dates. ## FAQ highlights - **Coverage**: drawings, RFIs, submittals, daily logs, punch lists, and financial management, depending on plan. Feature coverage differs between the platforms, so bring your required workflows to a demo. - **Data migration from Procore**: full migration support at no extra cost, with scope and timing agreed before launch. - **Accounting**: two-way sync with QuickBooks Online and Sage Intacct, with more in progress. - **eSignatures**: built in and included with the plan that has financials. - **Mobile**: official apps for iOS (iPhone and iPad) and Android. ## Get started Book a demo at https://constructable.ai/sales. --- # Constructable vs. Autodesk Construction Cloud > Why Constructable is a cheaper, easier-to-use alternative to Autodesk Construction Cloud: flat pricing, unlimited users, AI search, drawing tools, and free migration. Source: https://constructable.ai/compare/autodesk Constructable positions itself as a cheaper, easier-to-use alternative to Autodesk Construction Cloud, with the construction management features you need (and nothing you don't) at a predictable monthly price. ## What's the same Both products cover the standard construction management features: drawing management, RFIs, submittals, daily logs, photo and document management, punch lists, financials, and more. ## Where Constructable differs The page's comparison table marks each of these as offered by Constructable and not by Autodesk Construction Cloud: - **Clear, transparent pricing** that is not based on your Annual Construction Volume (ACV) - **Unlimited users**, with no per-user seats or licenses - **Very fast performance**, even with many attachments - **AI search across drawings, documents, and photos**, not just specs - **An easy-to-learn, user-friendly design** with simple workflows - **24/7 human support**, with no support tickets required - **Bundled notifications**, so inboxes don't get clogged - **Multiple overlay modes for any two drawing sheets**, including revisions - **Magic Extractor**, which copies table data and text from drawings - **Split View for drawings**, to view two sheets at the same time - **Full Dark Mode** on desktop, tablet, and mobile ## Pricing and switching - A predictable flat price billed monthly, with no per-seat licensing, ACV-based pricing, extra modules, or usage credits/tokens. The FAQ says unlimited users, unlimited projects, and unlimited support and training are included, and that Constructable will not audit your books or charge overage fees. See https://constructable.ai/pricing. - Full data migration from Autodesk Construction Cloud at no extra cost, including archiving and onboarding. Average onboarding time is under 21 days. - Unlimited training, plus direct support by chat, email, or phone from the team that built the product. - **Customer story**: Holladay Construction Group switched to Constructable after 8 years on its previous platform, looking for a better fit for its size and scale at lower cost. ## Other FAQ points - Built on modern technology for fast performance, even on poor networks. - Two-way sync integrations with QuickBooks Online and Sage Intacct, with more in progress. - Built-in eSignatures, included with the plan that has financials. - Official iOS (iPhone and iPad) and Android apps. ## Get started Book a demo at https://constructable.ai/sales. --- # About Constructable > Constructable's story, mission, and values. Founded in 2023 by three friends with software backgrounds and family ties to construction, to build simpler, smarter, affordable construction software. Source: https://constructable.ai/about ## Our story Constructable (Constructable.ai) was started in 2023 by three friends with deep roots in software and family ties to construction. - **Molly** grew up around job sites, watching her dad, husband, and many family members struggle with problems that shouldn't exist. - **John** and **Emma** spent years leading product and engineering teams and building large-scale platforms for the real estate industry. Again and again, they saw builders struggling with software that was supposed to help but left them frustrated, stuck, and paying too much for too little. So they set out to build something different. ## What we do Constructable brings everything that runs a construction project into one streamlined platform, replacing scattered PDFs, emails, and screenshots. Instead of bloated, expensive systems, the company focuses on software that is: - **Simple enough** that teams actually use it - **Smart enough** to keep projects moving without repetitive work - **Affordable enough** that it pays for itself It combines thoughtful design, modern technology, and AI built for the realities of construction to make projects run more smoothly, safely, and enjoyably. ## Why we care Construction is one of the hardest and most essential industries. It is where communities take shape, families find homes, and cities grow. The founders have seen firsthand the stress builders carry when technology doesn't serve them. ## What we believe - **Software should get out of the way** and let builders build. - **The long game**: Constructable isn't chasing a quick exit. It is building the company its team wants to work at for the rest of their careers. - **Builders**: construction professionals are some of the smartest, most grounded people around, and with the right tools they can change the game. - **Partnership**: the team talks to customers constantly, because they are the ones in the field every day. - **Thoughtful technology**: software should reduce stress, and make work safer, faster, and more collaborative. The page includes photos of the team at trade shows, visiting customer job sites, and at Y Combinator headquarters. --- # How Holladay Construction Group switched from Procore > After eight years on its previous platform, Holladay moved its 40-person team to Constructable before renewal, with no downtime reported. Source: https://constructable.ai/customer-stories/holladay-construction-group > "By the time our renewal date was up, we were already active on Constructable and our team had been using it." — Scott Trueblood, President and CEO, Holladay Construction Group ## A growing, employee-owned general contractor Holladay Construction Group is a 100% employee-owned general contractor working across hospitality, multifamily, and public works. At the time of its customer story, the company described 20 years of growth from $10 million to $120 million in annual construction volume, with more than 40 employees. ## Why the team evaluated a replacement After eight years on its previous construction platform, Holladay reported rising annual costs and limited support. Leadership had to balance the disruption of moving 40 users against the cost of staying. Transparent pricing, an intuitive interface, and responsive support drew the team to Constructable. ## Starting before the renewal deadline Holladay began the switch 90 days before renewal. Constructable handled setup and training for project managers, superintendents, and preconstruction staff. The team was already working in Constructable before its previous contract expired and reported completing the transition with no downtime. ## What changed after the switch Holladay reported no complaints across its 40-person team, lower software costs, and better collaboration among project managers, superintendents, subcontractors, and owners. Owners and trade partners also gave positive feedback. These are Holladay’s reported results, rather than a promised outcome for every team. ## What other contractors can learn Start reviewing your options ahead of renewal. Give each role time to try the workflows they use every day, and agree on setup and training before launch. Holladay’s 90-day lead time was its planning window, not a standard implementation duration. Video: https://www.youtube.com/watch?v=W0b1oPgQG3U --- # Why Clear Group moved from Procore to Constructable > Clear Group shares how switching to Constructable improved Sage Intacct connectivity, financial visibility, and adoption across its design-build team. Source: https://constructable.ai/customer-stories/clear-group > "What impressed me about Constructable was how much time and attention they gave to the transition, and how they made it easy." — Bailey Hochhalter, President, Clear Group ## Design, construction, and millwork under one roof Clear Group brings Clear Architecture, Clear Construction, and Clear Millwork together in a vertically integrated design-build firm. Its customer story describes primarily residential work, from $500,000 remodels to $10 million new construction projects. ## The limits of the previous setup Clear Group had invested years in Procore, but reported that its Sage Intacct integration restricted access to important financial data. Pricing complexity, slow improvements, and unresolved support issues prompted the team to look for another platform. This reflects Clear Group’s experience with its own setup. ## Moving the team and connecting accounting Constructable supported migration and onboarding while bringing Sage Intacct connections online. Clear Group reported that key accounting connections were ready much faster than in its previous implementation. Employees who were initially reluctant to switch adopted the interface, alongside outside project partners. ## Financial visibility and field adoption Project managers gained deeper access to financial data, including links to Sage Intacct source records. Superintendents embraced Daily Logs and Punch Lists on mobile. Bailey reported being pulled into fewer unresolved software issues, while the team explored Constructable’s AI tools and connections with ChatGPT and Claude. ## What other teams can learn Test the accounting workflows that matter to your business during evaluation. Include project managers, accounting staff, and field teams in onboarding, and ask how your existing information will move. Clear Group’s story shows why the implementation relationship matters alongside the feature list. Video: https://youtu.be/Q06xaumUHZc --- # Overview > The Constructable API is a GraphQL API for project, organization, and financial data. Integrations use organization API OAuth. Assistants use MCP. Source: https://constructable.ai/api-docs/overview Constructable exposes a GraphQL API at `https://api.constructable.ai/graphql`. The same schema powers the Constructable web and native apps, the in-product Agent, and the [Model Context Protocol (MCP)](https://constructable.ai/api-docs/mcp) server. Read and write project records through GraphQL. File bytes are uploaded directly to object storage with a GraphQL-issued signed URL. ## Base URLs | Environment | API origin | GraphQL | MCP | | ----------------- | ------------------------------ | --------------- | ---------------------------------- | | Production | `https://api.constructable.ai` | `POST /graphql` | `https://api.constructable.ai/mcp` | | Local development | Your Rails API origin | `POST /graphql` | `/mcp` on the same origin | Sign-in and a few account routes live under `/api` on that origin, for example `POST https://api.constructable.ai/api/users/sign_in`. GraphQL is **not** under `/api`; it is `POST https://api.constructable.ai/graphql`. OAuth lives on the API origin as well: `/oauth/authorize`, `/oauth/token`, `/oauth/revoke`. ## What you can do - **Query** organization and project records: RFIs, submittals, drawings, commitments, invoices, daily logs, and the rest of the product model. Start from `organization(id:)` and nest into `project(id:)`. - **Mutate** those records through nested mutation fields: `organization(id:) { project(id:) { createDraftRfi(input: ...) } }`. - **Search** project content with `organization.project.search`. - **Upload files** with `createFileUpload`, then attach the returned `signedId` on a later mutation. - **Connect an integration** with an organization API OAuth client and call GraphQL directly. See [Authentication](https://constructable.ai/api-docs/authentication). - **Connect an assistant** through [MCP](https://constructable.ai/api-docs/mcp) without embedding a session token in the client. The generated [GraphQL reference](https://constructable.ai/api-docs/reference) lists every type, field, and mutation in the schema. ## Choose an access path Use **organization API OAuth** when another system should call GraphQL without collecting Constructable passwords. An organization admin creates a confidential client in Organization Settings. The user signs in on Constructable, consents, and your integration receives an `api`-scoped access token. See [Authentication](https://constructable.ai/api-docs/authentication). Use **GraphQL with a session token** when you are calling the API as a specific Constructable user from a backend you control. Create the token with email and password (and OTP when enabled), then send it as `Authorization: Bearer`. Use **MCP** when an assistant should act as a user. MCP discovers the authorization server, completes OAuth with the `mcp` scope, and then runs GraphQL through tools. See [MCP](https://constructable.ai/api-docs/mcp). `api` and `mcp` tokens are not interchangeable. An API access token calls `/graphql`. An MCP access token calls `/mcp`. All three paths enforce the same product permissions. A token cannot see or change more than the authorizing user's role allows. ## Identifiers Record ids are UUID values, typically UUID version 7. Create mutations often accept a client-generated `id` so you can choose the id before the request. If you omit it, the server generates one. Organization and project ids are required on almost every operation. Do not substitute a project number, slug, or name. Load ids from `viewer`, `organization`, or `organization.projects`. ## Stability This API is the same schema the product uses. Fields and mutations can be added as Constructable ships features. Treat undocumented internal fields as unavailable, and prefer the types and operations in this reference. When a mutation is omitted from the public schema, it is not part of the API. ## Next steps 1. [Authenticate](https://constructable.ai/api-docs/authentication) with organization API OAuth, or obtain an organization-scoped session token. 2. Run the [GraphQL](https://constructable.ai/api-docs/graphql) getting-started query against `viewer` and `organization`. 3. Page through lists with [Relay connections](https://constructable.ai/api-docs/pagination). 4. Work a full example in [Examples](https://constructable.ai/api-docs/examples). 5. Look up types in the [reference](https://constructable.ai/api-docs/reference). --- # Authentication > GraphQL accepts a Bearer token from an organization API OAuth client or from sign-in. MCP uses a separate mcp-scoped OAuth token. Source: https://constructable.ai/api-docs/authentication Every GraphQL request requires an `Authorization` header: ``` Authorization: Bearer ``` Requests without a valid token receive `401 Unauthorized` and a `WWW-Authenticate` challenge that points at the GraphQL protected-resource metadata. ## Organization API OAuth External integrations should not collect Constructable passwords. Create a confidential API client in **Organization Settings → API Access**, then run authorization code with PKCE against the same authorization server MCP uses, requesting the `api` scope. An organization **admin** creates the client (`organization_settings.write`). Constructable shows the client secret once. Store it in your integration. Revoke the client to invalidate tokens immediately. The authorizing user must belong to the organization that owns the client. After consent, the access token acts as that user **in that organization only**. It cannot query another organization, even if the user has other memberships. Product permissions still apply. Membership is checked again on every GraphQL request. | Well-known document | URL | | -------------------- | --------------------------------------------------------------------------- | | Authorization server | `https://api.constructable.ai/.well-known/oauth-authorization-server` | | Protected resource | `https://api.constructable.ai/.well-known/oauth-protected-resource/graphql` | Supported values: - **Scope:** `api` - **Response type:** `code` - **Grants:** `authorization_code`, `refresh_token` - **Code challenge:** `S256` (required) - **Token endpoint auth:** `client_secret_basic` or `client_secret_post` - **Redirect URI:** HTTPS, or HTTP on `localhost` / `127.0.0.1` Dynamic client registration (`POST /oauth/register`) is MCP-only. It cannot create an organization API client. ### Authorize the user ``` https://api.constructable.ai/oauth/authorize ?client_id= &redirect_uri= &response_type=code &scope=api &state= &code_challenge= &code_challenge_method=S256 ``` Constructable signs the user in (if needed) and shows **Authorize API access**. On confirm, the browser redirects to your redirect URI with `code` and `state`. Send the same `redirect_uri` on the token request that you registered on the client. ### Exchange the code `POST https://api.constructable.ai/oauth/token` with `application/x-www-form-urlencoded`: ``` grant_type=authorization_code &code= &redirect_uri= &client_id= &client_secret= &code_verifier= ``` A successful response looks like: ```json { "access_token": "...", "token_type": "Bearer", "expires_in": 7200, "refresh_token": "...", "scope": "api" } ``` Access tokens expire in two hours. Refresh with `grant_type=refresh_token`, the refresh token, client id, and client secret. ### Call GraphQL ``` POST https://api.constructable.ai/graphql Authorization: Bearer Content-Type: application/json { "query": "query { viewer { userId organizationId } }", "variables": {} } ``` `viewer.organizationId` is the organization that owns the API client. Pass that id to `organization(id:)`. MCP `mcp` tokens cannot call GraphQL. API `api` tokens cannot call MCP. API tokens also cannot create or revoke API clients, and they do not expose user-scoped mutations (`user { ... }`). On local development, use the same paths on your Rails API origin, for example `http://localhost:3000`. ## Session tokens Session tokens come from `POST /api/users/sign_in`. ``` POST https://api.constructable.ai/api/users/sign_in Content-Type: application/json { "email": "you@example.com", "password": "your-password" } ``` A successful response looks like: ```json { "user_id": "019f...", "requires_otp": false, "sessions": [ { "token": "eyJ...", "membership_type": "User", "organization_id": null, "organization_name": null }, { "token": "eyJ...", "membership_type": "OrganizationMembership", "organization_id": "019e...", "organization_name": "Northridge Construction" } ] } ``` Use a session whose `membership_type` is `OrganizationMembership` (or `CompanyMembership` when you are acting as a company user). That token sets the organization on the request. A `User` session authenticates you but does not select an organization. If the account has OTP enabled and you omit `code`, the response is `requires_otp: true` with an empty `sessions` array. Retry the same request with `code` set to the one-time password. Sign out with `POST /api/users/sign_out` using the same Bearer token. That destroys only the session you present. You can send `query`, `variables`, and `operationName` as JSON. GraphQL errors are returned in the `errors` array with HTTP `422`. Successful data responses use HTTP `200`. ## Which organization a token belongs to `viewer.organizationId` is the organization bound to the token. GraphQL queries still take an explicit `organization(id:)` argument; pass that same id. If you pass a different organization id the token cannot access, `organization` resolves to `null`. - **API OAuth:** the organization that owns the client. - **Organization or company session:** the membership on that session. A user with several organization memberships receives one session per membership at sign-in. Keep the token that matches the organization you intend to query. ## MCP OAuth MCP clients should not collect passwords. They use OAuth 2.1 with PKCE on the same authorization server, with the `mcp` scope: | Well-known document | URL | | -------------------- | --------------------------------------------------------------------- | | Authorization server | `https://api.constructable.ai/.well-known/oauth-authorization-server` | | Protected resource | `https://api.constructable.ai/.well-known/oauth-protected-resource` | | MCP-specific aliases | the same documents under `/mcp` | Supported values: - **Scope:** `mcp` - **Response type:** `code` - **Grants:** `authorization_code`, `refresh_token` - **Code challenge:** `S256` - **Token endpoint auth:** `none` (public clients) - **Dynamic registration:** `POST /oauth/register` The authorization endpoint is `https://api.constructable.ai/oauth/authorize`. The user signs in on Constructable, confirms the client, and the client receives an access token. Send that token as `Authorization: Bearer` to `https://api.constructable.ai/mcp`. MCP tokens are not interchangeable with GraphQL tokens. Call GraphQL with an organization API OAuth access token or a session token. MCP tools can also execute GraphQL on your behalf. See [MCP](https://constructable.ai/api-docs/mcp) for tools, permissions, and client setup. ## Permissions Authentication proves who you are. Authorization still applies on every field and mutation. Missing permission typically becomes a GraphQL error, not a silent empty list, for writes. Reads are scoped to records the user can see. See [Permissions](https://constructable.ai/api-docs/permissions). --- # GraphQL > POST /graphql with a Bearer token. Query from organization and project. Mutate through nested organization and project fields. Source: https://constructable.ai/api-docs/graphql The GraphQL endpoint is: ``` POST https://api.constructable.ai/graphql ``` Send JSON: ```json { "query": "query($id: ID!) { organization(id: $id) { id name } }", "variables": { "id": "019e..." }, "operationName": null } ``` The HTTP body can also use form fields named `query`, `variables`, and `operationName`. Introspection is available to authenticated clients. You can download the committed schema from [`/api-docs/schema.graphql`](https://constructable.ai/api-docs/schema.graphql). ## Root fields `Query` has two fields besides the internal `constructableUrl`: | Field | Purpose | | ----------------------- | ---------------------------------------------------------------- | | `viewer` | The signed-in user id and the organization id bound to the token | | `organization(id: ID!)` | The organization the user can access, or `null` | There is no root `project` field. Load a project from the organization: ```graphql query Project($organizationId: ID!, $projectId: ID!) { organization(id: $organizationId) { id name project(id: $projectId) { id name number } } } ``` Lists on `Organization` and `Project` are Relay connections. See [Pagination](https://constructable.ai/api-docs/pagination). ## Nested mutations `Mutation` is also nested: ```graphql type Mutation { organization(id: ID!): OrganizationMutations! user: UserMutations! } ``` `OrganizationMutations` includes organization-level writes and a `project(id:)` field that returns `ProjectMutations`. Project records are written like this: ```graphql mutation CreateDraftRfi( $organizationId: ID! $projectId: ID! $input: CreateDraftRfiInput! ) { organization(id: $organizationId) { project(id: $projectId) { createDraftRfi(input: $input) { rfi { id subject status } errors } } } } ``` If the organization or project does not exist, or the user cannot read the project, the mutation returns a GraphQL error and HTTP `422`. User-scoped operations (avatar, push devices, notification preferences) hang off `user`. They are available to session tokens only. Organization API OAuth tokens do not expose the `user` mutation field. ```graphql mutation SetMyTimeZone($input: SetMyTimeZoneInput!) { user { setMyTimeZone(input: $input) { errors } } } ``` ## Mutation inputs Most writes are Relay-style mutations with a single `input` argument. Common input fields: | Field | Role | | ------------------ | ------------------------------------------------------------------------------------------------------------ | | `id` | Client-generated UUID for the record being created or updated. Generate a UUID v7 when creating. | | `clientMutationId` | Optional client correlation id; echoed on the payload | | `mutationMetadata` | Optional JSON the product uses for client sync metadata. You can omit it. | | `now` | Optional timestamp so clients can keep optimistic clocks aligned. The server uses current time when omitted. | Payloads always include `errors: [String!]!`. An empty array means the write succeeded. Check `errors` even when HTTP status is `200` and `data` is present. Payloads also include `constructableUrl` for the in-app deep link when one exists. ## Money, dates, and rich text - Money fields are integer **cents** (`amountCents`, `costCents`, `BigInt`). - Dates are `ISO8601Date` (`YYYY-MM-DD`). Datetimes are `ISO8601DateTime`. - Rich text fields end in `RichText` and store HTML. Empty values are blank HTML such as `

`. - JSON fields are the `JSON` scalar. ## Record lookup On a parent type, a plural field is a connection (`rfis`, `submittals`) and the singular field takes `id` (`rfi(id:)`, `submittal(id:)`). Both are permission-scoped. Unknown or unauthorized ids resolve to `null` rather than throwing, for these lookups. ## Introspection and the reference Authenticated clients can run GraphQL introspection. The [reference](https://constructable.ai/api-docs/reference) is generated from the same committed schema the server uses. Search it by type or field name instead of guessing. --- # Pagination > List fields are Relay connections. Use first/after or last/before, read pageInfo, and do not treat a single page as the full set. Source: https://constructable.ai/api-docs/pagination Every `has_many` relation in the GraphQL schema is a Relay connection. The list field accepts `first`, `after`, `last`, and `before`. The result has `nodes`, `edges`, `pageInfo`, and `totalCount`. ```graphql query Rfis($organizationId: ID!, $projectId: ID!, $after: String) { organization(id: $organizationId) { project(id: $projectId) { rfis(first: 50, after: $after) { totalCount nodes { id number subject status } pageInfo { hasNextPage endCursor } } } } } ``` ## PageInfo ```graphql type PageInfo { hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: String endCursor: String } ``` Walk forward with `first` + `after: pageInfo.endCursor` while `hasNextPage` is true. Walk backward with `last` + `before: pageInfo.startCursor` while `hasPreviousPage` is true. `totalCount` is the full filtered set, not the page size. Use it to know when you still have pages left, but still follow `pageInfo` rather than counting nodes yourself. ## Edges `edges` is the Relay edge list (`cursor` + `node`). Prefer `nodes` unless you need per-item cursors. ## Search Project search is also a connection: ```graphql query Search($organizationId: ID!, $projectId: ID!, $query: String!) { organization(id: $organizationId) { project(id: $projectId) { search(query: $query, first: 25) { totalCount nodes { id type typeDisplayName title path sanitizedHeadline } pageInfo { hasNextPage endCursor } } } } } ``` `search` is indexed project content (drawings, documents, submittals, specs, and other searchable records). It is not a substitute for listing a single type with `rfis` / `submittals` / and so on. ## Completeness Do not report a total or an "all records" answer from the first page. Loop until `hasNextPage` is false, or stop after a documented cap and say the result is partial. --- # Errors > HTTP 401 is missing auth. HTTP 422 is a GraphQL error. Mutation payloads also return errors: [String!]! for domain failures. Source: https://constructable.ai/api-docs/errors Constructable uses two error channels: HTTP / GraphQL execution errors, and per-mutation `errors` arrays. ## HTTP status | Status | Meaning | | ------ | -------------------------------------------------------------------------------------------------------------------------------- | | `200` | GraphQL executed without execution errors. Still read `data` and any mutation `errors` arrays. | | `401` | Missing or invalid Bearer token. GraphQL also sends `WWW-Authenticate` with `scope="api"` and the GraphQL resource metadata URL. | | `422` | GraphQL returned an `errors` array (validation, missing record, authorization, invalid document, query limit). | The JSON body for a GraphQL response is `{ "data": ..., "errors": ... }`. `errors` is omitted on a clean `200`. ## Execution errors These appear in the top-level `errors` array. Typical messages: - `Organization not found` — `organization(id:)` on a mutation does not resolve for this user - `Project not found` — nested `project(id:)` on a mutation does not resolve - Permission failures from `Permit` ("You do not have permission…") - Unknown field or argument (the document does not match the schema) Example: ```json { "data": { "organization": null }, "errors": [ { "message": "Project not found", "locations": [{ "line": 4, "column": 5 }], "path": ["organization", "project"] } ] } ``` Treat any top-level `errors` entry as a failed request, even if `data` is partially present. ## Query limits The server checks every document against two limits before running it. A document over either limit does not execute and returns HTTP `422` with one top-level error. | Limit | Maximum | Error message | | ----- | ------------------------- | ------------------------------------------------------- | | Depth | 15 levels of fields | `Query has depth of , which exceeds max depth of 15` | | Size | 5,000 tokens per document | `This query is too large to execute.` | Depth counts every nested field selection, including `organization`, `project`, `nodes`, and the leaf field. The RFI list in [Examples](https://constructable.ai/api-docs/examples#list-rfis-on-a-project) is 6 levels deep: `organization` → `project` → `rfis` → `nodes` → `managerUser` → `id`. Following a relation back to its parent, such as `issues { nodes { project { ... } } }`, adds 3 levels each time. The standard introspection query fits within the limit. Every name, value, punctuation mark, and comment counts as a token. Aliasing the same field thousands of times in one document reaches the size limit. If you hit a limit, split the work into smaller requests. For example, load record ids in one query, then fetch nested details for those ids in another. ## Mutation payload errors Writes return a payload with `errors: [String!]!`. Domain problems (validation, conflict, empty required field) usually land here instead of the top-level array, and HTTP stays `200`. ```graphql mutation OpenRfi($organizationId: ID!, $projectId: ID!, $input: OpenRfiInput!) { organization(id: $organizationId) { project(id: $projectId) { openRfi(input: $input) { rfi { id status number } errors } } } } ``` Handle it as: 1. If the HTTP status is `401` or `422`, inspect top-level `errors`. 2. If `data.organization.project.openRfi` is `null`, the nested mutation did not run. 3. If `errors` on the payload is non-empty, the write did not apply. The returned `rfi` (or other record) may be `null`. 4. If `errors` is `[]` and the record is present, the write succeeded. ## Idempotent creates Many create mutations no-op when a record with the given `id` already exists, returning the existing record or a null record with empty `errors` rather than raising. If you retry, use the same client-generated `id`. ## Partial data GraphQL can return `data` alongside `errors` when a sibling field fails. Check both. Do not assume `data.organization` is complete if `errors` is present. --- # Permissions > The API enforces the same role permissions as the product. API OAuth tokens inherit the authorizing user. MCP has additional mcp.read and mcp.write checks. Source: https://constructable.ai/api-docs/permissions Constructable authorization is role-based. The API does not have a separate permission model. Whatever the user can do in the product, the same token can do through GraphQL. Whatever they cannot do is rejected. ## How it is enforced - **Queries** load records through permission scopes. Lists omit records the user cannot see. Singular lookups (`rfi(id:)`) return `null` when the record is out of scope. - **Mutations** declare a policy action such as `rfis.write` or `projects.read`. If the role lacks that action, the mutation returns a GraphQL error. - **Nested project mutations** also require `projects.read` on the target project before the inner mutation runs. - **Soft-deleted records** are excluded from normal queries. Company users (subcontractors, owners, architects) see a narrower slice than organization employees. A company membership session is scoped to that company and the projects it is on. An organization API OAuth token for a company user is the same: it can only see what that company membership can see in the client organization. ## Organization API OAuth API access tokens inherit the **authorizing user's** role in the organization that owns the client. They cannot escalate, switch organizations, or manage API clients. | Action | Who | | ------------------------------ | ------------------------------------------------------------------- | | Create or revoke an API client | Organization admin (`organization_settings.write`). Session only. | | Authorize an existing client | Any user who belongs to that organization, including company users. | | Call GraphQL with the token | That user's product permissions, re-checked on every request. | API tokens do not expose `user` mutations or `createOauthApplication` / `revokeOauthApplication`. Revoke the client in Organization Settings if the integration should lose access immediately. ## MCP MCP adds two role actions on top of product permissions: | Action | Effect | | ----------- | --------------------------------------------------------------------------------------------------------------------------- | | `mcp.read` | Required to use MCP at all. Without it, an existing OAuth token cannot run tools. | | `mcp.write` | Required for write tools (`mutate_graphql`, `constructable.mutateGraphql`). Without it, the server exposes only read tools. | Administrators, managers, and employees receive MCP access by default. Custom roles can have these actions removed. See [MCP](https://constructable.ai/api-docs/mcp). MCP still cannot exceed the user's project and record permissions. Connecting an assistant does not grant extra organization access. ## Super-user fields A few organization fields exist only for Constructable super users (for example billing metadata). They appear in the schema dump and resolve to hidden or inaccessible values for everyone else. Do not depend on them in customer integrations. ## Practical checks 1. Sign in as the user you will automate. 2. Confirm they can perform the action in the product UI. 3. Call the matching mutation. 4. If it fails with a permission error, change the role under organization settings rather than trying a different API field. Role configuration is documented for product users in [Roles and permissions](https://constructable.ai/help/roles-and-permissions). --- # File uploads > Create a direct-upload target with createFileUpload, PUT the bytes to S3, then pass signedId into a later mutation. Source: https://constructable.ai/api-docs/files Files are not posted to `/graphql` as multipart. You create an Active Storage blob, upload bytes to the returned URL, then attach the blob's `signedId` on a subsequent mutation. ## 1. Create the upload `createFileUpload` is an organization mutation. ```graphql mutation CreateFileUpload( $organizationId: ID! $input: CreateFileUploadInput! ) { organization(id: $organizationId) { createFileUpload(input: $input) { uploadUrl uploadHeaders signedId errors } } } ``` Input: | Field | Type | Description | | ------------- | --------- | ------------------------------------------------------------- | | `fileName` | `String!` | Original file name, including extension | | `byteSize` | `Int!` | Size in bytes | | `checksum` | `String!` | Base64-encoded MD5 of the file body (Active Storage checksum) | | `contentType` | `String` | MIME type, for example `application/pdf` | Checksum in Ruby is `Digest::MD5.base64digest(file_body)`. In Node: ```js import { createHash } from 'node:crypto'; const checksum = createHash('md5').update(bytes).digest('base64'); ``` ## 2. PUT the file `uploadUrl` is a pre-signed object-storage URL. `uploadHeaders` is a JSON object of headers you must send with the PUT. Include every header the payload returns; the signature depends on them. ``` PUT Content-Length: ``` A successful PUT is `2xx`. Do not send a GraphQL token to the storage URL. ## 3. Attach `signedId` Later mutations accept the blob through signed-id fields, for example `signedMediaAttachmentFileIds` on comments or scoped attachment mutations such as `createProjectScopedAttachment` / `createOrganizationScopedAttachment`. Keep the `signedId` secret. It is a capability token for that blob. ## Scoped attachments The public schema exposes scoped attachment mutations, not legacy per-record attachment mutations. Use the scoped create/delete fields on `OrganizationMutations` and `ProjectMutations` when attaching files to records that support them. Internal names such as `createBidAttachment` are not part of the public API and return a GraphQL error if you call them. --- # MCP > The Constructable MCP server is https://api.constructable.ai/mcp. It OAuth-authenticates a user and runs GraphQL through tools. Source: https://constructable.ai/api-docs/mcp MCP is the supported path for assistants. Integrations that call GraphQL directly should use [organization API OAuth](https://constructable.ai/api-docs/authentication) instead. The MCP server is: ``` https://api.constructable.ai/mcp ``` The connection runs as the authorizing user. It cannot widen access beyond that user's organization, project, and record permissions. Product setup for Claude and ChatGPT is in [Connect an outside assistant](https://constructable.ai/help/chat#connect-an-outside-assistant). This page is the protocol surface. ## OAuth MCP uses OAuth 2.1 with PKCE and dynamic client registration. Discovery: - `https://api.constructable.ai/.well-known/oauth-authorization-server` - `https://api.constructable.ai/.well-known/oauth-protected-resource` - MCP aliases of both under `.../mcp` The only scope is `mcp`. An `mcp` token cannot call `/graphql`; an `api` token cannot call `/mcp`. See [Authentication](https://constructable.ai/api-docs/authentication) for endpoint URLs and grant types. After the user confirms the client on **Connect MCP client**, send the access token as `Authorization: Bearer` to `/mcp`. ## Permissions | Role action | Tools | | ----------- | ------------------------------------------------------------- | | `mcp.read` | Required. Without it, the token cannot use MCP. | | `mcp.write` | Adds write tools. Without it, only read tools are registered. | Product permissions still apply inside every tool. `mcp.write` without `rfis.write` cannot create an RFI. ## Tools ### list_organizations Lists organizations the user may use with MCP, and whether the connected role is read-only or write-capable. Call this first. Use the returned organization UUID as `organization_id` on every other tool. Never pass an organization name or URL. ### search_constructable_schema Runs synchronous JavaScript against the committed GraphQL schema. Use it before `query_graphql` or `mutate_graphql` so you do not guess field names. The `code` argument is a function expression that receives the introspection spec, for example `(spec) => ({ projectFields: fields("Project") })`. Do not send a raw expression or a top-level `return`. ### query_graphql Executes a **read-only** GraphQL document as that user in the given organization. Mutations are rejected. Arguments: `organization_id`, `query`, `summary`, optional `variables`, optional `operation_name`. Pass organization and project ids through GraphQL variables. Paginate Relay connections to completion before treating a list as complete. ### mutate_graphql Executes a GraphQL **mutation** document. Queries are rejected. Only registered when the connection has `mcp.write`. Run it only after the user clearly asked for a write. Inspect the mutation field and input type with `search_constructable_schema` first, then query current records so ids are real. ### execute_constructable_script Runs a synchronous JavaScript function whose first argument is `constructable`. Use it for multi-step reads (and writes, when allowed) instead of a chain of one-off GraphQL tools. `constructable` provides: - `queryGraphql` — always - `uuidv7` — generate ids for create mutation payloads - `mutateGraphql` — only on write-capable connections The `code` argument must be a function, not a script with top-level `return`. ## GraphQL shape inside MCP The GraphQL document you pass to MCP tools is the same document you would POST to `/graphql`: ```graphql query ($organizationId: ID!, $projectId: ID!) { organization(id: $organizationId) { project(id: $projectId) { rfis(first: 50) { nodes { id number subject status } pageInfo { hasNextPage endCursor } } } } } ``` Project-scoped mutations stay nested: ```graphql mutation ($organizationId: ID!, $projectId: ID!, $input: CreateDraftRfiInput!) { organization(id: $organizationId) { project(id: $projectId) { createDraftRfi(input: $input) { rfi { id status } errors } } } } ``` When creating records in `execute_constructable_script`, call `uuidv7()` for new ids. ## Search For keyword or semantic lookup of drawings, documents, submittals, specs, and other indexed records, use `Project.search` in GraphQL rather than paging many tables. It is a Relay connection (`nodes`, `pageInfo`, `first` / `after`). ## Logging MCP requests are logged per user, organization, OAuth application, and session. Write tools are destructive; keep them behind client-side approval in the assistant. --- # Examples > End-to-end GraphQL examples for viewer, projects, RFIs, search, and file upload. Source: https://constructable.ai/api-docs/examples These examples assume a Bearer token from an organization API OAuth client or an organization membership session. Replace `$organizationId` and `$projectId` with UUIDs from `viewer` and `organization.projects`. ## Who am I ```graphql query Viewer { viewer { userId organizationId organizationMembershipId companyMembershipId } } ``` `organizationId` is the token's organization. Pass it to `organization(id:)`. ## List projects ```graphql query Projects($organizationId: ID!) { organization(id: $organizationId) { id name projects(first: 50) { totalCount nodes { id name number stage live } pageInfo { hasNextPage endCursor } } } } ``` ## List RFIs on a project ```graphql query ProjectRfis($organizationId: ID!, $projectId: ID!, $after: String) { organization(id: $organizationId) { project(id: $projectId) { rfis(first: 50, after: $after) { totalCount nodes { id number subject status dueOn ballInCourtStatus managerUser { id firstName lastName email } } pageInfo { hasNextPage endCursor } } } } } ``` ## Create and open an RFI Generate a UUID v7 for `id`. `createDraftRfi` requires `subject` and `managerUserId` (an organization member). Opening assigns the RFI number and notifies respondents. ```graphql mutation CreateDraftRfi( $organizationId: ID! $projectId: ID! $input: CreateDraftRfiInput! ) { organization(id: $organizationId) { project(id: $projectId) { createDraftRfi(input: $input) { rfi { id status subject } errors } } } } ``` ```json { "organizationId": "019e...", "projectId": "019f...", "input": { "id": "019f...", "subject": "Clarification on footing detail 5/S-201", "managerUserId": "019e..." } } ``` ```graphql mutation OpenRfi($organizationId: ID!, $projectId: ID!, $input: OpenRfiInput!) { organization(id: $organizationId) { project(id: $projectId) { openRfi(input: $input) { rfi { id number status } errors } } } } ``` ```json { "input": { "id": "019f..." } } ``` The `id` on `openRfi` is the RFI id, not a new id. ## Search project content ```graphql query SearchProject($organizationId: ID!, $projectId: ID!, $query: String!) { organization(id: $organizationId) { project(id: $projectId) { search(query: $query, first: 25) { totalCount nodes { id type typeDisplayName title path sanitizedHeadline parentEntityTitle } pageInfo { hasNextPage endCursor } } } } } ``` ## Upload a file See [File uploads](https://constructable.ai/api-docs/files) for checksums and the PUT step. ```graphql mutation CreateFileUpload( $organizationId: ID! $input: CreateFileUploadInput! ) { organization(id: $organizationId) { createFileUpload(input: $input) { uploadUrl uploadHeaders signedId errors } } } ``` ## curl ```bash TOKEN="..." ORG="019e..." curl -sS https://api.constructable.ai/graphql \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d "{\"query\":\"query(\$id: ID!) { organization(id: \$id) { id name } }\",\"variables\":{\"id\":\"$ORG\"}}" ``` `$TOKEN` is either an organization API OAuth access token (`scope=api`) or an organization membership session token. See [Authentication](https://constructable.ai/api-docs/authentication). ## Next Browse types in the [GraphQL reference](https://constructable.ai/api-docs/reference). Mutation fields live on `OrganizationMutations`, `ProjectMutations`, and `UserMutations`. --- # How to use Inbox in Constructable > Use this guide to find and manage comment conversations from across a project. Inbox in the sidebar opens the page titled Threads, where conversations you participate in or follow are gathered without replacing their parent records. Source: https://constructable.ai/help/inbox Use this guide to find and manage comment conversations from across a project. **Inbox** in the sidebar opens the page titled **Threads**, where conversations you participate in or follow are gathered without replacing their parent records. ## Start here - **Find conversations requiring attention:** [Review Threads in Inbox](#review-threads-in-inbox). - **Start project-wide internal discussion:** [Start an internal discussion](#start-an-internal-discussion). - **Finish or resume a conversation:** [Resolve, reopen, tag, or share a Thread](#resolve-reopen-tag-or-share-a-thread). - **Something is missing:** [Troubleshoot Inbox](#troubleshoot-inbox). ### Common task recipes - **Review open conversations:** Open **Inbox**, keep the **Open** status filter, then narrow by type, tag, commenter, date, or drawing sheet. - **Start project-wide internal conversation:** Select **New Internal Discussion Thread**, write the first message, and mention the people who need to act. - **Keep completed history:** Select **Resolve** instead of deleting comments. - **Follow one conversation:** Open **Thread Notification Settings** and choose **All Activity**. ## Start and review conversations ### Understand comments and Threads A comment is one message on a Topic, drawing location, RFI, Submittal, bid, photo, or another supported record. The first comment and its replies form a Thread. Inbox is a personal work list, not an archive of every project comment. It can include Threads you participate in, explicitly follow, receive through **All Activity**, or can access as internal project discussions. It can also include accessible AI Chat Threads. Use a structured record such as an RFI, Submittal, or list item instead of a Thread when formal status, assignment, response, or workflow history matters. ### Review Threads in Inbox ![Desktop: The empty Threads inbox shows the Open status filter and action for starting an internal discussion.](https://constructable.ai/help-images/collaboration-and-notifications/threads.png) 1. Open **Inbox** in the project sidebar. The page title is **Threads**. 2. Review the active filters; the list initially shows **Open** Threads. 3. Filter by status, type, tags, commenter, creation date, or drawing sheet. 4. Select a Thread to read its parent context and replies. 5. Open the parent record when you need its complete state or workflow actions. Thread types include internal discussions, Topics, RFIs, list items, and drawing markup. The **Type** filter names that last one **Punch List**. Inbox never bypasses permission to the parent record. ### Start an internal discussion Use an internal discussion for project-wide conversation that does not belong to a specific RFI, Topic, drawing location, or other record. 1. Open **Inbox**. 2. Select **New Internal Discussion Thread**. 3. Enter the first message. 4. Add attachments and mention the people who need to respond. 5. Submit. Internal discussions are visible only to people with **View and post on the internal project discussion board**. They notify people who are mentioned or have replied; mention the teammates whose attention is required. ## Manage Threads ### Resolve, reopen, tag, or share a Thread - Select **Resolve** when no further action is needed. - Select **Reopen** when work resumes. - Use **Edit Comment Thread Tags** to classify the Thread for filtering. - Use **Copy Link** to send a direct link to someone who already has access. - Use **Thread Notification Settings** to follow all activity, only relevant activity, or none for that Thread. Resolving preserves the conversation. It does not close an RFI, archive a Topic, or change the parent record's status. Delete a reply only when that message should be removed; the first comment defines the entire Thread. > **Note:** A copied link does not grant access to the Thread or its parent record. ## Access and troubleshooting ### Check Inbox access Inbox and Threads work on web and native layouts. Comment viewing and editing use separate permissions. Internal project discussions require their own permission and are not available to every external project role by default. A person must also be able to open the Thread's parent record. Inbox does not expose comments from inaccessible records. ### Troubleshoot Inbox #### A Thread is missing Confirm you can open its parent record, then clear the Inbox filters. Check resolved Threads because Inbox initially filters to **Open**. #### Not every project comment appears Inbox is a work list. It gathers Threads you participate in, follow, receive through **All Activity**, or can access as internal discussions; it is not the complete comment archive. #### An internal discussion is missing Confirm **View and post on the internal project discussion board** and clear type and status filters. #### A copied Thread link shows access denied The link does not grant access. The recipient needs permission to the parent record. #### A mention did not notify someone Confirm the person has access to the parent record and has not disabled notifications for that Thread. The event creator is not normally notified about their own action. --- # How to search projects in Constructable > Use this guide to find project records by keyword or ask a one-question AI answer. For continuing conversations, attachments, Skills, and outside AI assistants, use How to use Agent in Constructable. Source: https://constructable.ai/help/search Use this guide to find project records by keyword or ask a one-question AI answer. For continuing conversations, attachments, Skills, and outside AI assistants, use [How to use Agent in Constructable](https://constructable.ai/help/chat). AI output is a route into the project record, not the record itself. It respects your access, can miss context or recent changes, and does not make contractual decisions. Verify totals, dates, statuses, approvals, and source language before acting. Learn how permission-aware discovery and source links support [Trusted AI and Search](https://constructable.ai/help/concepts/trusted-ai-and-search). ## Start here - **Find a known record:** [Search by keyword](#search-by-keyword). - **Review matching records:** [Open Search results](#open-search-results). - **Get one synthesized answer:** [Ask a project question](#ask-a-project-question). - **Investigate a broader question:** [Use Deep Research](#use-deep-research). - **Search or an answer failed:** [Troubleshoot Search](#troubleshoot-search). ## Find project records ### Search by keyword ![Desktop: Search offers Search Keywords and Ask Question modes alongside access to Agent.](https://constructable.ai/help-images/ai-and-search/choose-mode.png) 1. Open **Search** in the project. 2. Select **Search Keywords** when the mode selector appears. 3. Enter a distinctive number, company, title, or phrase. 4. Wait for results to finish loading. 5. Refine the query when the results are too broad. Search updates after a short typing pause and requests up to 50 project results on the main Search page. The latest query is retained for about ten minutes for that project. Search uses several matching approaches and is not an exact database report. Use a report or the source tool when you need a complete count. ### Open Search results - Use type badges to jump between grouped result sections. - Review highlighted matching text before opening a result. - Open the result to work in its normal project tool. - Review Photos and Photo Albums in their visual sections. Search returns only records available through your project and record permissions. A result can stop opening when the source was archived, deleted, moved, or restricted after the search ran. ## Ask a project question ### Ask a project question Use **Ask Question** when one synthesized answer is enough. 1. Open **Search** → **Ask Question**, or use the question field on **Management Tools** → **Dashboard**. 2. Ask one focused question that names the record type, status, and time period. 3. Select **Get Me the Answer** or the Dashboard submit action. 4. Open the source links and verify the relevant records. 5. Select **Ask another question** for a separate request. This mode does not carry conversational memory. Include the needed context each time. Enter submits the single-line field, and questions are limited to 5,000 characters. Use Agent when the next question depends on the answer or you need an attachment. When the Dashboard creates a Chat-style response, select **Continue in chat** to keep working in Agent. ### Use Deep Research 1. Write the question. 2. Select **Use deep research agent** below the box. 3. Submit and wait for completion, or cancel the running request. 4. Open **Recent Questions** to revisit completed, non-deleted answers. Deep Research can take longer. It searches more deeply through the same records; it does not expand permissions or guarantee completeness. When the organization uses Agent for AI questions, the checkbox and **Recent Questions** are replaced by the Agent experience. ### Verify an AI answer 1. Confirm the project, date range, status, and record type in the request. 2. Open the cited RFIs, Submittals, Daily Logs, contracts, or other source records. 3. Verify amounts, dates, assignments, statuses, and approvals. 4. Narrow the question when unrelated subjects were combined. 5. Record formal decisions in the appropriate project tool. Source links accelerate review; they do not verify generated statements. AI does not imply access to records you cannot open, a complete history, or a definitive interpretation of contract language. ## Access and platforms - Keyword Search is permission-aware and stays within the current project. - Organization settings determine whether **Ask Question** and **Use deep research agent** appear. - When the organization uses Agent for AI questions, Search shows keyword Search. Open **Agent** for continuing conversations. - Search and Dashboard questions have responsive web and native layouts and require an online connection. - AI answers do not widen project or record access. ## Troubleshoot Search ### Ask Question or Deep Research is missing The organization uses Agent for questions. Open **Agent** from the project sidebar. ### Search returns no results Confirm you are online and in the intended project. Try an exact record number or shorter distinctive term, then confirm you can open the expected record from its source tool. Scanned text, images, and recently added content may not match every visible word. ### Search shows an error Confirm connectivity, clear the retained query, and retry. If it persists, report the project, query, time, browser, and device. ### A result will not open Confirm the record still exists and that your role, project membership, and record access still allow it. ### An answer is incomplete or wrong Open the source records, add a date range, status, project area, or record type, and ask again. Do not act on generated amounts, deadlines, approvals, or contract interpretations without verification. --- # How to use Agent in Constructable > Use this guide for continuing AI conversations, page-aware assistance, file attachments, saved Chats, Skills, and connecting Claude or ChatGPT to Constructable. Source: https://constructable.ai/help/chat Use this guide for continuing AI conversations, page-aware assistance, file attachments, saved Chats, Skills, and connecting Claude or ChatGPT to Constructable. Agent respects your organization, project, and record permissions. Treat generated output as assistance: open source records and verify important amounts, dates, statuses, approvals, and contract language. Learn how permission-aware answers and source review support [Trusted AI and Search](https://constructable.ai/help/concepts/trusted-ai-and-search). ## Start here - **Ask and follow up:** [Start a Chat](#start-a-chat). - **Ask beside the current page:** [Use the desktop agent panel](#use-the-desktop-agent-panel). - **Work from a file:** [Attach files and manage responses](#attach-files-and-manage-responses). - **Enter a proposal or invoice:** [Run a Chat Skill](#run-a-chat-skill). - **Save a prompt you reuse:** [Create and share a custom skill](#create-and-share-a-custom-skill). - **Catch drawing and spec conflicts:** [Find discrepancies](#find-discrepancies). - **Check a submittal against the specs:** [PreCheck a submittal](#precheck-a-submittal). - **Ask what a signed contract says:** [Chat with an executed contract](#chat-with-an-executed-contract). - **Clean up sheet numbers in a drawing set:** [Bulk edit sheet numbers and titles](#bulk-edit-sheet-numbers-and-titles). - **Return to prior work:** [Find a past Chat](#find-a-past-chat). - **Use Claude or ChatGPT:** [Connect an outside assistant](#connect-an-outside-assistant). - **Agent failed or is missing:** [Troubleshoot Chat](#troubleshoot-chat). ## Ask and continue ### Start a Chat 1. Open **Agent** in the project sidebar. 2. On desktop, the conversation opens in the side panel beside the page you're on. On a phone, Agent is a full-page view. 3. Type a request in **Search or ask for something...**, or on larger web layouts pick a suggested prompt such as overdue RFIs, last week's daily logs, or expired insurance. 4. Submit and review the streamed response. 5. Ask follow-up questions in the same Chat. 6. Select **New Chat** when the subject changes. Suggested prompts do not promise access to every feature or record. A Dashboard question can start a Chat-style session; select **Continue in chat** after the response to continue in Agent. ### Use the desktop agent panel ![Desktop: The agent panel keeps a Chat conversation open beside the current project page.](https://constructable.ai/help-images/ai-and-search/desktop-agent-panel.png) 1. Open the project page you are reviewing. 2. Select the bot icon labelled **Open agent panel**, or select **Agent** in the sidebar — on desktop both open the same panel. 3. Name the record and the outcome you want. 4. Use **All Chats** to switch conversations or start another. The list defaults to chats for this **Project**. Use the **Page** filter when you want only chats started on this screen, or select **Show project chats** if that filter is on and the list looks empty. 5. On desktop, use **Expand panel** when you need the conversation full-width, then **Exit fullscreen** to return to the side panel. Select **Close agent panel** when finished, or use the close button in the top-right corner of the panel header — it's there on both the conversation and the **All Chats** list. The panel is how desktop conversations work. Messages include removable **Project** and **Page** chips so you can see — and drop — the context Agent is using. The chips name the page, not the record contents. Describe the record explicitly and verify linked sources. ### Attach files and manage responses 1. Use **Add Attachments**, drag files onto the chatbox in web layouts, or use the device picker. 2. Wait for uploads to finish. 3. Ask a specific question about the files. 4. Submit and verify cited evidence in the originals. Agent can also inspect an attachment already stored on a record you can access when you identify the record and file clearly. Upload success does not guarantee that Agent can interpret the file; PDFs and images are the safest formats. Need one package out of several files? Ask Agent to combine them — "put the A-series sheets and spec section 08 71 00 into one PDF for the hardware sub," say. It can pull whole PDFs or page ranges from record attachments, files you've uploaded to the chat, spec books, and drawing sheets, in the order you ask for, and replies with a link to download the new PDF. It's named `Combined.pdf` unless you ask for a different name. Agent only reaches files your own access already lets you open. Links in an answer open the record, page, or file they name; a link to a site outside Constructable asks you to confirm before it opens. To paste one into an email or a text instead, select the small copy icon right after the link — its tooltip reads **Copy link** — and we copy the full web address. Selecting a link to the page you're already on copies it too. Select the stop control to end a streaming response. Stopping may leave an incomplete answer; send another message to continue. ### Find a past Chat 1. Open **Agent**. 2. Select **All Chats**. The list has two tabs: **Chats** and **Skills**. 3. Review generated titles, starting-project badges, and updated times. 4. The list starts filtered to this **Project**. Add the **Page** filter when you want chats started on the current screen. If you see **No chats started on this page**, select **Show project chats**. A spinner labelled **Working** appears while Agent is still answering that chat. A dot labelled **Unread** appears when a finished reply is waiting; opening the chat clears it. The unread dot stays hidden while the spinner is showing. Chats are personal, ordered by recent activity, and associated with their starting project and page. The list excludes archived Chats, Chats owned by other users, and automated system runs such as drawing revision descriptions — those never appear here. Use **All Chats** to browse the same conversations across layouts. Find panel controls in the header or actions menu for your screen size. ## Run Skills ### Run a Chat Skill Select **Use a Skill**, choose the workflow, attach its source PDF when the skill needs one, and send the request. The skill badge remains active in that Chat until you select **Remove active skill**. Skills carry their own permissions and prerequisites. Agent asks when a project or record match is ambiguous; it should not guess. Always open and verify the resulting record. ### Create and share a custom skill A check, summary, or lookup that you type the same way every week is a custom skill waiting to be saved. Write the prompt once and pick it from **Use a Skill** the next time. 1. Open **Agent** and select **All Chats**. 2. Open the **Skills** tab, or from the empty landing select **Add/Edit Custom Skills...**. 3. Select **New Skill**. 4. Enter a **Title** in **Name this skill** and the **Prompt** Agent should follow. 5. If your role can share organization skills, you can tick **Share this skill with my whole organization**. Leave it cleared to keep the skill **Only me**. 6. Select **Create skill**. 7. Back in a conversation, select **Use a Skill** and pick the skill you just saved. **Create and use skills** is nested under Chat access. **Level of skill access** is **Organization skills** for Admin, Manager, and Employee by default, and **Only my skills** for Subcontractor, Consultant, Owner, and Bidder. Organization-shared skills are visible to roles with **Organization skills**. A role limited to **Only my skills** sees and runs only that person's own skills — not the organization's shared list. You can run a shared skill without being able to edit it, as long as your level is **Organization skills**. > **Note:** The share checkbox only appears when you create a skill and your role has organization skill access. Someone limited to **Only my skills** can still write prompts for themselves. You now have a reusable prompt you can start without retyping the briefing. #### Why don't I see New Skill? You need **Create and use skills**. Chat access alone lets you run skills other people shared; it does not let you create them. #### Can someone outside my company use a skill I shared? Not with the default Subcontractor, Consultant, Owner, or Bidder skill access. Those roles are **Only my skills**, so they don't see organization-shared skills. Someone whose role is **Organization skills** can run a skill you shared; they can't edit it unless they also have that organization level. ### Find discrepancies Drawings and specs sometimes disagree about a material, and catching that before the work starts is cheaper than finding it in the field. **Find discrepancies** reads the published drawings and specs and comes back with the conflicts. The quickest way in is from Drawings: 1. Open a drawing area or the drawing viewer. 2. Open the command palette and select **Find discrepancies**. 3. Review the findings table and open the cited sources. You can also select **Use a Skill** → **Find discrepancies** in Agent. It reports material conflicts; it doesn't change drawings, specs, or statuses. Verify each finding on the sheet or spec section before you act on it. > **Note:** The skill needs **View drawings** on top of Agent access. It only looks at published drawings and specs. #### Why is Find discrepancies missing? Check **View drawings**. If you can open the Drawings page but not the skill, it's the drawing permission rather than Chat access. ### Import a bid 1. Confirm the Bid Package, company, and bid record already exist. 2. Select **Use a Skill** → **Import bid**. The skill reads **Import a bid PDF into the matching bid.** 3. Attach the proposal PDF and request the import. 4. Answer matching questions. 5. Open the existing bid and verify total, scope amounts, notes, attachments, and **Received** status against the PDF. Package managers use bid write access. Invited bidders use **Respond bid requests sent to me**. The skill updates an existing bid; it does not create its package, company, or bid. See [How to manage bids](https://constructable.ai/help/bid-management#import-a-bid-with-chat). ### Import an invoice 1. Confirm the Commitment, Schedule of Values, and valid Billing Period exist and you have financial write access. 2. Select **Use a Skill** → **Import invoice**. 3. Attach the invoice PDF and request the import. 4. Answer project, company, Commitment, or SOV matching questions. When the PDF states an application or billing period, the skill matches that Constructable period. Otherwise it picks the period that contains the invoice date, then the current period. It asks instead of creating a Draft if that would put billing on an earlier period than invoices you already have, or if remaining SOV isn't enough. 5. Open the created Draft invoice. 6. Verify invoice number, date, Billing Period, SOV lines, amounts, retention, and source PDF. The skill handles both a subcontractor invoice from a vendor and a prime invoice you bill to the owner. It reads the document first to work out which one it's looking at, then matches the company and the commitment type to suit — the subcontractor and their vendor commitment, or the owner and the prime commitment. You don't have to tell it which kind you attached, though saying so in your request saves it a question when the document is ambiguous. The skill creates a Draft; it does not approve or submit the invoice. For other import methods, see [Import a subcontractor invoice](https://constructable.ai/help/invoices#import-a-subcontractor-invoice). ### PreCheck a submittal Reviewing a shop drawing against the spec section is careful, slow work, and the things that get missed are rarely the obvious ones. **PreCheck** reads the submittal's documents, finds the specs and drawings that govern them, and comes back with a short table of what doesn't line up. The quickest way in is from the submittal itself: 1. Open the submittal. 2. Open the command palette and select **PreCheck** under **Submittals**. 3. The agent panel opens beside the page and starts the check on that submittal. You can also select **Use a Skill** → **PreCheck** in Agent, but then you'll need to say which submittal you mean, since Agent identifies it from the page you're on. PreCheck reads the documents on the submittal and on its first stage, favoring what looks like the actual contractor package, then compares them with the project's specs and drawings. It reports only the discrepancies, in a table with columns like Issue, Where, and Why it matters — so a short answer means it didn't find much, not that it didn't look. > **Note:** PreCheck is a reading pass, not a response. It doesn't change the submittal's status, add a comment, or record a review, and it doesn't stand in for an approver's judgment. Verify each finding against the spec before you act on it. #### Why is PreCheck missing? It needs **View submittals** on top of Agent access. If you can open the submittal but not the skill, check Chat access; if you can't open the submittal either, it's the submittal permission. #### What does PreCheck actually look at? The submittal's own metadata and documents, the documents on its first stage and their approvers, and the project specs and drawings it can tie to that spec section. It asks rather than guesses when it can't tell which submittal or which spec applies. Run it before you route the submittal and the reviewers get a cleaner package. ### Chat with an executed contract Somebody asks what the retention terms are, or whether a particular notice period applies, and the answer is on page fourteen of a subcontract nobody wants to open. **Chat with the Contract** answers from the signed contract PDF itself. 1. Open the commitment, purchase order, or prime contract. 2. Open the command palette and select **Chat with the Contract** under **Commitments**. 3. The panel opens with the skill active and an empty message box. Type your question — nothing is asked on your behalf. The answer comes from that one signed contract PDF and nothing else. Drawings, change orders, invoices, and email are deliberately out of scope, so the response is either in the executed agreement or you're told it isn't there. That's what makes it worth quoting to someone. > **Note:** The action only appears on a commitment that is **Fully Executed** and was signed through Constructable's e-signing. A contract that was signed on paper and uploaded as an attachment has no e-signed PDF for the skill to read, so you won't see it offered. You now have contract answers with a source, instead of a recollection of what the contract said. #### Why don't I see Chat with the Contract on this commitment? Either it isn't **Fully Executed** yet, or it wasn't e-signed in Constructable. You also need **View financials**. #### Can it compare two contracts? No. It stays on the one commitment's executed contract on purpose. Ask about each separately. ### Bulk edit sheet numbers and titles A set comes back from the architect with sheet numbers formatted three different ways, and fixing two hundred of them by hand is how drawing review turns into an afternoon. This skill does the pass for you. 1. Open the drawing set's review page. 2. Open the command palette and select **Bulk edit sheet numbers and titles** under **Drawings**. 3. Describe what you want — a consistency clean-up, a find and replace, stripping a prefix — or just ask it to make the set consistent. 4. Read the before-and-after table it proposes. 5. Reply to apply the changes. Nothing changes until you say so. The skill shows you its proposal as a table of what each sheet is called now and what it would be called, and waits. Where a set has one dominant convention, it works toward that with the fewest edits it can make. It only touches sheets still awaiting confirmation in that one set, and it only rewrites the numbers and titles already read off the sheets — it doesn't reopen the PDFs or invent values. Sheets you've already confirmed are left alone. > **Note:** Long sets are summarized rather than listed in full. Spot-check a few rows in the table before you apply, especially where it proposes new numbers to break a duplicate. Confirm the review afterward as you normally would. See [Reviewing and confirming an uploaded drawing set](https://constructable.ai/help/drawings#reviewing-and-confirming-an-uploaded-drawing-set). ## Connect an outside assistant ### Connect an outside assistant Constructable's MCP server is `https://api.constructable.ai/mcp`. For Claude: 1. Open **Customize** → **Connectors**. 2. Select **+** → **Add Custom Connector**. 3. Name it `Constructable` and enter the server URL. 4. Select **Add**. 5. Sign in on **Connect MCP client**, then select **Confirm**. For ChatGPT, install Constructable from the app directory, select **Connect**, then sign in and select **Confirm**. The connection runs as your account and cannot widen access. Keep read-only tools always allowed if desired, but leave write tools requiring approval. Conversations remain in the outside assistant, not Constructable. MCP permissions are separate; administrators, managers, and employees receive access by default. Contact `support@constructable.ai` if authorization cannot complete. ## Access and platforms - **Create, update, and delete AI chats** controls Agent and the agent panel. - **Create and use skills** lets you write custom skills. **Level of skill access** is **Organization skills** or **Only my skills**. - Project and record permissions still control every answer and attachment. - Agent has web and native layouts. Use the prompt controls and **Use a Skill** to start a workflow. - Select **Agent** to open your conversation. Use **Expand panel** / **Exit fullscreen** to adjust the conversation workspace; controls adapt to your layout. - Attachments are available in Agent; use **Continue in chat** from Dashboard for the full attachment interface. - **Import bid** additionally needs **Invite new bidders, add and change bid packages, message bidders** or **Respond bid requests sent to me**. **Import invoice** needs **Submit invoices for approval** and matching financial records — the same permission a subcontractor uses to submit billing, so you don't have to grant full financial write to let someone import an invoice. **Find discrepancies** needs **View drawings**. **PreCheck** needs **View submittals**. **Chat with the Contract** needs **View financials** and a fully executed, Constructable-e-signed contract. **Bulk edit sheet numbers and titles** needs **Change drawing sets, drawing areas, and drawing pages, publish and unpublish drawings**. ## Troubleshoot Chat ### Chat is missing Ask an administrator to verify **Create, update, and delete AI chats** and your project access. On desktop, **Agent** opens the side panel — if the panel is closed, select **Open agent panel**. ### A response stops or fails Retry or start a new Chat. Shorten the request, remove a problematic attachment, or divide broad work into focused questions. ### Chat did not use an attachment Identify the file and evidence you need. Re-export unsupported or unreadable content as PDF or image, then verify the response against the original. ### A past Chat is missing If you applied the **Page** filter, clear it or select **Show project chats**, then check **Project**. Archived Chats, another user's Chats, and automated system runs such as drawing revision descriptions do not appear in **All Chats**. ### A Skill cannot match a record Confirm its required records exist, you have access, and the source file clearly identifies them. Answer matching questions rather than forcing an uncertain import. ### New Skill is missing Confirm **Create and use skills**. Sharing with the organization also needs **Level of skill access** → **Organization skills**. ### An outside assistant sees no organizations Ask an administrator to verify the MCP permission for your role. Connecting the assistant does not grant organization or project access. --- # How to use Dashboard in Constructable > Use this guide to review current work on one project. Dashboard summarizes project metrics, assignments, recent field activity, notes, signatures, and notifications; open the related record when you need full history or an action. Source: https://constructable.ai/help/dashboard Use this guide to review current work on one project. Dashboard summarizes project metrics, assignments, recent field activity, notes, signatures, and notifications; open the related record when you need full history or an action. ## Start here - **Review today's priorities:** [Use the project Dashboard](#use-the-project-dashboard). - **Find work waiting on you:** [Review metrics and Ball-in-Court](#review-metrics-and-ball-in-court). - **Understand why a widget is missing:** [Check Dashboard access and availability](#check-dashboard-access-and-availability). - **A count looks wrong:** [Troubleshoot Dashboard](#troubleshoot-dashboard). ### Common task recipes - **Triage a project:** Open **Management Tools** → **Dashboard**, scan overdue widgets, work through **My Ball-in-Courts**, and review **Latest Daily Logs**. - **Investigate an overdue count:** Select the widget, open the related list or report, then confirm status on the individual record. - **Find the project roster:** Use **Management Tools** → **Team**; Team is a separate tool. ## Review project work ### Use the project Dashboard ![Desktop: The project Dashboard brings RFI, Submittal, Commitment, and Schedule summary widgets into one starting view.](https://constructable.ai/help-images/dashboards-and-reports/using-project-dashboard-widgets.png) 1. Open the project. 2. Select **Management Tools** → **Dashboard**. 3. Scan the available summary widgets. 4. Open a widget or item to reach its tool or record. 5. Use **View All** where available when you need more than the preview. Depending on package, settings, and permissions, Dashboard can show project question answering or Chat-style AI, RFI and Submittal widgets, Commitments, Schedule, **My Ball-in-Courts**, project notifications, **Latest Daily Logs**, project notes, and documents waiting for signature. The **Document** name in that signatures list links to the source commitment, contract, or Change Order when Constructable can resolve it. Each row also shows the **Next Signer** and either **Review & Sign**, when you're the one signing, or **Send Reminder**, when you can manage the project's financials. The "Last sent" line under that button tells you when we last emailed the signer the request — the first send or the latest reminder — so you can see whether a nudge is due. Every widget here is a snapshot meant to point you somewhere, not a substitute for the record. Delays, weather, progress, and staffing all get confirmed in Daily Logs itself. ### Review metrics and Ball-in-Court - **RFIs** shows open and overdue counts. - **Submittals** shows open and overdue counts and excludes superseded revisions. - **Commitments** shows a completion percentage when Financials is enabled and your role can see all commitments. - **Schedule** shows days until the estimated completion date, or links to add one. - **My Ball-in-Courts** lists accessible RFIs, Submittals, Work Plans, list items, and invoices under review currently requiring your attention, typed as **RFI**, **Submittal**, **Work Plan**, **List Item**, and **Invoice**. A Work Plan appears while you owe its authorization, an item sign-off that isn't locked by a hold point, or its acceptance; its due date is the earliest due date among the items waiting on you. Use **All My Ball-in-Courts** for the full list. - **Latest Daily Logs** shows the three most recent logs. Each one gives you its date, a construction icon when the log records a delay, a one-line staffing count built from the log's personnel entries — "Acme Electric: 5 workers, 8 hours" — and up to four attachment previews. Long staffing lines are trimmed to two lines; open the log for the rest. **Add New Log** appears when you have write permission, and **View All** opens Daily Logs. Open an overdue or assigned record, confirm its current status and Ball-in-Court, and take action in that tool. A widget is a summary snapshot rather than the authoritative record. ## Access and troubleshooting ### Check Dashboard access and availability Dashboard opens for anyone with project access, on every package. The widgets on it are what change. On a Field-package organization the RFI and Submittal widgets, the documents-awaiting-signature panel, and the RFI, Submittal, and Work Plan entries in **My Ball-in-Courts** aren't there, because those tools aren't part of that package. You're left with Schedule, **My Ball-in-Courts** for list items, notifications, **Latest Daily Logs**, and project notes. Each widget also checks access to its related tool. RFI and Submittal widgets need their read permissions on top of the package, Commitments needs Financials and all-commitments access, and Schedule needs schedule read access. When none of the four qualify, the widget row is left out rather than shown empty. Panels stack on smaller screens. ### Troubleshoot Dashboard #### Dashboard is missing Confirm you have access to the project. **Dashboard** sits under **Management Tools**. #### A widget is missing Check your permission for its underlying tool, then check the organization's package. RFI, Submittal, and signature panels don't appear on a Field-package organization regardless of role. #### My Ball-in-Courts is empty Confirm you are currently assigned, responsible, or Ball-in-Court on an open record you can access. Closed and inaccessible records are excluded, and on a Field-package organization only list items are counted. #### A count differs from a report or list Compare statuses, revisions, filters, and update timing. Dashboard widgets may count only open or overdue records, while a report can include additional statuses. Confirm the current state on the records. #### Schedule shows a link instead of a number The project has no estimated completion date. Follow the link to add one. --- # How to use Team in Constructable > Use this guide to staff one project's Team, grant project access, invite participants, review contact information, and remove people or companies from the job. You can pick companies and people that already exist in Global Directory, or create them from the Team dialogs when y... Source: https://constructable.ai/help/team Use this guide to staff one project's Team, grant project access, invite participants, review contact information, and remove people or companies from the job. You can pick companies and people that already exist in Global Directory, or create them from the Team dialogs when your role allows it. ## Start here - **Add a client, consultant, or subcontractor:** [Add a company to the Project Team](#add-a-company-to-the-project-team). - **Add people from a company:** [Add people and grant project access](#add-people-and-grant-project-access). - **Build a contact list:** [Review and export the Project Team](#review-and-export-the-project-team). - **Remove someone from this job:** [Remove a person or company from the project](#remove-a-person-or-company-from-the-project). - **Something is missing:** [Troubleshoot Team](#troubleshoot-team). ### Common task recipes - **Staff a project with a subcontractor:** Select **Management Tools** → **Team** → **Add Subcontractor**, choose the directory company and people, then choose project access. - **List a contact without giving access:** Choose **Associate with project without granting access**. - **Give an existing user access without another email:** Choose **Grant access without sending an email invite**. - **Prepare a distribution list:** Select **Copy All Emails to Clipboard**. ## Build the Project Team ### Add a company to the Project Team ![Desktop: The Add Company to Project Team dialog selects an existing Global Directory company.](https://constructable.ai/help-images/teams-and-directory/add-company.png) 1. Open the project. 2. Select **Management Tools** → **Team**. 3. Select **Add Client**, **Add Consultant**, or **Add Subcontractor**. 4. Select an existing Global Directory company, or select **Create new company** when your role has **Add new companies to the organization global directory, update company information**. 5. Under **Add People to Project (optional)**, select participants and set **Send Invite?** for each. 6. Save the addition. When available, **Create Commitment** and **Commitment Title** can create the subcontractor's commitment at the same time. For a Client, the equivalent fields are **Create Prime Contract** and **Prime Contract Title**. These options also require the corresponding contract permission. If you don't have permission to create companies, the picker copy reads **Only companies already in the directory are available here.** Add the company in Global Directory first, then return. The page groups participants into **Client**, your organization, **Consultants**, **Subcontractors**, and **Bidders**. Bidders appear only with Bid Management write permission. ### Add people and grant project access 1. Open **Management Tools** → **Team**. 2. In the appropriate company or organization section, select **Add Team Member** or **Add People...**. 3. Under **Select People**, choose one or more directory people, or select **Create new person** when your role can add that kind of user. 4. Choose a **Project access** option: - **Associate with project without granting access** lists the person without letting them open the project. - **Grant access without sending an email invite** lets an existing user open the project without sending email. - **Grant access and send email invite** grants access and emails the person. 5. If sending an invitation, review the email and select **Add and Send**. **Associate with project without granting access** is initially selected, so change it when the person needs to begin work immediately. ## Review and maintain ### Review and export the Project Team ![Desktop: Search the Project Team or open Actions to change views and export contact information.](https://constructable.ai/help-images/teams-and-directory/review-and-export-project-team.png) From **Management Tools** → **Team**: - Search with **Search companies and people...**. - Use **Show Project Roles** or **Hide Project Roles**. - Use **Switch to Table View** or **Switch to List View**. - Select **Download Team CSV** to export the roster. - Select **Copy All Emails to Clipboard** for an email recipient list. - For one person, open their row's **Actions** menu and select **Copy email**. This works in both the list and the table view, and it's the quicker route when you just need to paste one address into an email. - Select **Send Invitation Emails** to invite project members in bulk. Companies on the roster can show commitment titles under the company name — comma-separated when there's more than one. When there are no commitment titles, the line falls back to the company's trades from Global Directory. You need **View contact information like email address and phone number** to see either. The titles link when you also have **View commitments and purchase orders** (vendor) or **View prime contracts** (prime). Purchase orders don't appear there. Contact fields and exports still require contact-information permission — including **Copy email**, so a role that can see the roster but not contact details won't find it. ### Remove a person or company from the project 1. Open **Management Tools** → **Team**. 2. Open the person's or company's actions. 3. Remove them from the Project Team. Removing someone from this project removes their project membership and access but leaves their Global Directory membership available for other projects. It also takes their name off this project's submittal approval templates, punch templates, and the default manager and subscriber lists for RFIs, Submittals, and Daily Logs. To offboard someone from the entire organization, deactivate them in Global Directory instead. ## Access and troubleshooting ### Check Team access and platform availability **Team** appears under **Management Tools** for project users. **View the project team** is required for the complete roster, including external companies, Bidders, and export actions. Without it, the page can show only members of your own organization. Use list or table view to review Team. On small screens, check the page actions menu for CSV, email-copy, and invitation actions. ### Troubleshoot Team #### I cannot add people to a company on the Project Team Confirm **Add people to the project team**. This is separate from commitments and financials permissions. Open the company's 3-dot menu and select **Add more people...**. If the company has no people yet, use the **Add People...** link under the company name. #### I cannot send invitation emails from Team Confirm **Add people to the project team**. This is the same permission used to add people, not **Reset user passwords and re-invite them to their organization or company**. #### A company is not available to add If **Create new company** is missing, add the company under **Global Directory** → **Companies** first, then return to Team. That create link needs **Add new companies to the organization global directory, update company information**. #### Most Team sections are missing Ask an administrator to confirm **View the project team**. Without it, only your organization's members may appear. #### A Bidder cannot open the normal Team page Bidder memberships use the bidding experience rather than the standard Project Team page. #### Emails or phone numbers are blank Your role also needs **View contact information like email address and phone number**. #### An invited person cannot open the project An invitation handles sign-in; it does not guarantee project access. Confirm the person was added with one of the two options that grants project access. --- # How to use Topics in Constructable > Use this guide to keep drawing markup and its conversations together in named coordination records. Topics can span sheets, have their own sharing audience, and remain available after coordination is archived. Source: https://constructable.ai/help/topics Use this guide to keep drawing markup and its conversations together in named coordination records. Topics can span sheets, have their own sharing audience, and remain available after coordination is archived. ## Start here - **Create a coordination record:** [Create and share a Topic](#create-and-share-a-topic). - **Add drawing markup and discussion:** [Work with Topic markup and conversations](#work-with-topic-markup-and-conversations). - **Finish or resume coordination:** [Archive or unarchive a Topic](#archive-or-unarchive-a-topic). - **Something is missing:** [Troubleshoot Topics](#troubleshoot-topics). ### Common task recipes - **Coordinate a plan issue:** Create a Topic, set **Edit Shared With**, save drawing markup to it, and mention the people who need to act. - **Keep a Topic private while preparing it:** Create it and leave its initial audience unchanged until it is ready. - **Follow one Topic closely:** Open its notification bell and choose **All Activity**. - **Clear completed coordination:** Use **Archive Topic**; history remains available. **Delete Topic** removes it and its markup for good. ## Create and coordinate ### Choose Topics or another record Use a Topic when named drawing markup and conversation should stay together, possibly across several sheets. Use a comment for a conversation on an existing location or record. Use an RFI, Submittal, or list item when formal status, assignment, response, or workflow history matters. A Topic can contain several comment Threads. The Topic owns the coordination context; each Thread owns one conversation within it. ### Create and share a Topic ![Desktop: The New Topic dialog asks for a title before creating the coordination record.](https://constructable.ai/help-images/collaboration-and-notifications/create-and-share-topic.png) 1. Open **Management Tools** → **Topics**. 2. Select **New Topic**. 3. Enter a specific title and create it. 4. Open **Edit Shared With**. 5. Choose the intended audience and add specific people. 6. Add sheets, markup, and conversations as needed. A new Topic starts with only its creator. Sharing options are: - **Only me** plus specific people you add - **Anyone at [your company]** plus specific outside people - **Anyone with access to [project name]** Granting project or company access does not mention Bidder-role users. They are notified only when you mention them by name. Share with the smallest audience that can complete the work. Topic sharing does not grant access to connected RFIs, Submittals, drawings, or other records. ### Work with Topic markup and conversations 1. Open the Topic and select **Open in Drawing Viewer**, or open **Topics** from the drawing viewer. 2. Select the active Topic before adding or editing markup. 3. Add comments at the relevant drawing locations. 4. Mention the people who need to respond. 5. Return to the Topic page to review sheets and activity. Unsaved drawing markup may begin in Draft Mode. Save it to a new or existing Topic before leaving the viewer. Markup can be copied or moved between supported Topics and records. Copying preserves the original; moving changes which record owns it. A Thread that turned out to be noise can be removed on its own with **Delete Thread** in the thread's actions menu. That's separate from **Resolve**, which is what you want for a question that got answered — resolving keeps the conversation readable, while deleting means, as the confirmation puts it, all comments in the thread will no longer be accessible. Deleting a Thread needs **Add new comments, edit existing comments**. Use the Topic's notification bell to choose **All Activity**, relevant activity only, or no notifications for that Topic. This personal setting does not change sharing or notify teammates. ## Complete and maintain ### Archive or unarchive a Topic Use **Archive Topic** when coordination is complete or inactive. Archived Topics move to **Archived Topics** and can be unarchived later. Archiving preserves markup, activity, and conversations. It does not resolve the comment Threads within the Topic, and resolving a Thread does not archive the Topic. **Delete Topic** is the other option in that menu, and it's a different thing entirely. Archiving files coordination away where you can still read it; deleting removes the Topic from the list and takes its markup and comment Threads with it. The confirmation spells that out and asks you to confirm the title. There's no restore. So the rule is simple: a Topic that ran its course gets archived, because a year from now somebody will want to know how that conflict got resolved. Delete is for the Topic created by mistake or on the wrong sheet. You'll find both actions in the **⋯** menu — on the Topics index tile, on the Topic itself, and on Topics inside the drawing viewer. ## Access and troubleshooting ### Check Topics access **Topics** appears under **Management Tools** when the organization has the Field package. Viewing, editing, changing sharing, and creating private Topics use separate permissions. A person needs both an applicable Topics permission and inclusion in the Topic's sharing audience. Topics and their conversations work on web and native layouts. Record the drawing viewer and play saved recordings on desktop web, mobile web, or the native app. ### Troubleshoot Topics #### A Topic is missing Confirm the project, check both active and **Archived Topics**, verify the Topic is shared with you, and ask an administrator to check your Topics permissions. #### Drawing markup is missing Confirm the sheet and revision, then check whether the markup remains in Draft Mode or was saved to a different Topic. #### A connected record will not open Topic sharing does not grant access to the connected record. Ask an administrator to check that tool's permission and the record's access. #### A mentioned person received no Topic notification Confirm they can open the Topic and connected content. A mention does not override record access or that person's Topic notification setting. --- # How to use Documents in Constructable > Use this guide to organize project files, control folder access, and prepare files for download or sharing. Documents is the project folder tree; every file inherits access from the folder that contains it. Source: https://constructable.ai/help/documents Use this guide to organize project files, control folder access, and prepare files for download or sharing. Documents is the project folder tree; every file inherits access from the folder that contains it. ## Start here - **Set up a new project:** [Create or import folders](#create-or-import-folders). - **Add project files:** [Upload and open documents](#upload-and-open-documents). - **Control who can see files:** [Manage folder sharing](#manage-folder-sharing). - **Send files to someone:** [Download, link, or package documents](#download-link-or-package-documents). - **Clean up the folder tree:** [Rename, move, or delete content](#rename-move-or-delete-content). - **Something is missing or blocked:** [Troubleshoot Documents](#troubleshoot-documents). ### Common task recipes - **Reuse a standard folder layout:** Select **Actions** → **Import Folder Structure**, choose another project, and import. This copies folders and their permission levels, not files. - **Give a project member live access:** Update the folder's **Edit Shared With** settings, then use **Copy Link**. - **Send a fixed file package:** Select the files and use **Share Selected Download Link**. - **Protect sensitive content:** Put it under a folder whose audience is no broader than the people who need it. ## Set up and organize ### Create or import folders Build the folder tree manually or copy a proven structure from another project. To create folders: 1. Open **Documents**. 2. Select **Actions** → **Add Folder**. 3. Name the folder for the work it will contain. 4. Answer **Who should have access to this folder?**. A new top-level folder starts on **Anyone at [your company]**, so it's shared with your own organization from the moment you make it — narrow it to **Only me** here if the contents are sensitive. Inside an existing folder, the parent's audience constrains what you can pick. 5. Open it and add child folders as needed. 6. Select **Edit Shared With** on any folder to change the audience later. To import a structure: 1. From the Documents root, select **Actions** → **Import Folder Structure**. 2. Choose another project. 3. Select **Import**. 4. Review the imported folder sharing before uploading files. Importing copies folders and permission levels but no files. A folder with the same name as an existing folder is merged rather than duplicated. ### Upload and open documents Add files to a folder, wait for the upload to finish, then open a supported file without leaving Constructable. 1. Open the destination folder. Loose files can't live at the Documents root — if you try, Constructable shows **Files must be uploaded into a folder. Create a folder first, or upload a folder containing files.** 2. Select **Actions** → **Add Documents**, choose files, or drag files and directories onto the page. Dropping a directory creates its folders even when some of those folders are empty. Open the destination folder and use **Actions** → **Add Documents** to upload into it. In the native app, **Add Documents** also appears at the Documents root. 3. Wait for uploads to finish. 4. Select a file name to preview a supported format. 5. If no preview is available, use **Download**. Uploading a file never replaces one that's already in the folder. If the name is taken and the contents are different — a revised vendor acknowledgement, say — we keep both and save the new one as `Name (1).pdf`, then `Name (2).pdf`, and so on. If the file is an exact copy of one you can already see in that folder, it's skipped, so re-dropping a folder after a dropped connection won't double everything up. Folders appear before files and names sort naturally. A filled folder icon means the folder (or a folder inside it) has files; an outline icon means it's empty. The icon doesn't show a count — open the folder to see what's inside. On desktop, the table also shows **Shared With**, **Last Modified**, and **Size**. Folder actions are temporarily unavailable while uploads are running. PDFs open in a viewer inside Constructable rather than sending you off to a browser tab — on desktop it takes the right half of the screen, and on a phone or tablet it fills it. On the native iOS app, tapping an http(s) PDF link outside the drawing viewer opens the file in the device's viewer instead of that in-app panel; Android and desktop web still use the in-app viewer. The header shows the file name and which page of how many you're on, and the toolbar carries **Pan**, **Select text**, **Zoom out**, **Fit to width**, **Zoom in**, **Download PDF**, and **Open in new tab**. **Select text** lets you drag across the document's text and copy it instead of retyping a clause or a part number, and interactive form fields in the file render as they were authored. Press **Escape** or close the panel to get back to what you were doing. Navigating to another page closes it too, so you won't come back to a leftover document covering the next screen. This is the same viewer that opens when you follow a PDF link anywhere else in the product, so a specification or a signed contract referenced from another record behaves the same way. ### Manage folder sharing 1. Open the folder. 2. Select **Edit Shared With**. 3. Choose **Only me**, **Anyone at [your company]**, or **Anyone with access to [project name]**. 4. Add specific people when needed. 5. Select **Update Folder Sharing**. Changing a folder's sharing also updates its subfolders and files. A parent folder's audience limits how private a child can be; if the parent is shared with the entire project, a child cannot be made private. > **Note:** **Copy Link** does not grant access. The recipient still needs permission to the live folder or file. ## Share and maintain ### Download, link, or package documents - Use a file's **Download** action for the original file. - Use **Download All** for a folder's contents. - Select rows and use **Download Selected** for a subset. - Use **Copy Link** for live content that the recipient already has permission to open. - Select rows and use **Share Selected Download Link** to generate a fixed package and copy its link. A generated package is a snapshot. Create a new package after the source files change. ### Rename, move, or delete content - Use **Rename** to correct a file or folder name. - Select rows and use **Move Selected** to relocate content. - Use **Delete** on a row, or select rows and use **Actions** → **Delete Selected** to clear out several at once. Moving content can change who sees it because it takes on the destination folder's sharing. Deleting a folder also deletes all of its files and subfolders, and it's gone — there's no restore in the product. Deleting is a separate permission from everything else in this list. **Add, rename, move, and change sharing for documents** covers uploading and reorganizing; **Delete documents and folders** is what removes things. So a role that can build out the whole folder tree may still find **Delete** missing or greyed out, and the tooltip says which case you're in: **You do not have permission to delete documents**, **You can only delete documents and folders you created**, or, for a folder, **You can only delete this folder if every item inside was also created by you**. That last one catches people. If your access level is **Only documents and folders I created**, a folder you made but that other people have uploaded into is not yours to delete — remove your own items or ask someone with **All documents and folders** to do it. > **Warning:** Bulk delete confirms with a count rather than a list — **Are you sure you want to delete {count} items? Folders and their contents will also be deleted.** A single selected folder can take hundreds of files with it. Check what's selected before confirming. ## Troubleshooting ### Troubleshoot Documents #### A folder or file is missing Confirm the project and parent folder, then ask whether the folder is shared with you, your organization, or the whole project. If a copied link shows access denied, ask the folder manager to change sharing; allow up to one minute for the update. #### An upload failed Use **Retry**. If one file repeatedly fails, confirm it opens locally and upload it again. Wait for active uploads before moving or renaming folders. #### A file will not preview Not every format has an in-app preview. Use **Download** to open it in its normal application. #### Delete is missing or greyed out Deleting needs **Delete documents and folders**, which your role can be missing even when you can upload and rename freely. If it's greyed out rather than absent, read the tooltip: your deletion access is limited to items you created, and for a folder that means every item inside has to be yours too. #### A package is still preparing Folder and selected-content packages are generated before they are available. Keep the progress dialog open. If generation fails, retry with a smaller selection. --- # How to use Specs in Constructable > Use this guide to turn specification PDFs into a published set that the project team can browse by division and section. It covers importing, reviewing, publishing, finding, exporting, and replacing specification content. Source: https://constructable.ai/help/specs Use this guide to turn specification PDFs into a published set that the project team can browse by division and section. It covers importing, reviewing, publishing, finding, exporting, and replacing specification content. ## Start here - **Issue a specification book:** [Import, review, and publish a spec book](#import-review-and-publish-a-spec-book). - **Correct detected structure:** [Manage divisions and sections](#manage-divisions-and-sections). - **Find or send specifications:** [Browse, download, and share specifications](#browse-download-and-share-specifications). - **Issue an addendum or replacement:** [Replace, unpublish, or delete content](#replace-unpublish-or-delete-content). - **Something is missing:** [Troubleshoot Specs](#troubleshoot-specs). ### Common task recipes - **Publish a base specification:** Import the PDF, review every detected section boundary, publish it, then spot-check the published view. - **Issue an addendum:** Import and publish the newer book. When it contains the same division and section number, its version becomes current. - **Send selected sections:** Select the published sections, then use **Download Selected Sections** or **Share Download Link**. - **Remove a book from the current set without deleting it:** Use **Unpublish Spec Book**. ## Prepare and publish ### Understand the Specs lifecycle **Spec book PDF → review divisions and sections → publish → browse or export** - A spec book is the imported source PDF. - Divisions and sections define the page ranges people browse. - An unpublished book is visible for review to Specs managers. - Publishing makes its defined sections available in the normal Specs view. - If a newer published book contains the same section number in the same division, the newer version is shown. This allows addenda to supersede individual sections. ### Import, review, and publish a spec book ![Desktop: The Specs page lists numbered sections beneath a division and provides the Add/Edit Spec Books action.](https://constructable.ai/help-images/specs/import-review-publish.png) 1. Open **Specs** and select **Add/Edit Spec Books**. 2. Select **Import Spec Book**. 3. Add one or more source files and select **Upload**. 4. Open the imported book marked for review. 5. Check division names, section numbers and titles, and the first page assigned to each section. 6. Add, rename, reorder, or delete divisions and sections as needed. 7. Select **Publish Spec Book**. 8. Return to the normal Specs page and spot-check several sections. Publishing changes what the team can browse; it does not alter the source PDF. ### Manage divisions and sections ![Desktop: The Specs page organizes numbered sections under divisions and provides search, selection, and section-detail controls.](https://constructable.ai/help-images/specs/manage-divisions-sections.png) Use edit mode to add or rename divisions and sections, set section numbers and titles, assign each section's starting page, reorder the structure, or remove obsolete content. Accurate boundaries determine which pages open and which pages appear in selected-section exports. Edit a wrong name or boundary rather than deleting the section. > **Note:** Deleting a division deletes every section beneath it. Deleting a section removes it from browsing and exports. Neither action can be undone. ## Browse and distribute ### Browse, download, and share specifications 1. Open **Specs**. 2. Expand a division and select a section. 3. Read the section in the PDF viewer. 4. Select sections when you need a subset. 5. Use **Download Selected Sections** or **Share Download Link**. Use **Download All Specs** to export the entire published set. Exports contain published pages only; books still under review are excluded. On phones and native devices, open the navigation control to browse divisions and sections. ### Replace, unpublish, or delete content - **Edit** when a title, division, section, or page boundary is wrong. - **Import Spec Book** and publish the newer book when issuing replacement sections or an addendum. - **Unpublish Spec Book** when its sections should leave the published set but the source book should remain available for review. - **Delete Spec Book** only when the book should be removed from the project permanently. After unpublishing or deleting, check the normal Specs view. Sections disappear when no other published book supplies them. ## Troubleshooting ### Troubleshoot Specs #### The Specs page is empty Confirm the book finished importing, was published, and has sections with page boundaries. Regular viewers see published content, not books awaiting review. #### A management action is missing Confirm your role has **Create, update, or delete specs**. Use the division and section management controls to organize specs. #### A section opens on the wrong page Open the book for editing and correct that section's starting page, then verify it in the normal Specs view. #### A download or share package is taking time Packages are generated before download or sharing. Keep the progress dialog open. If generation fails, retry with fewer sections. --- # How to use RFIs in Constructable > An RFI is how a question stops being a hallway conversation and becomes part of the project record. You write the question, route it to the people who can answer it, track who owes you a response, accept the answer that counts, and distribute the closed record to everyone who... Source: https://constructable.ai/help/rfis An RFI is how a question stops being a hallway conversation and becomes part of the project record. You write the question, route it to the people who can answer it, track who owes you a response, accept the answer that counts, and distribute the closed record to everyone who needs it. Start with the role that matches your work, or jump straight to the task in front of you. ## Start here - **I manage RFIs:** [Create and open an RFI](#create-and-open-an-rfi) → [Review and accept responses](#review-and-accept-responses) → [Close and distribute](#close-and-distribute-an-rfi). - **I answer RFIs:** [Find RFIs assigned to you](#find-and-track-rfis) → [Respond](#respond-to-an-rfi). - **I need a formal record:** [Choose distribution attachments](#manage-rfi-attachments-and-drawing-links) → [Download a PDF](#download-and-report-on-rfis). - **Something is missing or blocked:** Start with [Troubleshooting RFIs](#troubleshoot-rfis). ### Common task recipes - **Send a new question:** Select **New RFI**, complete the draft, assign the manager, respondents, subscribers, and due date, then select **Open RFI**. - **Turn an answer into the official response and finish the RFI:** Find the response, select **Accept and Close RFI**, then choose attachments and recipients in the close-and-distribute flow. - **Turn an answer into the official response but keep working:** Choose **Accept Without Closing RFI** from the menu beside it. - **Correct a closed RFI:** Select **Reopen RFI**, make the permitted change, and close or distribute it again. - **Escalate overdue work:** Confirm the **Current Ball-In-Court**, then select **Send Reminder Notification**. ## Create and route ### Create and open an RFI Start with a Draft when you want the question and the routing right before anyone gets notified. Opening the RFI is what makes it active: it picks up its number, and respondents can start answering. ![Desktop: Start a new RFI by naming it, choosing the manager, and creating the Draft.](https://constructable.ai/help-images/rfis/creating-and-opening-an-rfi-form.png) 1. Open **RFIs**. 2. Select **New RFI**. 3. Enter a clear subject and question. 4. Set the manager, respondents, subscribers, and due date. 5. Record cost or schedule impact when known. 6. Add question attachments and drawing references as needed. 7. Review the Draft. 8. Select **Open RFI**. 9. In **Confirm Open RFI**, select **Yes, Open RFI**. > **Note:** Opening notifies respondents and subscribers and places the ball in respondents' court. The record receives its active number at this point, so don't go looking for a number while it's still a Draft. > **Pro Tip:** Do the routing work while it's still a Draft. Opening notifies people immediately, so it's better for respondents to arrive at a complete question with a manager and a due date than at a half-finished one. The project's default manager and subscribers come from **RFI Settings**. Open **Project Settings** → **General** → **RFI Settings**, or **RFIs Menu** → **RFI Settings**. Changing those defaults needs **Add new RFIs, make changes to existing RFIs, open and close RFIs**. #### I don't see **Open RFI**. What's wrong? The record has to be a Draft, and you need full RFI write access. Limited draft access lets you prepare your own draft but doesn't include the open-and-close workflow. #### What's the difference between a respondent and a subscriber? Respondents are the people who can answer the question, and opening the RFI puts the ball in their court. Subscribers follow the activity without being responsible for the next response. Once it's open, the question is on the record and the answer has an owner. ### Manage participants, due dates, and ball-in-court An RFI stalls when nobody's certain whose turn it is. The participant fields and **Current Ball-In-Court** are where you put a name on the next action, so the question can't quietly sit for three weeks with everyone assuming somebody else has it. ![Desktop: An Open RFI shows its manager, respondents, subscribers, due date, and Current Ball-In-Court together.](https://constructable.ai/help-images/rfis/managing-participants.png) - Choose a **Manager** who will evaluate responses and complete the RFI. - Choose one or more **Respondents** who can answer the question. - Add **Subscribers** who should follow updates without being responsible for the next action. - Use the due date for tracking; it doesn't change status on its own. - Read **Current Ball-In-Court** under Responses to see who owes the next move. - Select **Reassign** next to it to hand that over to someone else. - Select **Send Reminder Notification** on an Open RFI to nudge whoever currently has the ball. > **Note:** Changing ball-in-court moves responsibility and nothing else. It doesn't accept a response and it doesn't close the RFI. #### I added a respondent. Why didn't they get an email? Adding a respondent always creates an assignment notification for them in Constructable. Whether an immediate email goes out on top of that is up to their own notification settings, and we batch immediate emails for up to fifteen minutes before sending, so one can land noticeably later than the in-app notification. If they can't reach the RFI at all, no email is sent — check their RFI access before you chase the email. #### Does the due date do anything on its own? No, it's for tracking. When a date slips past, confirm the **Current Ball-In-Court** and select **Send Reminder Notification** on the Open RFI. Get these fields right and nobody has to ask who's holding the question. ### Manage RFI attachments and drawing links The person reading this RFI months from now won't have the context you have today. Question attachments and response attachments keep the evidence on the record, and they're exactly what you'll choose from when you build the distribution package. Add question attachments when recipients need more context to understand what you're asking. The two kinds of attachment live in different places: response attachments stay with the individual response, while question attachments stay with the RFI. When you close the RFI, you can choose from both sets for the distribution package. RFIs can also be connected to drawing locations. A drawing link gives someone the context of where the question lives, but it isn't a substitute for the RFI's own attachments, and it doesn't bypass permission checks on the linked record. > **Note:** Only attachments from that RFI can be selected for distribution. If a file matters to the closeout package, it needs to be on this record. > **Pro Tip:** When a formal package matters, verify the marked-up sheet and the selected files before you download or distribute. It's much easier than reissuing a package that went out missing a sheet. #### What's the difference between a question attachment and a response attachment? Question attachments belong to the RFI itself and support the question you're asking. Response attachments belong to the individual response that carries them. At close, you can pull from both sets. #### Can I include a file from a different RFI in the package? No. Only attachments from that RFI can be selected. Do this and the closed record explains itself without anyone hunting for the file that proves it. ## Respond and complete ### Find and track RFIs Whether you're chasing an answer or checking whether one landed, start on the RFIs page and narrow from there. Once you're on the record, a handful of fields tell you where it stands and who owes the next move. Open **RFIs**, then use the status views, search, and table or panel view to narrow the list. ![Desktop: Use the RFI status tabs and search controls to narrow the project list.](https://constructable.ai/help-images/rfis/finding-and-tracking-rfis-list.png) Once you find the record, review: - Status and due date - Manager, respondents, and subscribers - **Current Ball-In-Court** - Pending respondents - Response and activity history > **Pro Tip:** Need to look across projects rather than inside one? Organization reports include an **All RFIs** view. It shows you only the RFIs you could already open project by project, so the totals there won't match a colleague's if your access differs. #### An RFI I know exists isn't in the list. Where is it? Start with the obvious: confirm you're in the intended project and that a status view or search isn't hiding it. If it still doesn't appear, ask an administrator to check **View RFIs** and its access level. Drafts are the common surprise — with restricted access you only see drafts your own company created. Between the status views and the ball-in-court field, you can tell at a glance which RFIs are waiting on you. ### Respond to an RFI Respond when you have enough information to answer the question or provide the next piece of project direction. Your response and any supporting files become part of the RFI's history, so write it for whoever reads it later. ![Desktop: An Open RFI response area lets the assigned respondent enter an answer and add supporting attachments.](https://constructable.ai/help-images/rfis/response-and-accept.png) 1. Open the RFI. 2. Review the question, impacts, due date, and attachments. 3. In **Responses**, select **Respond**. 4. Enter the response and add supporting attachments. 5. Submit the response. > **Note:** You can edit or delete your own response while it's unaccepted, the RFI is still Open, and you still have **Respond to RFIs**. People with **Delete RFIs** can **Delete Response** on someone else's open, unaccepted response; they do not get **Edit Response** on that response. After a response is accepted or the RFI closes, a correction means coordinating a reopen — which is deliberate, because it keeps the original answer visible in the project history. #### Why can't I see **Respond**? The RFI has to be Open or otherwise respondable, and you need **Respond to RFIs**. Responses can't be added to a Closed or Cancelled RFI. #### I answered the wrong question. Can I take it back? While the RFI is Open and your response hasn't been accepted, yes — edit or delete it yourself if you're the author. A manager or admin with **Delete RFIs** can delete someone else's unaccepted response the same way. Once it's accepted or the RFI has closed, ask the manager to reopen it rather than trying to erase the original answer. Submit it and the project has your answer in writing, attached to the question that prompted it. ### Review and accept responses When an answer comes back you have two decisions to make, and they're separate: is this the official answer, and is the question finished? Constructable gives you a button for each combination. - Select **Accept and Close RFI** to mark it **Official Response** and go straight on to close and distribution. This is the normal path when the answer settles it. - Open the adjacent menu and select **Accept Without Closing RFI** when the answer is right but the team still has coordination to finish. - While the RFI remains Open, use **Mark as not official response** to take the acceptance back. Only one response can be the Official Response. Several people may weigh in and every reply stays on the record, but the one you accept is the answer the field builds to and the one that shows up in the closeout package. > **Note:** Accepting a response doesn't send a distribution email by itself. If people outside the RFI need the answer, that happens in the close-and-distribute flow. #### I accepted the wrong response. Can I undo it? Yes, as long as the RFI is still Open. Use **Mark as not official response**, then accept the right one. #### Why is **Accept and Close RFI** missing? The response must not already be official, the RFI must be Open, and you need **Accept a response to an RFI**. Closing and distribution also require RFI write access, so you may be able to accept without being able to close. Accept the right answer and the project has a single, findable statement of direction. ### Close and distribute an RFI Close the RFI when the question has been resolved and you're ready to preserve the final record. The distribution steps let you choose exactly which attachments are included and exactly who receives them. ![Desktop: Step one of Close and Distribute RFI selects question and response attachments for the final record.](https://constructable.ai/help-images/rfis/close-and-distribute.png) 1. Select **Close RFI**. The dialog that opens is titled **Close and Distribute RFI**. 2. Choose the question and response attachments to distribute. 3. Select **Continue to Step 2: Recipients**. 4. Review recipients. We preselect every subscriber and respondent from outside your organization, since they're the people who usually need the answer in writing. Add or remove anyone. 5. Select **Continue to Step 3: Review**. 6. Keep **Send email** selected to edit the subject, body, and attachments, or clear it to close without sending anything. 7. Select **Close and Distribute RFI**. Closing changes the status to Closed, clears ball-in-court, and records the distribution. Later, use **Distribute RFI** or **Redistribute RFI** to issue a package again. > **Note:** With **Send email** selected, you need at least one recipient, plus a subject, a message with text in it, and the RFI link merge field. If the flow won't let you continue, that's usually one of those four. #### Can I close an RFI without emailing anyone? Yes. Clear **Send email** on the review step. The RFI still closes and the distribution is still recorded — you just don't send the message. #### If I redistribute later, does the close date change? No. Redistributing a closed RFI creates a new distribution record without changing the original closed time. Close it this way and the question, the accepted answer, and the package you sent all sit in one defensible record. ### Reopen, change status, or delete Sometimes a closed RFI turns out to need a correction, or a draft was created by mistake. You can reopen, move a record between statuses, rename it, or delete it — and only one of those is a one-way door. - **Reopen RFI** returns a Closed RFI to Open. - **Move to Draft**, **Move to Open**, and **Move to Closed** change the status directly, and you can move freely between those three. Moving to Draft strips the active number. When work genuinely needs to resume on a Closed RFI, **Reopen RFI** says so more clearly than **Move to Open**. - **Rename RFI** changes the subject while the record is editable. - **Delete RFI** is the one-way door. Read on before you use it. #### What deleting an RFI actually does The menu says delete and the confirmation says "This action cannot be undone," which is true, but it doesn't quite describe what happens. Nothing is erased. The RFI's status changes to **Cancelled**, its number is stripped away, and the record drops out of the Draft, Open, and Closed views — but the question, every response, and the full activity history are all still there under the Cancelled status, where anyone with RFI access can read them. What you can't do is bring it back. **Move to Draft**, **Move to Open**, and **Move to Closed** all disappear once an RFI is Cancelled, and no one — including an administrator — can return it to the active workflow. If that RFI recorded direction the project relied on, you now have a permanent record you can't reopen and can't correct. So the practical rule is: delete drafts nobody needed, and reopen anything else. Draft and active RFIs use separate delete permissions for exactly this reason, so being able to clear your own drafts doesn't mean you can delete an active RFI. > **Pro Tip:** When a Closed RFI documents project direction, reopen and correct it. The correction stays visible in the history, which is what makes the record worth having. #### Should I use **Reopen RFI** or **Move to Open**? Both put a closed record back into Open. **Reopen RFI** is the clearer choice when work genuinely needs to resume, because the intent is obvious to everyone reading the record later. #### I deleted an RFI by mistake. Can I get it back? Not through Constructable. Its status is Cancelled and there's no path back to Draft, Open, or Closed. You can still read everything on it — filter the RFIs page by Cancelled — but if the question still needs answering, open a new RFI and reference the old one in the question. Handled this way, corrections stay visible instead of leaving a gap where an answer used to be. ## Share and report ### Download and report on RFIs When someone needs an RFI outside the record itself — an owner, a designer, a closeout binder — you have a few ways to hand it over. Choose based on whether the reader can sign in and whether they need one RFI or the whole register. - **Download PDF** builds a PDF of the single RFI, with options for what to include. Right for an owner or a designer who can't sign in. - **Copy Link** hands you an in-app URL. Right for a colleague who already has project access. - The project RFI report gives you a filtered register for this project. Right for a status meeting. - **All RFIs** does the same across every project in the organization. Right for portfolio review. - **Export RFIs**, in the settings menu on the RFIs page header, builds a ZIP of the whole register through Closeout. Right when someone wants every RFI as files rather than a table. It needs **Generate closeout packages**, and the finished archive lands on the project's Closeout page. - Closeout packages pull RFIs in automatically alongside everything else. Right at the end of the job, and nothing you have to do here. > **Note:** Sharing a link doesn't grant access. If the person on the other end can't already open the RFI, the link won't change that — they need access on the project. > **Note:** A generated PDF captures the RFI at that moment. If the RFI or its selected attachments change afterward, the file you're holding is out of date. Download it again. #### My PDF is missing something I expected to see. Why? Generate a new PDF after any change, then check the download options and the attachments you selected. Drawing markup and linked-topic content can also depend on your own access to the linked records, so a colleague's PDF may not look identical to yours. #### What's the difference between the project RFI report and **All RFIs**? The project report covers one project. **All RFIs** covers every project in the organization, and it still only shows you RFIs you already have access to, so two people can open the same report and see different totals. Pick the right one and the people who need the answer get it in a form they can actually open. ### Using RFIs on drawings, in meetings, and on mobile RFI questions rarely come up on the RFIs page. They come up standing at a sheet, sitting in a coordination meeting, or out in the field on a phone. Here's how RFIs show up in each of those places. On a drawing, an RFI pin puts the question at the exact spot on the sheet it's about. Select the pin and you can read the question, follow the responses, or open the full RFI — all of which needs RFI access, not just drawing access. In a meeting, add the smart **Open RFIs** section to your agenda and it fills itself in, picking up open and newly opened RFIs right up until the meeting is finished. The agenda reflects what's still unanswered at the moment you walk into the room instead of what was unanswered when somebody built it last Tuesday. > **Note:** Starting the meeting drops already-closed items out of that agenda copy. Only the agenda changes — the source RFI is untouched. On a phone, you get RFI actions on both mobile web and the native app, folded into menus to fit the screen. Use attachment selection, reporting, and distribution controls for detailed document review; on smaller screens, check the actions menu. For the drawing-viewer workflow, see [Creating and viewing RFIs from drawings](https://constructable.ai/help/drawings#creating-and-viewing-rfis-from-drawings). #### Can I do everything from my phone? The actions are there on both web and native, just folded into menus on smaller screens. Use attachment selection, reporting, and distribution controls for detailed document review; on smaller screens, check the actions menu. #### Will an RFI opened after the agenda was built still show up? Yes. The smart **Open RFIs** section keeps adding open and newly opened RFIs until the meeting is finished. Work this way and the RFI meets people where the question came up instead of making them go find it. ## Troubleshooting ### Troubleshoot RFIs Most RFI problems come down to one of three things: a package or permission you don't have, a status that blocks the action you're looking for, or a PDF generated before the change you're expecting to see. Find your symptom and work through the checks in order. #### RFIs or an RFI are missing 1. Confirm the organization has the Project Management package. 2. Confirm you are in the intended project. 3. Ask an administrator to check **View RFIs** and its access level. 4. For a Draft, confirm your company created it or request full read access. 5. If somebody deleted it, filter the RFIs page by the Cancelled status — deleted RFIs are still there, just without their numbers. #### **Open RFI** is missing The record has to be a Draft, and you need full RFI write access. Limited draft access lets a creator prepare a draft but doesn't grant the full open-and-close workflow. #### **Respond** is missing Confirm the RFI is Open or otherwise respondable and that you have **Respond to RFIs**. Responses can't be added to Closed or Cancelled RFIs. #### **Accept and Close RFI** is missing The response must not already be official, the RFI must be Open, and you need **Accept a response to an RFI**. Closing and distribution also require RFI write access. #### Distribution cannot continue When **Send email** is selected, choose at least one recipient and keep a subject, a message with text, and the RFI link merge field. Clear **Send email** only when you want to record the distribution without sending an email. #### A PDF does not show expected material Generate a new PDF after changes. Review the download options and selected attachments. Drawing markup and linked-topic content can also depend on your access to the linked records. --- # How to use Submittals in Constructable > Use this guide when you know what needs to happen on a submittal and need the exact path through Constructable. It covers setup, creation, review, distribution, revisions, downloads, notifications, and the actions available at each stage. Source: https://constructable.ai/help/submittals Use this guide when you know what needs to happen on a submittal and need the exact path through Constructable. It covers setup, creation, review, distribution, revisions, downloads, notifications, and the actions available at each stage. ## Start here - **Create and send a submittal for review:** [Create and open a submittal](#create-and-open-a-submittal). - **Submit or review documents:** [Find submittals and follow-up work](#find-submittals-and-follow-up-work), then [respond to an approval stage](#respond-to-an-approval-stage). - **Issue the reviewed package:** [Close and distribute a submittal](#close-and-distribute-a-submittal). - **The package needs another review:** [Revise and resubmit](#revise-and-resubmit). - **Download or report on the log:** [Download, report, and bulk edit](#download-report-and-bulk-edit). - **Something is missing or blocked:** [Troubleshoot submittals](#troubleshoot-submittals). ### Common task recipes - **Request a contractor submission:** Create the Draft, assign the responsible contractor, select **Request Submission**, confirm the generated stages, then select **Open Submittal**. - **Use a standard approval chain:** Select **Apply Template**, choose a configured template, verify each stage, and open the submittal. - **Issue the completed package:** Select **Close and Distribute Submittal**, choose documents and recipients, set **Official Status**, and send or record the distribution. - **Request another version:** Select **Revise and Resubmit**, complete the new Draft revision, then open it. - **Export one record:** Select **Download PDF** and choose the submittal and approver documents to include. ## Set up and create ### Configure submittal settings and templates Configure project defaults when your team repeatedly uses the same manager, numbering, or approval path. Open **Project Settings** → **General** → **Submittal Settings**, or open **Submittals**, select **Submittals Menu**, then select **Submittals Settings**. Both paths land on the same page. Use the settings page to manage: - **Default manager** and **Default subscribers** — both pickers list the Project Team - Numbering, including whether the spec section appears before the submittal number - Numeric or lettered revision labels - Approval templates - Submittal packages Approval templates create a repeatable review path. Build the stages and approvers once, then select **Apply Template** on a Draft. If the Draft already has stages, **Change Template** replaces them and **Clear Template** removes them. Each stage's due days count from a different starting point, and the field label tells you which. The first stage reads **Due Days After Creation**; every stage below it reads **Due Days After Previous Stage**. The days stack rather than all running from the same date, so a three-stage template of 7, 5, and 5 puts the last approver's due date 17 days out, not 5. Applying the template sets those dates relative to the day you apply it. > **Note:** You can't replace a template after an approver responds. Existing review history remains attached to its original stages. Open Submittal settings with the permission to create and manage submittals. ### Create and open a submittal Create a Draft while you assemble the documents and approval path. Opening the submittal assigns its active number and starts the review workflow. 1. Under **Management Tools**, open **Submittals**. 2. Select **Draft Submittal**. 3. Enter the title and the project details your reviewers need, including the type, spec section, package, manager, responsible contractor, and due dates. 4. Add the files being submitted under **Submittal Document(s)**. 5. Build stages manually, select **Request Submission**, or select **Apply Template**. 6. Verify each approver, stage due date, and approval condition. 7. Select **Open Submittal**. 8. In **Open Submittal for Approvals**, select **Yes, Open Submittal**. The first current stage is notified when the submittal opens. Later approvers are notified when their stage becomes current. > **Note:** Someone with only **Create draft submittals** can prepare their own Draft but can't open it for approvals. A manager with full submittal write access must open it. ### Build the approval path Approval stages determine who responds and when. The incomplete stage with the earliest due date is current; later stages wait until it is complete. ![A completed approval stage keeps its due date, approver, and response together in the Submittal history.](https://constructable.ai/help-images/submittals/building-approval-stages.png) - Select **Add Stage** to add a review stage. - Select **Request Submission** when no stages exist to create a submission stage for the responsible contractor followed by a review stage for the manager. **Request Submission** needs a **Responsible Contractor** first; otherwise you'll see **Set a Responsible Contractor before requesting submission.** - Add at least one approver or submitter to every stage. - Set the stage due dates in the order the review should run. - Select **All approvers/submitters in this step must respond** when every person in the stage must answer. Leave it clear when one response can complete the stage. You can delete an unanswered stage. Once a response exists, the stage and its history remain on the record. ### Manage details, documents, and comments Keep the scope, files, and coordination on the same submittal so reviewers can understand the request without reconstructing an email thread. ![The Submittal overview shows scope, participants, due dates, Ball-In-Court, and the active approval stage.](https://constructable.ai/help-images/submittals/managing-overview.png) The overview includes the title, description, spec section, type, **Package/Category**, manager, responsible contractor, due dates, subscribers, and **Ball-In-Court**. The files being reviewed appear in **Submittal Document(s)** inside the description area. Approvers can attach response documents with their decision. During distribution, the manager chooses which source and response documents become part of the issued package. > **Note:** A comment supports discussion but doesn't count as an approval response. The stage advances only from a submitted response. ## Review and follow up ### Find submittals and follow-up work Use the Submittals page to find records waiting on you or another reviewer. Switch between Panel and Table views from **Submittals Menu**. ![The Open Submittals view shows current stages, due dates, Ball-In-Court, search, and filter controls.](https://constructable.ai/help-images/submittals/finding-ball-in-court.png) Panel view groups Open records and includes **My Ball-In-Court**. Table view provides broader filtering and bulk actions. Open a submittal to see the current stage and the people listed under **Ball-In-Court**. For an Open submittal, a manager with write access can select **Send Reminder Notification**. > **Note:** The visible status tabs are Draft, Open, and Done. A deleted submittal is Cancelled and no longer appears in those views. ### Respond to an approval stage Respond from your row in the current stage after reviewing the submitted files and any earlier responses. ![The active approval stage shows response choices, comments, and response-document controls.](https://constructable.ai/help-images/submittals/approval-response.png) 1. Open the submittal. 2. Review **Submittal Document(s)**, earlier responses, comments, and the due date. To have Constructable compare the package against the project's specs and drawings first, run **PreCheck** from the command palette — see [PreCheck a submittal](https://constructable.ai/help/chat#precheck-a-submittal). 3. In the current stage, select **Respond**. 4. Choose **Reviewed**, **No Exceptions Noted**, **Approved As Noted**, **Revise And Resubmit**, **Rejected**, **For Record**, or **Submitted**. 5. Add a comment and response documents as needed. 6. Submit the response. The stage advances only when its approval condition is met. If every approver must respond, it remains current until all responses are submitted. Selecting **Revise And Resubmit** records your review decision; it does not create a new revision. The manager uses the separate **Revise and Resubmit** action after review. While the submittal is Open, your completed row offers **Change My Response**. A user with **Respond to submittals as another person** can record a response on behalf of an approver; the activity history identifies who entered it, and their row shows **Respond for {{name}}**. > **Note:** Being named as an approver isn't enough on its own. Without **Respond to submittals**, **Respond** doesn't appear on your row at all — you can read the submittal and its documents, but the stage waits on you with no way to answer. If you're staring at a stage that's yours and no button, that's the permission to ask your Admin about. ### Understand statuses, stages, and Ball-In-Court Use status to understand the record and **Ball-In-Court** to understand who owes the next action. - **Draft:** The manager is preparing the record and approval path. - **Open:** The approval workflow is active. - **Done:** Review is finished or the record was moved to completion. - **Cancelled:** The submittal was deleted and can't return to the active workflow. During review, pending people in the current stage have **Ball-In-Court**. When all stages are complete, or when no stages exist, it returns to the manager. **Done** and **Official Status** are different. Done describes the workflow state. Official Status records the result issued during distribution. ### Check access and platform availability Submittals are available when the organization has the Project Management package. They aren't in the Field package, so the **Submittals** tool, drawing pins, and Dashboard widgets stay hidden there even if a role grants Submittal permissions. A user's role then controls which actions appear. - **View submittals** shows the log and records allowed by the configured access level. - **Create draft submittals** allows a user to create and edit their own Draft. - **Create new submittals, make changes to existing submittals, distribute and redistribute** controls the full management workflow. - **Respond to submittals** allows a current approver or submitter to answer. - **Respond to submittals as another person** allows an authorized user to record another person's response. - **Delete draft submittals** and **Delete submittals** control deletion for different record states. Viewing, responding, reminders, revisions, and PDF downloads are available in web and native layouts. Use project settings, approval-template administration, bulk actions, and distribution controls to manage the workflow. In compact layouts, check the actions menu. ### Understand submittal notifications Notifications follow the active work instead of notifying every participant at once. - Opening a submittal notifies the people in the first current stage. - Completing a stage moves **Ball-In-Court** and notifies the next stage. - Responses are recorded in activity and notify the manager and subscribers. - **Send Reminder Notification** follows up on an Open submittal. - Distribution emails go only to the recipients selected in the distribution dialog. Approvers in later stages should not expect an opening notification. Their notification arrives when the earlier stages finish and their stage becomes current. ## Complete and issue ### Close and distribute a submittal Close and distribute when review is finished and you are ready to issue the official result and selected documents. ![Step one of Close and Distribute Submittal selects source and approval-stage attachments for distribution.](https://constructable.ai/help-images/submittals/close-and-distribute.png) 1. Select **Close and Distribute Submittal**. On a Done record, the action is **Distribute Submittal**; after a prior distribution, it is **Redistribute Submittal**. 2. Choose the source and response attachments to issue. 3. Select **Continue to Step 2: Distribution**. 4. Review the recipients. The responsible contractor, external subscribers, and external approvers are preselected. 5. Select **Continue to Step 3: Review**. 6. Set **Official Status**. 7. Review **Send email**, the subject, message, merge fields, and attachments. 8. Select **Close and Distribute**, or clear **Send email** and select **Close**. Closing moves the submittal to Done and records the distribution. The Official Status defaults to the most severe response in the latest stage that has responses, but the manager can change it before issuing the package. **For Record** is the lowest-severity status — use it when the package is being issued for the file, not as a review decision. > **Note:** **Revise And Resubmit** is an approver response and an Official Status. **Revise and Resubmit** is the separate action that creates a Draft revision. Redistributing creates another distribution record and preserves earlier distributions. Once it's issued, everyone who can view the submittal — subcontractors, consultants, and owners included — sees the **Distributed** or **Redistributed** card at the top of the record with the Official Status stamp and the attachments that went out. The **Distribution Message** itself, with the email that was sent, only shows for people with full submittal write access. ### Revise and resubmit Create a revision when reviewed material needs another pass. This preserves the earlier responses and distributions on the version where they occurred. 1. Open the latest revision of a non-Draft submittal. 2. Open the actions menu and select **Revise and Resubmit**. 3. Complete the documents and approval stages on the new Draft revision. 4. Select **Open Submittal** when the next review is ready. Each revision can have only one live revision after it. On an earlier revision, **Revise and Resubmit** is disabled with **Only the latest revision can be revised and resubmitted** — switch to the latest one first. A double-click or a teammate revising at the same moment won't create a second Draft. Creating the revision moves the parent submittal to Done. The new Draft prepends a contractor submission stage and puts Ball-in-Court on the **Responsible Contractor** when one is set. On desktop, use **Select Revision** to move between versions. In the native layout, select **Switch to Revision…**. Revision labels follow the project's numeric or letter setting. ### Use the actions menu The actions menu changes with the submittal status, your permissions, and whether you are viewing the latest revision. - **Open Submittal** starts approvals from a Draft. - **Close and Distribute Submittal**, **Distribute Submittal**, or **Redistribute Submittal** issues the reviewed package. - **Send Reminder Notification** follows up while the submittal is Open. - **Revise and Resubmit** creates a linked Draft revision from the latest revision. - **Move to Draft**, **Move to Open**, and **Move to Done** change status without running the guided opening or distribution flow. - **Copy Link** copies a direct link to the record. - **Download PDF** exports the selected submittal documents. - **Delete Submittal** permanently removes the latest revision from active use. On desktop, revision selection appears as **Select Revision**. In the native layout, use **Switch to Revision…**. ### Change status or delete a submittal Use direct status actions to correct a record that entered the wrong phase. Use the guided opening and distribution actions for normal work because they include the expected workflow and notification steps. - **Move to Draft** is available from Open. - **Move to Open** is available from Draft or Done. - **Move to Done** is available from Draft or Open. **Delete Submittal** is permanent. The dialog warns that the action can't be undone. Deletion changes the record to Cancelled, removes its number, disconnects it from its revision chain, and removes it from the Draft, Open, and Done views. Only the latest revision can be deleted. Draft and non-Draft records require their respective delete permissions. ## Export and connected work ### Download, report, and bulk edit Choose the export that matches whether you need one review package, the visible table, or the complete project log. - On a submittal, select **Download PDF** and choose the source and response documents to include. - In Table view, select **Download Table as PDF** or **Download Table as CSV**. - From **Submittals Menu**, select **Open Submittals Report** for the project report. - From **Submittals Menu**, select **Export Submittals** to build the complete project log through Closeout. It needs **Generate closeout packages**, and the ZIP arrives on the project's Closeout page. - Table bulk actions can update type, package, status, manager, responsible contractor, spec section, or due date when you have submittal write access. - Organization reporting includes **All Submittals** for work across projects. ### Use submittals with drawings, meetings, and mobile Link submittals to the project surfaces where the work is discussed and built. - On a drawing, place a submittal pin and create a Draft or link an existing submittal. Linked sheets appear on the submittal. - In Meetings, select **Add Open Submittals** to add a smart section. It follows Open submittals until the meeting is finished. - On mobile and native layouts, open, review, respond, send reminders, switch revisions, and download PDFs from the same submittal record. - Use settings, approval templates, bulk edits, and distribution controls to manage submittals; compact layouts group actions into menus. ## Troubleshooting ### Troubleshoot submittals Check the record status, current stage, and your permission before changing the workflow. #### A Draft or submittal is missing 1. Confirm the organization has a package that includes Project Management. 2. Confirm **View submittals** and its configured access level. 3. For a Draft, confirm your access includes that creator or company. 4. Confirm you are on the intended project, status tab, and revision. #### Open Submittal is missing The record must be Draft and you need full submittal write access. **Create draft submittals** alone does not include opening the workflow. #### An approver can't respond Confirm the submittal is Open, the person is in the current stage, and the stage is not complete. If all three hold and **Respond** still isn't on their row, they're missing **Respond to submittals** — the button is hidden rather than disabled, so there's nothing on screen to explain its absence. #### A later stage won't start Check whether **All approvers/submitters in this step must respond** is selected on the current stage. If it is, every person in that stage must submit a response. #### The approval template can't be changed A response already exists. The template control stays on screen but is disabled, with **The approval template can no longer be changed.** Templates can be changed or cleared only before review history is recorded. #### Distribution can't continue Select an **Official Status**. When **Send email** is selected, keep at least one recipient, a subject, message text, and the submittal link merge field. #### Delete Submittal is disabled Only the latest revision can be deleted. The required permission also differs between Draft and non-Draft submittals. #### Revise and Resubmit is disabled You're on an earlier revision. Use **Select Revision** on desktop, or **Switch to Revision…** in the native layout, to open the latest one and revise from there. --- # How to use Schedules in Constructable > When someone on your project asks which schedule is current, you want there to be one answer. Constructable Schedules is where the issued plan lives. Upload the file from your scheduling application or build the plan from scratch, then adjust activities and links, publish it w... Source: https://constructable.ai/help/schedules When someone on your project asks which schedule is current, you want there to be one answer. Constructable Schedules is where the issued plan lives. Upload the file from your scheduling application or build the plan from scratch, then adjust activities and links, publish it when it's ready, and archive it once it's been superseded. Start with the task that matches what you need to do. ## Start here - **I publish project schedules:** [Add a schedule](#add-a-schedule) → [Publish it](#publish-or-unpublish-a-schedule). - **I build or adjust the plan in Constructable:** [Add a schedule](#add-a-schedule) → [Build and edit activities](#build-and-edit-schedule-activities) → [Link them](#link-activities-and-read-the-critical-path). - **I track the plan against what we committed to:** [Save snapshots and set a baseline](#save-snapshots-and-compare-against-a-baseline). - **I review the current plan:** [Find published schedules](#find-and-view-schedules) → [Open the preview](#preview-pdf-and-gantt-schedules) → [Use Schedule and Lookahead](#view-schedule-and-lookahead-plans). - **I plan the next few weeks:** [Add lookahead tasks](#add-and-manage-lookahead-tasks) → [Export a lookahead PDF](#export-a-lookahead-pdf). - **I need a printout of the whole plan:** [Export a schedule PDF](#export-a-schedule-pdf). - **I maintain revisions:** [Replace the file](#edit-or-replace-a-schedule) → [Archive superseded records](#archive-or-restore-schedules). - **Something is missing or blocked:** Start with [Troubleshooting schedules](#troubleshoot-schedules). ### Common task recipes - **Issue a schedule from your scheduling application:** Select **Add Schedule**, enter Title and Upload date, choose **Upload a schedule file**, upload one file, select **Add**, review, then select **Publish Schedule**. - **Build a schedule in Constructable:** Select **Add Schedule**, choose **Start from scratch**, select **Add**, then open it and select **Add Activity**. Link the bars, then publish. - **Lock in the plan you committed to:** On **Schedule**, open **Baseline**, select **Save snapshot…**, leave **Compare the schedule against this snapshot** ticked, and select **Save snapshot**. **Variance** then shows how far each finish has moved. - **Try a resequence safely:** Save a snapshot first. If the rework doesn't pan out, select **Revert to this snapshot**. - **Issue an updated schedule:** Add a separate clearly titled schedule when the prior version must remain visible in history, or use **Edit Schedule** and **Replace file** when correcting the same record. - **Plan this week's work:** Open the schedule, select **Lookahead**, add tasks under the activities, then **Export PDF**. - **Withdraw a published schedule:** Select **Unpublish Schedule**. - **Retire a schedule:** Select **Archive Schedule**. Archiving also unpublishes it. - **Recover an archived record:** Expand **Archived**, select **Unarchive Schedule**, review it, then publish if appropriate. ## Publish and maintain ### Add a schedule Add a schedule when you're ready to bring a plan into Constructable, either as a file from your scheduling application or as a blank plan you'll build here. Every schedule starts Unpublished, so you can check it, or finish building it, before the team sees it as issued. 1. Open **Schedules**. 2. Select **Add Schedule**. 3. Enter the required **Title**. 4. Enter the required **Upload date**. 5. Choose where the plan comes from: - **Upload a schedule file** when the plan lives in Microsoft Project, Primavera P6, or a PDF. Under **File**, upload one file and wait for the upload to finish. - **Start from scratch** when Constructable is where you'll keep the plan. There's no file to upload. 6. Select **Add**. 7. Open **View Schedule** and verify the content. A schedule you started from scratch opens on **Schedule** with **No activities yet**, ready for [your first activity](#build-and-edit-schedule-activities). Which one you pick decides what you can do later: - An `.mpp` or `.xer` file imports its activities, links, and calendars. You can edit them in Constructable, but uploading a replacement file throws those edits away. Pick this when the scheduler keeps working in the source application. - A PDF opens in the PDF viewer and can't be edited here. Any other file type downloads only. - **Start from scratch** gives you an empty plan to build in Constructable. It never takes a file: **Edit Schedule** on it changes the **Title** and **Upload date** only. In the list, it shows a **GANTT** badge where an uploaded schedule shows its file type. If the title is blank when you select a file, we fill in the **Title** with the file name before you submit the schedule. > **Note:** Anything you add here starts Unpublished, so nobody outside your schedule managers sees it until you publish it. > **Pro Tip:** Actually open **View Schedule** before you publish. Catching a wrong or truncated export while the record is still Unpublished is far easier than explaining it after the field has been working from it. #### Can I attach two files to one schedule? No. An uploaded schedule holds one file, and a schedule you start from scratch holds none. #### Can I add a file later to a schedule I started from scratch? No. Add a separate schedule with **Upload a schedule file** instead. #### The title filled itself in. Can I change it? Yes. We only fill in the **Title** from the file name when you've left it blank, and you can edit it before you submit. You have the plan in the project, visible to schedule managers, and not yet presented to the team as issued. ### Publish or unpublish a schedule Publishing is how you tell the project that a schedule is issued. Unpublishing pulls it back out of published use without deleting anything, which is exactly what you want when a plan goes out before it was ready. Publish a schedule when you have checked the file and want the project team to treat it as issued: 1. Verify Title, Upload Date, and file. 2. Open the schedule actions menu. 3. Select **Publish Schedule**. 4. Confirm the **Published** badge appears. To withdraw it from published use, select **Unpublish Schedule**. The record and file remain available to schedule managers, but their visibility and status change. Unpublishing does not archive the record. We record each Published or Unpublished transition, so the record keeps a history of when the plan was issued and when it was withdrawn. > **Note:** Use these actions to show whether the schedule is currently issued, not simply whether someone has reviewed it. A plan you've read but haven't committed to should stay Unpublished. Publishing doesn't freeze the plan. On a Published schedule, every activity, link, and Lookahead edit reaches the team as soon as it saves, and there's nothing to republish. To keep a record of what you issued, [save a snapshot](#save-snapshots-and-compare-against-a-baseline) when you publish. #### I published the wrong file. What now? Select **Unpublish Schedule** to take it out of published use, then correct the record — replace the file with **Edit Schedule**, or archive it and publish the right one. #### Does unpublishing delete the schedule? No. The record and its file stay available to schedule managers, and unpublishing doesn't archive it either. The team can see exactly one thing: whether this plan is currently issued. ### Edit or replace a schedule Replace the file when you're correcting the same schedule record, such as fixing an accidental upload. If the new file represents a separate issued version that should remain in history, add a new Schedule instead. 1. Open the schedule actions menu. 2. Select **Edit Schedule**. 3. Update **Title** or **Upload date** as needed. 4. Under **Replace file**, remove the current file and upload one replacement. 5. Wait for upload to finish. 6. Select **Save**. 7. Open the schedule and verify the replacement. A schedule you started from scratch has no file, so **Edit Schedule** on it shows only **Title** and **Upload date**. When the schedule already has activities, removing or replacing its file shows **Changing the file replaces this schedule's activities** before you save. It means exactly that: saving replaces every activity, link, and calendar with what the new file contains, and edits made in Constructable will be discarded. A replacement PDF clears the activities and opens in the PDF viewer. > **Note:** The old file is gone from the record once you save the replacement — you can't pull it back from here. If the previous version is one your project needs to be able to produce later, keep it and add a new Schedule instead of replacing this one. > **Note:** If you've been adjusting an imported plan in Constructable, make the same changes in the source file before you upload it again. Otherwise the replacement puts back the dates you'd already fixed here. > **Note:** A record that's already Published stays Published through a replacement, so there's no second publish step — and no second chance to review it before the team can see it. Verify the replacement after you save. #### Do I need to publish again after replacing a file? No, as long as the record remains Published. Viewers may need to reopen the record to load the new attachment. #### Should I use **Replace file** or add a new Schedule? Replace when you're correcting this record. Add a new Schedule when the previous version must remain visible in history. The record still has one file, and it's the right one. ### Archive or restore schedules Archive a schedule when it has been superseded or should no longer appear with active records. Nothing is lost — the record moves out of the active list and stays available under **Archived**, so you can bring it back if you need it. Select **Archive Schedule** to remove it from the active list and unpublish it. You can still find the record under **Archived**. To restore: 1. Expand **Archived**. 2. Open the record's menu. 3. Select **Unarchive Schedule**. 4. Review the restored record. 5. Select **Publish Schedule** if it should be issued again. > **Note:** Unarchiving does not automatically republish the record. A restored schedule comes back Unpublished, which means bringing an old plan back never surprises the team by reappearing as the issued one. #### Where did my archived schedule go? It's under **Archived** on the Schedules page. Expand that group to find it. #### Does archiving delete the file? No. Archiving removes the record from the active list and unpublishes it. The record is still there under **Archived**. Your active list shows only the plans people should be working from. ## Build and edit the plan ### Build and edit schedule activities You don't need to go back to the scheduling application to move a pour, split a phase into pieces, or add a milestone. On **Schedule**, you can build a plan from scratch or adjust an imported `.mpp` or `.xer` directly on the Gantt, and each edit saves as you make it. Editing needs **Create, update, archive, and publish schedules** and happens on the **Schedule** tab. **Lookahead** edits tasks, not activities. PDF schedules and other uploaded files can't be edited, and an imported plan becomes editable once **Preparing schedule preview** finishes. #### Add activities 1. Open the schedule and select **Schedule**. 2. Select **Add Activity**. On an empty schedule it's the button under **No activities yet**. Otherwise it's the blank row at the bottom of the grid. 3. Type the name in **Activity name** and press Enter. We create the activity and open another name field right below it, so you can type the next one. 4. While you're typing a name, press Tab to nest the activity under the one above, or Shift+Tab to move it back out a level. 5. Press Esc, or press Enter on an empty name, to stop adding. An activity starts today and lasts one working day. If you add it under a parent, it starts on the parent's start date instead. #### Change names, dates, and durations - Click an activity's name, **Start**, **Duration**, or **Progress** in the grid to edit it in place. - Or select **Edit Activity** (the pencil in the **Actions** column) to change **Title**, **Progress**, **Start**, and **Duration** together. **End** is calculated from the work calendar, so you can't type it. - On the timeline, drag a bar to move it, or drag its right edge to change its duration. Press Esc during a drag to cancel it. Durations count working days on the schedule's primary calendar. An activity that lands on a non-working day starts on the next working day. Moving an activity also pushes its linked successors later when the link requires it. See [Link activities and read the critical path](#link-activities-and-read-the-critical-path) for how that works. Set **Duration** to 0 to make a milestone. It draws as a diamond on its date. You can drag it to a new date, but it has no edge to resize. #### Organize activities into phases - Select **Add Sub-activity** (the plus in the **Actions** column) to add an activity under this one. The parent becomes a summary row. - Use **Indent** and **Outdent** at the top of **Edit Activity**. You can also click a row and press Tab or Shift+Tab. **Indent** moves the activity under the activity directly above it. - Drag the **Reorder activity** grip to change an activity's order within its parent. - Select the chevron on a summary row to **Collapse** or **Expand** it. A summary's **Start**, **Duration**, **End**, and **Progress** roll up from the activities under it, so you can't edit them directly. Change the sub-activities instead. #### Delete activities **Delete Activity** (the trash can in the **Actions** column) removes the activity along with its links and any Lookahead tasks under it. Deleting a single activity happens right away, without a confirmation. Deleting a summary first asks you to confirm and tells you how many activities it removes. #### Undo a change Select **Undo** or **Redo** in the upper-right corner, or press Cmd+Z / Ctrl+Z to undo and Shift+Cmd+Z / Shift+Ctrl+Z (or Ctrl+Y) to redo. **Undo** brings back a deleted activity with its links and Lookahead tasks. Undo history covers your own last 100 changes on the tab you're on. Switching between **Schedule** and **Lookahead**, or leaving the schedule, starts a fresh history. > **Note:** Edits on a Published schedule reach the team as soon as they save, and there's no draft step. For a big resequence, save a snapshot first so you can [revert](#save-snapshots-and-compare-against-a-baseline) if it doesn't work out. Or build the next version as an Unpublished schedule. > **Note:** On an imported `.mpp` or `.xer`, we only move the activities your edit actually affects. Everything else keeps the dates from the file. Uploading a replacement file discards every edit you made here. On a phone, use **Edit Activity** for dates, durations, **Indent**, and **Outdent**. The **Reorder activity** grip only shows when you hover over a row, and the Tab and undo shortcuts need a keyboard. #### Can I edit a PDF schedule? No. A PDF has no activities to edit. To manage the plan in Constructable, add a schedule with **Start from scratch** or upload the `.mpp` or `.xer`. #### Why can't I change a summary's dates? Its dates span the earliest start to the latest finish of the activities under it. Move or resize those activities and the summary follows. You can shape the plan where the team reads it, with no export and re-upload in between. ### Link activities and read the critical path Links are how a late delivery ripples down the plan. Once activities are linked, moving one pushes everything that depends on it, and **Total Float** shows which activities have no room to slip. #### Draw a link 1. On **Schedule**, hover over a bar. A connector dot appears at its start and its finish. 2. Drag from one of those dots onto another activity's bar or dot. The activity you dragged from is the predecessor. 3. Release. The arrow appears and the successor moves if the link requires it. The link type follows which ends you connect. Dropping on the middle of a bar counts as its start. - **Finish to Start (FS):** Finish dot to the other bar's start. The successor starts the next working day after the predecessor finishes. - **Start to Start (SS):** Start dot to the other bar's start. - **Finish to Finish (FF):** Finish dot to the other bar's finish dot. - **Start to Finish (SF):** Start dot to the other bar's finish dot. Press Esc mid-drag to cancel. Connectors appear on activities only, not on summary rows. Because the dots appear on hover, draw links on desktop web. #### Change or remove a link Click the arrow. The popover names the predecessor and successor and lets you change **Link type** and **Lag (work days)**, or select **Delete Link**. We reject a link that can't work and tell you why: **An activity can't link to itself.**, **These activities are already linked.**, or **This link would create a loop in the schedule.** #### How links move activities - Links push successors later on the work calendar. They never pull them earlier. If you move a predecessor earlier, its successors stay where they are until you move them. - You can't put an activity earlier than its links allow. If you drag a successor too early, it lands on the earliest date its predecessors permit. - An activity at 100% **Progress** is never pushed. You can still move it yourself, and its dates still drive its own successors. - Bars show where they'll land while you drag, and the move is saved when you release. #### Read float and the critical path **Total Float** shows how many working days an activity can slip before it delays the end of the plan. Unfinished activities with no float are critical: their bars and **Total Float** values turn red, and so does any summary above them. **Predecessors** and **Successors** list each activity's links. Show or hide these columns under **View** → **Columns**. Anyone who can open the schedule sees float and the critical path. Only drawing and changing links needs write access. #### I moved an activity earlier. Why didn't the next one follow? Links only push. Move the successor yourself. It can go as early as its predecessors allow. #### Why did my activity land later than where I dropped it? A link is holding it. It starts on the earliest working day its predecessors permit. Check **Predecessors**, or click the arrow to change the lag or link type. The plan reacts the way the job does: when one thing slips, the work that depends on it slips with it. ### Save snapshots and compare against a baseline A live schedule changes every week, and the owner will eventually ask how far you've moved from the plan you committed to. A snapshot freezes the plan as it stands. Set one as the baseline to show each activity's slip, or revert to it when a rework doesn't pan out. Snapshots live in the **Baseline** menu at the top of the **Schedule** tab. You need **Create, update, archive, and publish schedules** to see that menu. #### Save a snapshot 1. On **Schedule**, open **Baseline**. 2. Select **Save snapshot…**. 3. Enter a **Name**. We suggest "Snapshot" plus today's date. 4. Leave **Compare the schedule against this snapshot** ticked to make it the baseline. The box starts ticked only when the schedule has no baseline yet. 5. Select **Save snapshot**. You'll see **Snapshot saved**. A snapshot holds every activity's name, dates, duration, place in the outline, and links as they are at that moment. Later edits don't change it. It doesn't hold **Progress**. #### Compare against a baseline In **Baseline**, point to a snapshot and select **Use as baseline**. The menu button then shows the baseline's name. On every activity that was in the snapshot: - A baseline bar appears behind the current bar on the timeline. - **Variance** shows how many working days the finish has moved. A positive number, in red, means it finishes later than the baseline. A negative number, in green, means it finishes earlier. The baseline belongs to the schedule, not to you. Everyone who can open the schedule sees the baseline bars and **Variance**, including people who can't open **Baseline**. Select **Stop comparing** on the active baseline to turn the comparison off for everyone. **Variance** only appears in **Columns** while a baseline is set. #### Revert to a snapshot 1. In **Baseline**, point to the snapshot. 2. Select **Revert to this snapshot**. 3. Read the confirmation and select **Revert**. You'll see **Schedule reverted**. Reverting puts activity names, dates, durations, the outline, and links back the way they were in that snapshot. Activities added since the snapshot are removed, and activities deleted since then come back. **Progress** doesn't change. Before reverting, we save the current schedule as a snapshot named "Before reverting to" plus the snapshot's name. If the revert was a mistake, revert to that one. **Undo** doesn't reverse a revert. > **Note:** A revert is blocked when an activity added since the snapshot has Lookahead tasks. You'll see **Couldn't revert the schedule**, and the message says how many activities are holding it up. Move or delete their Lookahead tasks, then revert again. #### Rename or delete a snapshot Point to the snapshot and select **Rename** or **Delete**. Deleting removes the snapshot for good, though the schedule itself doesn't change. If it was the baseline, the comparison stops. #### Should I revert or use Undo? Use **Undo** for the last few changes you just made. Revert when you want to go back to a known point, such as the plan you issued last month, no matter how many edits happened since. #### Why is **Variance** blank on some activities? Those activities weren't in the baseline snapshot, usually because they were added after it was saved. You have a fixed point to measure the live plan against, and a way back to it. ## View and share ### Find and view schedules Open **Schedules** to find the schedules available for your project. Each row tells you what kind of schedule it is, what it's called, whether it's issued, and when it was uploaded — enough to pick the right one without opening three of them. Active schedules show the file type, Title, **Published** or **Unpublished** badge, and **Uploaded** date. A schedule built from scratch in Constructable shows **GANTT** where an uploaded one shows its file type. Select **View Schedule** on web or **View** on native. Archived records are grouped under **Archived (count)**. > **Note:** Without schedule write access you'll see published records without the management actions. Nothing is broken; publishing, editing, and archiving simply aren't yours to do. #### A schedule I know exists isn't in the list. Where is it? Expand **Archived** first, since archiving moves records out of the active list. If it isn't there, it may be Unpublished — those are visible to schedule managers rather than to everyone with **View published schedules**. You can tell at a glance which plan is issued and how recent it is. ### Preview PDF and Gantt schedules You can read a schedule without leaving Constructable, which is usually all you need for a quick look. What you get depends on the file you're opening. - A PDF attachment opens in the inline PDF viewer. If the record is a PDF, that's what you see even when activities also exist. PDFs are read-only here. - `.mpp` and `.xer` files open **Schedule** and **Lookahead** once the import finishes — see [View Schedule and Lookahead plans](#view-schedule-and-lookahead-plans). - A schedule started from scratch opens **Schedule** and **Lookahead** right away. Until someone adds an activity, **Schedule** shows **No activities yet**. - While we're still importing a project plan, the page shows **Preparing schedule preview**. **Download** works while you wait. - Every other file type shows **Preview unavailable** and stays downloadable. The subtitle still reads **Only PDF schedules can be previewed inline right now.** — that's the empty-state copy, not a complete list of what actually previews. > **Note:** An imported plan opens with the activities, links, and calendars from the file, plus any edits made in Constructable since. If your scheduler still maintains the source file, check with them before treating the two as identical. #### The preview has said **Preparing schedule preview** for a while. Is it stuck? Import can take time, and **Download** works while you wait. If it never finishes, verify the source file and contact support with the project, schedule title, file name, and upload time. #### Why does my schedule show **Preview unavailable**? The file isn't a PDF, and it doesn't have imported activities yet. Select **Download** and open the source in the application it came from. You get a fast read on the plan, and a clear path to the source file when a fast read isn't enough. ### View Schedule and Lookahead plans An imported `.mpp` or `.xer`, or a schedule built from scratch, gives you two views of the same plan. **Schedule** is the master plan: the activities, their dates, and the links between them. **Lookahead** is the next few weeks of work you add on top of those activities — who is doing what, for which company, and how large a crew. 1. Open the schedule. 2. Select **Schedule** or **Lookahead**. 3. Use **Today** to jump the timeline to today. **Schedule** opens at **Day** zoom, scrolled to today. It lists each activity with start, duration, end, progress, **Total Float**, predecessors, and successors, with dependency arrows on the timeline. Bars on the critical path are red. Under **View**, set **Zoom** to **Day**, **Week**, or **Month**, and use **Columns** to show, hide, or drag **Reorder column** on the row number, **Activity**, **Actions**, **Start**, **Duration**, **End**, **Progress**, **Total Float**, **Variance**, **Predecessors**, and **Successors**. **Actions** appears only for people who can edit the plan, and **Variance** only while a [baseline](#save-snapshots-and-compare-against-a-baseline) is set. With **Create, update, archive, and publish schedules**, you can edit activities and links right on **Schedule** — see [Build and edit schedule activities](#build-and-edit-schedule-activities). Without it, **Schedule** is read-only. **Lookahead** lists the activities that fall in the selected window, plus any Constructable tasks nested under them — including tasks that aren't tied to an activity. Open **View** for **Lookahead Duration** (1 to 8 weeks), **Columns**, **Gantt Labels**, and **Edit Company Colors**. **Columns** shows or hides **Activity**, **Actions**, **Assigned To**, **Company**, **Crew Size**, **Start**, **Duration**, **End**, and **Progress**, and you can drag **Reorder column**; **Activity** stays on. **Gantt Labels** are **Task Name**, **Company**, or **Company - Task Name**. Filter by **Company** and **Assigned To**; **No Company** and **Unassigned** are in those lists. Select **Show activity hierarchy** on an activity row when you need the parent path. If tasks sit past the activity's finish, you'll see **Some tasks fall outside this activity's dates**. > **Note:** Lookahead tasks are Constructable work, not imported Microsoft Project or Primavera tasks. Replacing the plan file rebuilds the activities; don't treat Lookahead as a second copy of the source schedule. #### Why don't I see Schedule and Lookahead? The record is a PDF, the import hasn't finished, or this file type doesn't produce activities. A PDF always opens the PDF viewer first. #### Why does **Schedule** say **No activities yet**? The schedule was started from scratch and nobody has added an activity yet. If you can edit it, select **Add Activity**. You can read the issued plan and the next few weeks of field work without leaving Constructable. ### Add and manage lookahead tasks Lookahead is where you put the work for the next week or two against the schedule's activities — a crew, a duration, a person responsible. You need **Create, update, archive, and publish schedules**. Anyone with **View published schedules** can read the tasks; they just can't add or change them. 1. Open the schedule and select **Lookahead**. 2. Select **Add Task** on an activity, on a parent task, or on the blank row at the bottom of the grid. The bottom row creates a top-level task that isn't tied to a master-schedule activity. 3. A task under another **task** copies that task's start, end, duration, progress, **Company**, **Assigned To**, and **Crew Size**. A task under an **activity** starts on the later of the activity start and today, lasts one working day, and takes the activity's progress. A bottom-row task is named **New Task**, starts today, lasts one working day, and starts at 0% progress. 4. Select **Edit Task** to set **Title**, **Progress**, **Company**, **Assigned To**, **Crew Size**, **Start**, and **Duration**. **End** is calculated from the work calendar and isn't typed. 5. Drag a leaf task's bar on the timeline to move its dates, or use **Reorder task** to change order among siblings. **Assigned To** lists project users and organization users on the project team — bidder-only memberships stay off the list. **Company** lists companies on the project team. **Unassigned** and **No Company** are the empty values. **View** → **Edit Company Colors** maps a project-team **Company** to a color for the Lookahead grid, timeline bars, and PDF. Select **Add another**, pick the company and color, then **Save**. Viewers still see the colors; saving them needs schedule write access. Date and duration edits apply to **leaf** tasks. A parent task's dates come from its children, so change the children when the parent dates look wrong. **Delete Task** removes that task and every task nested under it, without a confirmation. If you didn't mean to, select **Undo** in the upper-right corner before you leave **Lookahead**. It brings the task back with everything nested under it. Progress drives status: 0% is planned, anything above 0% is in progress, and 100% is done. You now have the next window of work named, assigned, and dated against the issued plan. ### Export a lookahead PDF Hand a superintendent a Lookahead they can pin on the wall. Export doesn't need schedule write access — **View published schedules** is enough. 1. Open the schedule and select **Lookahead**. 2. Set **Lookahead Duration** under **View** to the week count you want. The PDF covers that many weeks from the start date you pick next. 3. Select **Export PDF**. 4. In **Export Lookahead**, choose the **Start date**. 5. Select **Download PDF**. The PDF lists Project, Schedule, Weeks, and Printed on in the header. Columns follow the Lookahead columns that are currently visible, except **Actions**. A month name appears on the timeline when at least five exported days fall in that month. A window with nothing in it prints **No activities in this date range.** You have a printout of the current Lookahead, dated from the start you chose. ### Export a schedule PDF When the owner's meeting wants the master schedule on paper, export it straight from **Schedule** instead of rebuilding it in another tool. Export doesn't need schedule write access, and it works the same for imported plans and ones built from scratch. 1. Open the schedule and select **Schedule**. 2. Collapse any summary rows you want printed as a single line. Collapsed activities stay collapsed in the export. 3. Select **Export PDF**. It appears once the schedule has at least one activity. 4. In **Export Schedule**, set the **Start date** and **End date**. They start at the earliest activity start and the latest activity finish. 5. Choose a **Timescale**: **Day**, **Week**, or **Month**. **Month** is the default. 6. Select **Download PDF**. The PDF includes every activity whose dates overlap the range you picked. Its header lists Project, Schedule, Dates, and Printed on. Columns follow the **Schedule** columns that are currently visible, except **Actions**. Critical-path bars print in red, and when a baseline is set, its bars print behind the current ones. A range with nothing in it prints **No activities in this date range.** You have a dated printout of the plan, at the zoom level your reader needs. ### Manage schedule calendars Working days on an imported plan come from its calendars. Open **Calendars** from the schedule actions to see them. The **Primary** calendar is the one durations use. 1. Open the schedule. 2. Open **Calendars**. 3. Select a calendar. The **Edit calendar** dialog opens. 4. Review **Name**, **Primary calendar**, **Working days** (Monday through Sunday), and **Exceptions**. 5. Select **Add exception** to mark a date **Working** or **Non-working**. 6. Select **Save**. The toast reads **Calendar updated**. Anyone with **View published schedules** can open the list and read a calendar. Changing one needs schedule write access. **Delete** removes the calendar and its exceptions; the toast reads **Calendar deleted**. > **Note:** Calendars arrive with the imported plan. Replacing the file rebuilds them from the new source. A schedule started from scratch has no calendars, so **Calendars** shows **No calendars**. Its durations count Monday through Friday as working days, with weekends off. The plan's working days now match how the job actually works. ### Download a schedule Sometimes you need the actual file — to open it in your scheduling application, to pass it along, or because the preview doesn't show what you're after. Downloading requires access to the Schedule. Open a schedule, open its actions menu, and select **Download**. When no preview is available, the page also offers a prominent **Download** action. > **Note:** Your download contains the attachment that is current at that time. If a manager replaces the file afterward, the copy on your machine won't change. Download it again. #### I downloaded this last week. Is it still the current plan? Not necessarily. Check the record's **Uploaded** date and whether it still shows **Published**, then download again if the file has been replaced. You have the source file in hand, in the form the scheduler produced it. ### Use Schedules on mobile and native devices The schedule matters most when you're standing on the job rather than sitting at a desk. Mobile and native layouts give you the schedule list, the **Published** and **Unpublished** badges, the PDF preview, **Schedule** and **Lookahead**, **Download**, and any management and editing actions your role allows. On a phone each schedule is a full-width card rather than a desktop row: the title, the **Uploaded** date, the file-type badge (or **GANTT** for a schedule built from scratch), the published state, and a **View** link, with the row's action menu sitting after **View** rather than where you'd find it on desktop. With write access, you can add activities, use **Edit Activity** to change dates, durations, **Indent**, and **Outdent**, drag bars, and select **Undo** on a phone. Drawing links is different: the connector dots and the **Reorder activity** grip only show when you hover over a row, so do that work on desktop web. > **Pro Tip:** Use desktop web for a wide Lookahead timeline, linking activities, and careful file replacement. A replacement overwrites the old file and any edits made in Constructable — not something you want to do quickly on a phone. #### Where did the actions menu go on my phone? It sits after **View** on the row, rather than where you'd find it on desktop. You can check the current plan and pull the file from wherever the work is happening. ## Troubleshooting ### Troubleshoot schedules Nearly every schedule problem is a package or permission you don't have, a record that's been archived out of the active list, a file we can't preview or edit, or a link holding an activity in place. Find your symptom and work through the checks in order. #### **Schedules** is missing 1. Confirm the organization has the Field package. 2. Confirm you are in the intended project. 3. Ask an administrator to check **View published schedules**. #### **Add Schedule** or management actions are missing You need **Create, update, archive, and publish schedules**. Read access lets you open and download schedules without maintaining them. #### A schedule is missing from the active list Expand **Archived**. If the record was archived, select **Unarchive Schedule**. Archiving also clears Published, so review and publish it again if it should return to the issued list. #### The preview says **Preparing schedule preview** We're still importing the uploaded plan. You can use **Download** while you wait. If processing does not complete, verify the source file and contact support with the project, schedule title, file name, and upload time. #### The preview says **Preview unavailable** Inline preview covers PDFs and imported `.mpp` / `.xer` activities. Anything else shows this message. Select **Download** and open the source in the application it came from. #### Add Task is missing You're on **Schedule**, not **Lookahead**, or your role doesn't have **Create, update, archive, and publish schedules**. Switch views first; write access is what adds and edits tasks. On **Lookahead**, **Add Task** also sits on the blank row at the bottom of the grid for work that isn't under an activity. #### **Add Activity** or the activity editing controls are missing Work through these in order: 1. Confirm you're on **Schedule**. **Lookahead** edits tasks, not activities. 2. Confirm your role has **Create, update, archive, and publish schedules**. Without it, **Schedule** is read-only and the **Actions** column doesn't appear. 3. Check the file type. PDFs open in the PDF viewer and other non-plan files show **Preview unavailable** — neither can be edited. Only `.mpp`, `.xer`, and schedules started from scratch can. 4. If you see **Preparing schedule preview**, the import isn't finished. Editing opens up once the activities appear. #### A link won't save The message tells you why. **An activity can't link to itself.** means you dropped onto the same bar. **These activities are already linked.** means that predecessor already links to that successor — click the arrow to change its type or lag instead. **This link would create a loop in the schedule.** means the successor already leads back to the predecessor through other links. #### An activity won't move as early as I drag it Its predecessors hold it. An activity can't start earlier than its links allow, so it lands on the earliest working day they permit. Check **Predecessors**, then change or delete the link that's holding it. #### Moving an activity earlier didn't pull its successors with it That's expected. Links push successors later but never pull them earlier. Move the successors yourself. #### My edits disappeared after replacing the file Uploading a new file to an `.mpp` or `.xer` schedule replaces every activity, link, and calendar with what the file contains. That's what **Changing the file replaces this schedule's activities** warns about. Before you upload again next time, make the same changes in the source file so the replacement carries them. #### **Baseline** is missing The **Baseline** menu is on **Schedule**, not **Lookahead**, and only people with **Create, update, archive, and publish schedules** see it. Viewers still see **Variance** and baseline bars once someone sets a baseline. #### **Variance** is missing or blank **Variance** only appears while the schedule has a baseline. Open **Baseline**, then select **Use as baseline** on a snapshot. If it's on but blank for some rows, those activities weren't in that snapshot. #### Reverting fails with **Couldn't revert the schedule** Usually, activities added since that snapshot have Lookahead tasks, and the message says how many. Move or delete those tasks on **Lookahead**, then revert again. #### **Undo** is greyed out There's nothing left to undo on this tab. History resets when you switch between **Schedule** and **Lookahead** or leave the schedule, and it doesn't include other people's changes or a snapshot revert. #### A PDF fails to load Try **Download**. If the downloaded file is also invalid, use **Edit Schedule** and replace it with a valid source file. #### A change is not visible to viewers Confirm the record shows **Published** — Unpublished schedules, and edits to them, are visible only to people with **Create, update, archive, and publish schedules**. On a Published schedule, activity and link edits reach the team as soon as they save. Replacing a file does not require a separate publish action when the existing record remains Published, but viewers may need to reopen the record to load the new attachment. --- # How to use Reports in Constructable > Use this guide to review and export detailed non-financial information for one project. Reports turn project records into filterable tables; open the related tool or record to edit, respond, or review full history. Source: https://constructable.ai/help/reports Use this guide to review and export detailed non-financial information for one project. Reports turn project records into filterable tables; open the related tool or record to edit, respond, or review full history. ## Start here - **Choose a project report:** [Open a Report](#open-a-report). - **Review field activity:** [Use Daily Log Reports](#use-daily-log-reports). - **Review RFIs or Submittals:** [Use RFI and Submittal Reports](#use-rfi-and-submittal-reports). - **Review open list items:** [Use the List Report](#use-the-list-report). - **Narrow or export results:** [Filter, group, and export a Report](#filter-group-and-export-a-report). - **A Report is missing or empty:** [Troubleshoot Reports](#troubleshoot-reports). ### Common task recipes - **Prepare a Daily Log summary:** Open **Daily Logs Report**, set the date filters, group where useful, and export the current view. - **Find overdue RFIs:** Open **RFIs Report**, filter by due state or status, and open individual records to confirm current responsibility. - **Export a Submittal log:** Open **Submittals Report**, apply the intended filters, then use the Report's export action. ## Choose and review ### Open a Report ![Desktop: Project Reports are organized into Financial and Operations sections with a card for each available report.](https://constructable.ai/help-images/dashboards-and-reports/choosing-project-report.png) 1. Open the intended project. 2. Select **Management Tools** → **Reports**. 3. Choose an available card under **Operations Reports**. Available non-financial reports include **Daily Logs Report**, **Daily Logs - Personnel Report**, **Daily Logs - Time Cards Report**, **Daily Logs - Materials Report**, **RFIs Report**, **Submittals Report**, and **List Report**. Daily Log section cards appear only when that section is on for the organization and not hidden on the project. A custom Daily Log section the project set up with many entries gets its own card, named for the section. RFI and Submittal cards require Project Management and the corresponding tool permission. **List Report** needs **View punch list items** but not Project Management, so it's there on the Field package too. Some visible placeholder cards do not open a report. **WIP Report** under **Financial Reports** opens the project's Budget on that tab. Cross-project WIP lives in [Global Reports](https://constructable.ai/help/global-reports#read-the-global-wip-report). **Daily Logs - Time Cards Report** is the one exception to the pattern that Daily Log reports follow Daily Log access: it reads employee hours from time cards, so it needs **View time cards** rather than **View daily logs**. ### Use Daily Log Reports ![Desktop: The Daily Logs Report compares dates, notes, delays, and weather with table filters and saved views.](https://constructable.ai/help-images/dashboards-and-reports/daily-log-report.png) - **Daily Logs Report** includes dates, notes, delay flags and types, delay notes, weather summaries, weather notes, and **Safety Notes**. - **Daily Logs - Personnel Report** reviews hours by company and date. - **Daily Logs - Time Cards Report** reviews your own employees' hours, cost codes, dates, and notes, drawn from time cards. - **Daily Logs - Materials Report** reviews material type, quantity, unit, and notes. The Personnel and Materials reports follow the project's Daily Log setup: each custom field the project added to that section gets its own column, and a built-in field the project hid drops out of the report. **Total Hours** needs both **Workers** and **Hours Worked** showing. Each custom section with **Has many entries** turned on gets its own card — a section titled Visitors shows up as Daily Logs - Visitors Report. It lists one row per entry with the log's date, linked back to that Daily Log, and a column for each of the section's fields except attachments. Group by date or export it like any other report. Once-per-log custom sections don't get a report. See [Customize Daily Logs for one project](https://constructable.ai/help/daily-logs#customize-daily-logs-for-one-project). Use the date, company, employee, cost-code, and material filters offered by each report. For a delay review, start with **Daily Logs Report**, then open the source Daily Logs before relying on the information. Cross-project phone calls live in Global Reports as **Phone Calls** — see [Use cross-project and compliance Reports](https://constructable.ai/help/global-reports#use-cross-project-and-compliance-reports). ### Use the List Report Every list on a project — punch, observations, incidents, to-dos — has its own page, which is fine until someone asks what's still open across all of them. **List Report** puts every list item on the project in one table. Open it from **Management Tools** → **Reports**, or on desktop select **Open List Report** in the Lists header — that button shows when you have both **View non-financial reports** and **View punch list items**. The report works on the Field package as well as Project Management. Rows here are Lists items, including a list whose type is **Incidents**. They are not the records in **Field Tools** → **Incidents**. See [Incidents](https://constructable.ai/help/incidents). Each row is a single item, with **List**, **List Type**, **Title**, **Status**, **Trade**, **Location Tier 1** through **Location Tier 4**, **Due Date**, **Assignee**, **Approver**, and **Description**. The location tiers are hidden until you turn them on, which keeps the table readable on projects that don't use all four. When a list hides one of its built-in fields, such as **Trade**, that cell stays blank for the list's items. Group by **List**, **List Type**, **Trade**, **Due Date**, **Assignee**, **Status**, or a location tier depending on the question. Grouping by **Assignee** is the fastest way to build somebody's punch walk; grouping by **Trade** is how you work out which sub to call. Search covers list, title, trade, location, and description. Draft and template items stay out of the report, so what you're looking at is real work. On the project **List Report**, exporting to PDF opens **Export Punch List PDF** with an **Item Photos** section — the same dialog as exporting a single list. Organization **All Lists** in Global Reports uses the generic grid PDF, without that punch-list photo dialog. For the same view across every project, use **All Lists** in Global Reports. ### Use RFI and Submittal Reports ![Desktop: The RFIs Report compares status, participants, Ball-in-Court, dates, and due state across the project.](https://constructable.ai/help-images/dashboards-and-reports/rfi-report.png) **RFIs Report** includes open and closed RFIs with fields such as number, name, status, manager, creator, responders, Ball-in-Court, dates, due state, and cost or schedule impact. **Submittals Report** includes accessible Submittals with package, type, status, participants, Ball-in-Court, and dates. Search for a number or title, then filter by status, due state, or participant. Reports are for finding and comparing; open the RFI or Submittal to respond or inspect its complete history. ## Refine and export ### Filter, group, and export a Report 1. Open the Report and clear stale search or filters if the list looks too narrow. 2. Search by an available number, name, title, or other text. 3. Add filters for dates, statuses, people, companies, or other fields. 4. Group by an available field such as date, company, or scope. 5. Confirm the visible records and totals. 6. Select the export action and choose an available format. 7. Review the generated file before sharing. Totals reflect the active filters and grouping. An export is a point-in-time snapshot and does not grant Constructable access. ## Troubleshooting ### Troubleshoot Reports #### A Report is missing Confirm **View non-financial reports**, permission for the related tool, the required organization package, and—when applicable—the enabled Daily Log section. #### A Report has no rows Clear saved search and filters, confirm the date range and grouping, then compare with the source tool. A report may intentionally include only particular statuses. #### A Dashboard count differs from a Report Dashboard summaries and Reports can use different status scopes. For example, the RFI widget focuses on open and overdue work while **RFIs Report** also includes closed RFIs. #### An export is unexpected Review active filters, grouping, visible columns, Report title, and visible rows, then export again. --- # How to use Meetings in Constructable > A meeting is where decisions get made, and Constructable Meetings is where those decisions stop living in somebody's notebook. You prepare the agenda before anyone walks in, notify the attendees, capture what was actually said, issue the minutes, and carry the unfinished work... Source: https://constructable.ai/help/meetings A meeting is where decisions get made, and Constructable Meetings is where those decisions stop living in somebody's notebook. You prepare the agenda before anyone walks in, notify the attendees, capture what was actually said, issue the minutes, and carry the unfinished work into the next meeting. Start with the role that matches your work, or jump straight to the task in front of you. ## Start here - **I organize meetings:** [Create a Draft](#create-or-import-a-draft-meeting) → [Build the agenda](#build-sections-items-and-smart-sections) → [Publish and finish](#publish-start-and-finish-a-meeting). - **I attend meetings:** [Find meetings](#find-meetings-and-understand-visibility) → [Review the agenda and minutes](#review-a-published-agenda-or-finished-meeting). - **I issue meeting minutes:** [Finish the meeting](#publish-start-and-finish-a-meeting) → [Distribute the minutes](#distribute-meeting-minutes) → [Create the next meeting](#create-the-next-meeting). - **Something is missing or blocked:** Start with [Troubleshooting meetings](#troubleshoot-meetings). ### Common task recipes - **Prepare a new agenda:** Select **Draft Meeting**, complete Overview and Attendees, add sections and items, then select **Publish Agenda**. - **Reuse another project's format:** Select **Import from Project** and pick a source project. Every meeting on that project arrives as a Draft, so delete the ones you don't need before you publish anything. - **Track live open work:** Add the **Open RFIs** or **Open Submittals** smart section before starting the meeting. - **Record who attended:** Once the meeting is Started, select **Roll Call**, check off who's in the room, and select **Save Roll Call**. - **Issue minutes:** Select **Finish Meeting**, confirm attendee notifications, then use **Distribute** or **Export to PDF**. - **Continue a recurring series:** From a Finished meeting, select **Create Next Meeting**. ## Prepare ### Create or import a Draft meeting Every meeting starts as a Draft, which is your chance to get the agenda, the timing, and the attendee list right before anyone sees it. Build one from scratch, or import a format another project already uses. Create a new meeting when you are building an agenda from scratch: 1. Open **Meetings**. 2. On desktop, select **Draft Meeting**. On native, open the add menu and select **New Draft Meeting**. 3. Enter the meeting title. 4. Open the Draft and complete its overview, attendees, sections, and items. If another project already has a useful format, import it as a starting point: 1. Open the dropdown beside **Draft Meeting**. 2. Select **Import from Project**. 3. Pick the source project. **Import Meeting Structure** copies all of that project's meetings into yours as Drafts. 4. Select **Import**. 5. Delete the Drafts you don't need, then work through the ones you're keeping. > **Note:** You get the structure — sections, items, and attendees — but no notes, and the imported meetings aren't linked to each other as a series. That last part matters later: **Include prior meeting notes** in the PDF export has nothing to pull from until you've run a meeting and used **Create Next Meeting** to build the chain. > **Note:** An imported Draft is a starting point, not a finished agenda. Check the dates, attendees, links, and open items before you publish it — the content came from a different project, and not all of it will apply here. > **Pro Tip:** Do the setup work while it's still a Draft. Publishing notifies attendees immediately, so it's better for them to arrive at a complete agenda than to watch one get assembled. #### Does anyone get notified when I create a Draft? No. Attendees hear from us when you publish the agenda, so a Draft stays yours until you're ready. #### I only wanted one meeting and I got twenty. What happened? That's how the import works — it copies every meeting on the source project. Delete the Drafts you don't want; nothing has been sent to anybody, because Drafts don't notify. #### The imported meeting doesn't fit this project. What should I fix first? Start with dates and attendees, then work through links, open items, and anything else that pointed at the source project. You have a Draft you can shape privately, with nothing sent until you decide it's ready. ### Configure the meeting overview and attendees Attendees need two things before a meeting: how to show up, and what it's about. Overview carries the logistics and context, and the Attendees list decides who receives the agenda and minutes notifications. Open **Overview** and set the **Host**, the **Date & Time** with its time zone, a **Conferencing Link** if the meeting is remote, and a **Description** of what you're covering. Put the trailer, the gate, or the conference room in the **Description** so the location travels with the agenda and into the PDF. In a recurring series, Overview also shows a **Previous Meeting** link straight to last meeting's minutes, and a **Next Meeting** link once a successor exists. The meeting title isn't part of Overview. You set it when you create the Draft, and change it later with **Rename Meeting**. In **Attendees**, add the people who should receive agenda and minutes notifications. Once the meeting is Started, the same panel gains a **Roll Call** button for recording who actually turned up — see [Publishing, starting, and finishing a meeting](#publish-start-and-finish-a-meeting). Rich-text fields support bold, italic, lists, links, and preset text colors. Select the text first, then choose a color. > **Note:** Custom colors and background colors aren't available, so use color to emphasize meaning rather than as the only way an attendee can understand a note. The host and creator affect who can see a participant-restricted meeting, while the attendee list determines who receives notifications. Add someone as an attendee because they should participate and receive the agenda and minutes, not only to make the meeting visible to them. #### If I add someone as an attendee, can they see the meeting? Yes. Participants include the creator, host, and attendees, so an attendee can reach a participant-restricted meeting. Add people because they belong in the meeting, though, rather than as a way to hand out access. #### Where do I put the room or the gate number? Put the location in the **Description** so it appears in the agenda notification and exported PDF. #### Why isn't my text color showing the way I picked it? Select the text before choosing a color, and stay with the presets. Custom and background colors aren't available. Attendees know where to be, what's on the table, and they'll be told when the agenda and minutes are ready. ### Build sections, items, and smart sections Build the agenda in the order you plan to discuss it. Sections keep related topics together, items and sub-items give you somewhere to capture details, and smart sections keep open RFIs and submittals in front of the room. ![Desktop: A populated Open Submittals Smart Section keeps linked records and Ball-in-Court details in the meeting agenda.](https://constructable.ai/help-images/meetings/smart-sections.png) 1. Select **Add Section**. 2. Name the section and add notes. 3. Add agenda items and optional sub-items. 4. Add attachments to the applicable item. 5. Reorder sections and items to match the agenda. Use the rich-text formatting menu for emphasis and text color in descriptions and notes. From **More**, under **Smart Sections**, choose: - **Add Open RFIs** - **Add Open Submittals** These sections automatically include records that are already open and records opened before the meeting is Finished. > **Note:** Smart sections give your agenda live references to the source records rather than creating copies. What the room sees is the current state of the RFI or submittal, not a snapshot from the day you built the agenda. > **Pro Tip:** Add the smart sections early. They keep picking up newly opened records until the meeting is Finished, which saves you from rebuilding an open-items list by hand before every meeting. For how these records behave elsewhere, see [Using RFIs on drawings, in meetings, and on mobile](https://constructable.ai/help/rfis#using-rfis-on-drawings-in-meetings-and-on-mobile) and [Using submittals with drawings, meetings, and mobile](https://constructable.ai/help/submittals#use-submittals-with-drawings-meetings-and-mobile). #### An RFI was opened after I built the agenda. Will it show up? Yes. The **Open RFIs** section keeps adding open and newly opened RFIs until the meeting is Finished. #### A smart item disappeared from my agenda. Was the record deleted? No. Starting the meeting removes already closed or completed items from that agenda. The source RFIs and submittals remain unchanged. You walk in with an agenda that matches the conversation and a live list of what's still open. ## Publish and conduct ### Find meetings and understand visibility Open Meetings to find the agenda or minutes you need. The index groups records by where they are in their life, so the meeting happening right now and the minutes from last month sit in separate places. ![Desktop: The Meetings index separates Published and Finished meetings and shows schedules, organizers, and attendee counts.](https://constructable.ai/help-images/meetings/finding-and-visibility.png) The Meetings index groups records into: - **Started Meetings** - **Published Meetings** - **Draft Meetings** - **Finished Meetings** Drafts appear only when you have permission to view them. With participant-restricted access, you see meetings where you are the creator, host, or an attendee. > **Note:** A meeting you can't find isn't necessarily missing. Drafts need **View draft meetings**, and participant-restricted access shows you only the meetings you're part of. #### A colleague mentioned a meeting I can't open. Why? Your read access may be participant-restricted, which shows you only meetings where you're the creator, host, or an attendee. If it's a Draft, you also need **View draft meetings**. From the index you can tell at a glance which meetings are still coming and which ones already have minutes. ### Publish, start, and finish a meeting These three actions are how the meeting tells everyone else where it stands: the agenda is ready, the meeting is underway, the minutes are issued. Publishing and finishing each show you the attendee list before the notification goes out. ![Desktop: A Published meeting shows its attendees, agenda sections, and Start Meeting action.](https://constructable.ai/help-images/meetings/publish-start-finish.png) 1. From Draft, select **Publish Agenda**. 2. Review the attendee list and select **Continue**. Attendees receive a notification that the agenda is available. 3. At meeting time, select **Start Meeting**. 4. Once the meeting's started, select **Roll Call** on the Attendees panel, check off everyone who actually showed, and select **Save Roll Call**. The panel splits into **Attended** and **Did Not Attend**, and that's what the minutes carry. You can run Roll Call again while the meeting is Started if someone walks in late. 5. Capture notes, decisions, and follow-up items. 6. Select **Finish Meeting**. 7. Review the attendee list and select **Continue**. Attendees receive a notification with a link to the minutes. The adjacent menu lets you choose **Draft**, **Published**, **Started**, or **Finished** directly. > **Note:** Moving backward changes the meeting's status, but it doesn't take back notifications that were already sent. Once attendees have the agenda, they have it. > **Note:** Starting removes completed RFI and submittal entries from that meeting's smart sections. Only the agenda changes — the source records are untouched. #### Nobody received the agenda. What happened? Publishing notifies the attendee list, so check who was on that list when you published. When the list is empty the confirmation reads **No attendees will be notified.** #### I forgot Roll Call. Can I still record attendance? Yes, as long as the meeting is Started — the **Roll Call** button sits on the Attendees panel and appears at that status. Take the roll before you finish the meeting, because that's the record the minutes carry. #### Can I put a Published meeting back into Draft? Yes, from the adjacent menu. The status changes, but a notification attendees already received still stands. Attendees know when to read, when to show up, and when the minutes are final. ### Review a Published agenda or Finished meeting Whether you're preparing for tomorrow's meeting or checking what was decided last month, the record holds all of it. You need access to the meeting itself, plus access to any linked records you want to open from it. ![Desktop: A Finished meeting preserves its overview, attendees, agenda sections, and issued minutes for review.](https://constructable.ai/help-images/meetings/review-agenda-minutes.png) Open the meeting and you get the record as it was issued: who actually attended — Started and Finished meetings split the list into **Attended** and **Did Not Attend** — the notes and decisions under each agenda item, the attachments, and the event history showing when it was published and finished. Overview holds the host, the date and time, and, in a series, a **Previous Meeting** link to the minutes before this one. Smart RFI and submittal entries can open their connected details when you have access to those records. > **Note:** A Finished meeting is the issued minutes record. If you notice a factual error, coordinate the correction with the meeting owner instead of creating an unrelated replacement meeting — a second meeting doesn't fix the first one, it just adds a record nobody was expecting. #### An RFI is listed in the agenda but I can't open it. Why? Smart entries open their connected details only when you have access to that record. Being able to read the meeting doesn't grant access to everything it references. #### The minutes have a mistake. Can I correct them myself? Coordinate with the meeting owner. A Finished meeting is the issued record, so the correction should come from the person who issued it. You have the decisions, the notes, and who was there, in the form they were issued. ## Distribute and repeat ### Export meeting agendas and minutes Export a PDF when someone needs the agenda or the finished minutes outside Constructable — an owner, a subcontractor's office, a project binder. You can bring notes from earlier meetings along when the reader needs context from the series. 1. Open the meeting actions menu. 2. Select **Export to PDF**. 3. In **Export Meeting to PDF**, choose whether to **Include prior meeting notes**. 4. Under **Prior notes inclusion**, select one, two, three, or all prior meetings. 5. Leave **Include photos** on to add photo pages, or turn it off for a lighter file. 6. Select **Download PDF**. Each page of the PDF carries a footer in the form Page 1 of 3 so a printed agenda stays in order. With **Include photos** on, image attachments on this meeting's sections, items, and sub-items print on photo pages after the minutes, in agenda order, each group headed with the section or item it came from — "Site logistics: photos," for example. Other files aren't added. **Include photos** starts on, and your choice is remembered on that device for the next export. > **Note:** The PDF captures the meeting as it appears when you generate it, including supported rich-text colors. After notes or attachments change, download a new file — the copy already on your machine won't update itself. #### The prior notes I expected aren't in the PDF. Why? Confirm **Include prior meeting notes** is selected, then check how many prior meetings you chose. Prior notes also depend on a connected meeting series, so a meeting with nothing before it has nothing to pull from. #### How far back can the PDF reach? One, two, three, or all prior meetings. You have a shareable snapshot that reads the same for someone who's never signed in. ### Distribute meeting minutes **Distribute** emails the issued minutes. The meeting minutes PDF is always attached — you don't pick it. You only choose which extra attachments from sections, items, and sub-items go along. 1. Open a Finished meeting. 2. Select **Distribute** (or **Redistribute** after the first send). 3. The dialog is **Distribute Meeting Minutes** or **Redistribute Meeting Minutes**. 4. Review the recipients. Host and attendees start selected. 5. Choose additional attachments. The copy reads **The meeting minutes PDF is always attached. Choose which additional meeting attachments should be distributed. Attachments from sections, items, and sub-items are available.** 6. Send. **Export to PDF** is still the way to download a file for yourself. Distribute is how the attendees get the same minutes in email, with the PDF already on the message. The emailed PDF leaves out photo pages, so send the photos people need as additional attachments. You sent the minutes, and everyone on the list has the PDF. ### Create the next meeting When a recurring meeting wraps up, create the next one from the Finished meeting rather than rebuilding the agenda. You keep the structure of the series, you get a fresh Draft to review, and the finished record stays exactly as it was issued. 1. Open the Finished meeting. 2. Select **Create Next Meeting**. If this meeting already has a successor, the control reads **Open Next Meeting** and takes you to that Draft instead. 3. Confirm the **Meeting Title**. 4. Save. The toast reads **Created next meeting as draft**. 5. Review the newly created Draft. The new Draft carries forward the recurring structure and prior attendees who still have project access, including attendees with **All Projects** access who are not explicit Project Team members. It does not carry forward the notes captured during the finished meeting, and it does not notify attendees until the new agenda is published. This is also what builds the series. The new Draft's Overview shows a **Previous Meeting** link back to the meeting you created it from, and that chain is what **Include prior meeting notes** follows when you export a PDF later. > **Note:** Only one next meeting can be created from a meeting. When a successor already exists, **Open Next Meeting** is the path in; **Create Next Meeting** in the menu stays disabled with **A next meeting already exists**. Delete that Draft (it's a soft delete) if you need to create a different successor. > **Pro Tip:** Review the attendee list before you publish. People roll on and off a project between meetings, and only attendees who still have project access come across. #### Where did last meeting's notes go? They stayed on the finished meeting, which is the point — the new Draft is a fresh agenda rather than a copy of the discussion. Open the previous meeting when you need what was said. #### An attendee didn't come across. How do I get them back? **Create Next Meeting** retains attendees only while they can still access the project. Confirm the person remains on the Project Team or has **All Projects** access, then add them to the new Draft. The series keeps its shape and last meeting's record stays untouched. ### Rename or delete a meeting Titles pick up typos and meetings occasionally get created by mistake. Renaming is safe housekeeping; deleting is permanent and takes the whole record with it, so treat the two very differently. Use **Rename Meeting** to correct the title. Use **Delete Meeting** only when you no longer need the record. The meeting goes, and its sections, items, and sub-items go with it — there's no restore, and nobody on the project can reach any of it afterward. Source RFIs and submittals referenced by smart items aren't touched. > **Note:** The confirmation tells you that the action cannot be undone, and it means it. When a meeting documents decisions the project relied on, that record is usually worth more than a tidy list — export the PDF before you delete if there's any doubt. #### If I delete a meeting, do I lose the RFIs and submittals it referenced? No. Smart items reference the source records, and those aren't deleted along with the meeting. Your meeting list reflects the meetings that actually happened. ### Use Meetings on mobile and native devices Meetings happen in trailers and on job walks, not only at a desk. Native layouts support creating or importing a Draft, opening the grouped meeting lists, editing content you're permitted to edit, changing status, running Roll Call, and exporting. On a phone, the **Draft Meeting** button becomes a **+** in the page header; tap it for **New Draft Meeting** and **Import from Project**. Per-meeting actions like **Rename Meeting**, **Export to PDF**, and **Delete Meeting** sit behind the three dots on the meeting itself. > **Pro Tip:** Use desktop web when building a long agenda, reordering many sections, reviewing many attachments, or preparing a detailed PDF. All four go faster with room to see what you're doing. #### Can I run the whole meeting from my phone? Yes. Create or import a Draft, build the agenda, edit content with the required permissions, change status, take Roll Call, and export the meeting. On smaller screens, check the meeting actions menu for controls. You can prepare, run, and share a meeting from wherever the meeting actually happens. ## Troubleshooting ### Troubleshoot meetings Nearly every meeting problem is a permission you don't have, an attendee list that was empty when you published, or a smart section doing exactly what it's designed to do. Find your symptom and work through the checks in order. #### A meeting is missing 1. Confirm the Project Management package is active. 2. Confirm **View all meetings** permission. 3. For participant-restricted access, confirm you are the creator, host, or an attendee. 4. For a Draft, confirm **View draft meetings**. #### **Draft Meeting** or edit actions are missing You need **Create new meetings, make changes to existing meetings, distribute and redistribute**. Read access alone lets you open meetings without changing them. #### Attendees were not notified Publishing and finishing notify the attendee list, so the usual cause is that someone wasn't on it yet. Confirm that everyone who should receive the agenda or minutes was added first. When the list is empty the confirmation reads **No attendees will be notified.** — worth reading before you continue. #### A smart section contains completed work This one looks wrong but isn't. The **Open RFIs** and **Open Submittals** smart sections update while the meeting is active. When you start the meeting, already closed or completed items are removed from that agenda. The source RFIs and submittals remain unchanged. #### **Create Next Meeting** is disabled It is available only on a Finished meeting. When that meeting already has a next meeting, use **Open Next Meeting** instead — **Create Next Meeting** stays disabled with **A next meeting already exists**. #### An attendee is missing from the next meeting Draft **Create Next Meeting** retains attendees only while they can still access the project. Confirm the person remains on the Project Team or has **All Projects** access, then add them to the new Draft if needed. #### Prior notes are missing from the PDF In **Export Meeting to PDF**, select **Include prior meeting notes** and choose one, two, three, or all prior meetings. Prior notes come from the meeting series, so a meeting with nothing linked before it has nothing to pull from. Meetings brought in through **Import from Project** aren't linked to each other — the series starts building the first time you use **Create Next Meeting**. --- # How to use Drawings in Constructable > Use this guide to upload, review, publish, find, compare, mark up, connect, download, and troubleshoot drawings. It covers exact controls, revision handling, notifications, desktop and native behavior, offline storage, and exports. Source: https://constructable.ai/help/drawings Use this guide to upload, review, publish, find, compare, mark up, connect, download, and troubleshoot drawings. It covers exact controls, revision handling, notifications, desktop and native behavior, offline storage, and exports. Learn how processing, revisions, sheet links, and pinned workflows fit together in [Connected Drawings](https://constructable.ai/help/concepts/connected-drawings). ## Start here Pick the path that matches your job. You don't need to read every article in order. - **I manage drawing releases:** [Understand the lifecycle](#understanding-drawing-areas-drawing-sets-sheets-and-revisions) → [Upload a set](#uploading-and-managing-a-drawing-set) → [Review it](#reviewing-and-confirming-an-uploaded-drawing-set) → [Publish it](#publishing-and-unpublishing-drawings) → [See what changed](#viewing-revision-changes) - **I review and coordinate plans:** [Navigate the viewer](#navigating-and-searching-in-the-drawing-viewer) → [Choose a comparison method](#choose-the-right-comparison-method) → [Add markup](#adding-and-editing-drawing-markup) → [Save it to a Topic](#saving-and-collaborating-with-topics) - **I use drawings in the field:** [Find current drawings](#using-the-drawings-page) → [Use drawings on mobile](#using-drawings-on-a-phone-or-tablet) → [Prepare sheets for offline use](#storing-drawings-for-offline-viewing) - **I estimate from drawings:** [Calibrate and measure](#measuring-and-calibrating-drawings) → [Create and export takeoffs](#creating-and-exporting-drawing-takeoffs) - **I need a numbered detail, not a sheet:** Follow a blue sheet-number or detail callout in the viewer, or search the sheet. See [Finding a detail with the Details tab](#finding-a-detail-with-the-details-tab). - **Revisions were published in the wrong order:** [Reorder the drawing revision sets](#reordering-drawing-revision-sets). - **Something is missing or not working:** Start with [Troubleshooting drawings](#troubleshooting-drawings). ### Common task recipes - **Publish an addendum or bulletin:** Open **Add New Drawings** in the existing drawing area. Create a new set, or choose **Merge into existing set** when the pages belong on a set that's already there. Confirm the sheet identities, then publish. See [Uploading and managing a drawing set](#uploading-and-managing-a-drawing-set). - **Add plans for a separate building or package:** Open **Drawings Menu** and select **Add drawing area**, then upload the first set into the new area. See [Organizing drawing areas, disciplines, and sheets](#organizing-drawing-areas-disciplines-and-sheets). - **See what changed in a published revision:** After revised sheets from a set are published, select **Generate revision report** on the set if the briefing isn't there yet, then open [Viewing revision changes](#viewing-revision-changes). - **Find out why a sheet is missing:** Follow [Where is my drawing?](#where-is-my-drawing) before changing permissions or uploading the file again. - **Compare two revisions:** Use [Choose the right comparison method](#choose-the-right-comparison-method). - **Prepare for a site walk:** Star the sheets you use most, make the disciplines you need available offline in the native app, and test them before you leave reliable connectivity. See [Storing drawings for offline viewing](#storing-drawings-for-offline-viewing). - **Send plans outside Constructable:** Use [Choose the right download or share option](#choose-the-right-download-or-share-option). ## Understand the drawing workflow ### Understand how Drawings works Drawings travel one path, from the PDF that lands in your inbox to the sheet your crew opens in the field. Once that path is clear, most of what you see on the Drawings page — and most of what goes wrong — explains itself. **Upload a set → we split it into sheets → you confirm each sheet's number → you publish → the field sees it** - A **drawing area** holds one plan set with its own index and its own revision history. Almost every project needs exactly one. - A **drawing set** is one upload package, such as an issuance, addendum, or bulletin. - A **sheet** is one page extracted from that upload. - **Confirming** verifies the sheet number, title, date, and discipline. It's how we know that this A101 is a new version of the A101 you already have. - **Publishing** releases that revision to people who can view drawings. - The Drawings page shows one row per sheet number. A101 appears once, showing whatever the latest published version of A101 is, with every earlier A101 stacked behind it in the revision selector. Say ASI 3 contains a new A101. You upload ASI 3 as a new set in the same drawing area as the existing A101, confirm the sheet as A101, then publish it. We add it to A101's history and make the new revision current instead of creating a separate plan collection. Two habits prevent most of the trouble people run into. Keep related revisions in the same drawing area, and confirm sheet numbers exactly and consistently before publishing. ### Platform and feature availability Viewing, searching, comparison, recording, and downloads work on desktop web, mobile web, and the native app, and the same project permissions apply on every platform. Sheet administration doesn't: list view, row selection, **Bulk Actions**, and the per-sheet publish and edit controls only appear in a desktop-width browser. In the native app — on phones and tablets alike — and in a phone-sized browser window, the Drawings page and drawing set pages show thumbnails only. Storing drawings for offline viewing happens only in the native app, and reordering drawing revision sets happens only on the web. | Feature | Desktop web | Mobile web | Native app | | ------------------------------------------------------------------------------------- | ----------- | ---------- | ---------- | | View, search, star, and mark up drawings | Yes | Yes | Yes | | Thumbnail view of the Drawings page and drawing sets | Yes | Yes | Yes | | Drawings index list view and bulk selection | Yes | No | No | | Publish, unpublish, edit, and delete drawing-set pages from the sheet list or in bulk | Yes | No | No | | Publish one unpublished sheet from the drawing viewer | Yes | Yes | Yes | | Download every current drawing, or an entire drawing set | Yes | Yes | Yes | | Split View | Yes | Yes | Yes | | Overlay comparison | Yes | Yes | Yes | | Download the current sheet as PDF | Yes | Yes | Yes | | Download an overlay comparison PDF | Yes | Yes | Yes | | Open a revision in a new tab | Yes | Yes | Yes | | Record the drawing viewer screen | Yes | Yes | Yes | | Store a single sheet for offline viewing | No | No | Yes | | Make a whole discipline or drawing area available offline | No | No | Yes | | Reorder drawing revision sets | Yes | Yes | No | | Export selected pages from one drawing set | Yes | No | No | On the web, the layout follows your window width: a phone-sized browser gets the mobile layout, while a tablet browser or a wider window gets the desktop one. The native app always uses the mobile layout. > **Note:** Look in the page actions menu, viewer toolbar, or overflow menu for compact-layout controls, then check your permissions and the current record status. If you need to publish, retag, or delete sheets from the field, open Constructable in a desktop-width browser. ### Drawing permissions at a glance Your drawing access is separate from your access to the workflows connected to a drawing. That's why two people can open the same sheet and see different pins, markup layers, and menu options. - **View drawings** allows a project member to open published drawings, search, star sheets, browse published drawing sets, generate and read revision reports, and use permitted viewer features. - **Change drawing sets, drawing areas, and drawing pages, publish and unpublish drawings** is the permission used in this guide when we say **drawing-management access**. - **Comments**, **Topics**, **RFIs**, **Submittals**, **Lists**, and **Takeoffs** have separate permissions. Lists and the items on them use the **Punch Lists** permission group in project settings. - Entering Takeoff mode requires permission to add or change takeoffs, not only permission to view them. - Your organization's package sits above all of this. RFI and Submittal pins don't appear on a Field-package organization even for someone whose role grants RFI and Submittal access, because those tools aren't in that package. See [Roles and Permissions](https://constructable.ai/help/roles-and-permissions). Default roles are a starting point, but each project's permission settings decide what someone can actually do. If one drawing action is missing, adjust that specific permission where you can instead of changing the person's broader role. ### Choose the right comparison method Two ways to actually compare, plus one way to avoid needing to. Ask yourself whether you're checking what moved, or reading two different drawings. - **Split View** puts both sheets on screen at once, each at full size with its own controls. Use it when the two sheets are laid out differently, when you're holding a plan next to its detail, or when you need to read notes and dimensions on both. - An **overlay** stacks the two sheets so anything that shifted shows up in color. Use it when it's the same plan at two revisions and the question is "what actually changed between Rev. 2 and Rev. 3?" - If you only need to see what a sheet looked like last month, skip both. Open the sheet and pick the older version from the revision selector. Split View and overlays are available on desktop web, mobile web, and the native app. Choose Split View to read sheets side by side, or an overlay to compare the same geometry. See [Platform and feature availability](#platform-and-feature-availability). ### Choose the right drawing record Dropping a pin is the easy part. What you attach to it decides who gets told and whether anyone ends up owing you something, so pick by what you need to happen next. - A **Comment** notifies the people you mention and nothing more. Right for "is this dimension what you meant?" — a question a teammate can answer in a sentence. - An **RFI** starts a clock and demands a written answer from the design team, and the answer becomes part of the contract record. Right when the drawings genuinely don't tell you what to build. - A **Submittal** routes a product data sheet or shop drawing through named reviewers in order and ends in a formal approval. Right before anyone buys or fabricates. - A **List Item** puts a fix on somebody's list with a due date and a place to record that it was corrected. Right for work you can see is wrong. - A **Topic** assigns nothing to anybody. It's a named place to park markup and talk about it — right for a coordination pass you're working through across several sheets before you know which of the four above it turns into. Still torn between a comment and an RFI? Ask who has to answer. If it's someone on your team, comment. If it's the architect or engineer, and you'd want the answer in writing at closeout, open the RFI. ### Choose the right download or share option Six ways to get plans out of Constructable sounds like a lot until you work through three questions in order: do you want plans or a list, do you want what's current or what was issued, and do you want a file or a link? **Plans, current, everything:** **Download All** gives you a PDF of the latest published revision of every drawing in the area. This is the right answer most of the time. **Plans, current, only some of them:** **Download Selected** does the same thing for the drawings you select in list view. Use it when the electrician needs the E sheets and nothing else. Selecting sheets takes a desktop-width browser, because the native app and phone-sized browsers show thumbnails only. **Plans, as issued:** **Download Entire Set** gives you one upload package exactly as it arrived, which means it can include pages that were later superseded and pages nobody ever published. Never hand this to the field as the current set. **Plans, just this one sheet:** **Download** from the viewer's toolbar or context menu exports the sheet you're looking at, with whatever markup is currently visible on it. The control stays disabled until the sheet finishes loading (**Download is available once the sheet finishes loading**). Overlay comparison exports the live Differences, Ghost, or Highlight composite instead of a single sheet. Finish aligning the sheets and wait for the overlay to load before downloading. **A link instead of a file:** **Share Download Link** builds the same package but hands you a URL to paste into an email. Worth knowing: the link points at the package as it was the moment you created it, so generate a new one after drawings change. **A list, not plans:** **Download Drawing Log** gives you a register of sheet numbers, titles, revisions, and dates — the thing you attach to a transmittal. It contains no plans. ### Troubleshooting drawings Most drawing problems come down to one of four things: the sheet hasn't been published yet, you're looking at the wrong drawing area, a sheet number doesn't match, or a permission is missing. Find your symptom below and work through the checks in order. #### Where is my drawing? Before you upload the file again, find out where the sheet actually is in the workflow. It's almost always sitting at one of these four stages: 1. **Processing:** We're still separating pages and reading metadata. Wait for processing to finish. 2. **Needs Review:** Open the **Review Drawing Set** screen and correct or confirm the sheet details. 3. **Unpublished:** The sheet is confirmed but isn't visible in the main Drawings index yet. Publish it when it's ready for the team. 4. **Published:** Confirm you're in the correct drawing area, clear index filters, and check the viewer's revision selector. If one person can see the published sheet and another can't, compare their drawing permissions. If nobody can see it in the area they expect, check whether it went to a different drawing area or got published under an unexpected sheet number. #### A new upload became a separate drawing Nine times out of ten it's a sheet-number mismatch — `A-101` versus `A101`. Compare the number you confirmed against the number on the existing drawing before you delete anything or publish more pages. Correcting the number is safer than uploading the same file over and over. #### A tool or button is missing Check these in order: 1. Whether the control is in the toolbar, page actions menu, or overflow menu for your layout. 2. Whether the current sheet is published and you're on the intended revision. 3. Whether your drawing permission allows the action. 4. Whether the connected workflow — Comments, Topics, RFIs, Submittals, Punch Lists, or Takeoffs — has its own required permission. #### Markup is missing or appears in the wrong place Confirm the selected revision and markup mode first. Markup carried to a new revision may need repositioning when the underlying plan changed, and takeoff markup isn't carried forward at all. If markup is hidden, select **Show all markup** in the viewer before you assume someone deleted it. #### All my markup went faded or half-transparent You have a Topic open — a Topic being a named bundle of markup and the conversation about it. Markup belonging to any other Topic dims so the current conversation stands out, and it's read-only while you're in there. Close the Topic to bring everything back to full strength. Pins stay fully opaque even when you change **Opacity** on a markup tool. If your pins are gone too, someone turned on **Hide all markup** instead. #### Pins are on the old revision but not the new one Markup and pins are copied onto a sheet when its new revision is confirmed during review. Anything added to the older revision _after_ that point stays where you put it — it isn't retroactively copied forward. Re-place those pins on the current revision. #### A detail callout doesn't open the right detail Open the sheet the callout names and look for the detail yourself. If it isn't there, the callout is printed against a detail that was moved or dropped from the published sheet — a question for the design team, not something a new upload will fix. A link also fails when the target sheet is unpublished or numbered differently from the callout. Confirm the destination sheet is published in the same drawing area before you treat the callout as a product problem. #### A measurement looks wrong Check the revision, the sheet scale, the units, and the known dimension you calibrated from. A title-block scale may apply to only one viewport, and resized or scanned PDFs can throw the accuracy off. #### An offline sheet will not load Offline storage lives in the native app, so a sheet opened in a browser always needs a connection. In the app, check that the sheet or its discipline shows as stored — a discipline header still showing a count such as `12/40` hasn't finished. Reconnect with the app open so it can finish downloading, then open the sheet once before you head back out. If you need to reach us, include the project, drawing area, drawing-set name, sheet number, revision, device or browser, and the exact status or error you're seeing. That's everything we need to find it on the first pass. ## Set up and publish ### Understanding drawing areas, drawing sets, sheets, and revisions Four words do most of the work in Constructable drawings: area, set, sheet, and revision. Once you know how they fit together, you'll know where an upload lands, what your team can see, and why a new plan occasionally shows up as its own drawing. #### The short version - A **drawing area** holds one plan set with its own index and revision history. - A **drawing set** is a package of PDF files uploaded together. - A **sheet** is an individual drawing page, such as A101 or M201. - A **revision** is a newer version of an existing sheet. Most projects only need one drawing area. Inside it, you can upload as many drawing sets and revisions as the job requires. #### Drawing areas Almost every project needs exactly one drawing area, and if that's you, you'll barely notice it exists — we keep it out of the way. You want a second one only when the job really has two plan sets that never talk to each other. Each area keeps its own index, its own disciplines, and its own revision history, which is the whole point: an A101 in one area will never be treated as a revision of the A101 in the other. When a project has several, you can switch between them from the Drawings page. Multiple drawing areas earn their keep when parts of a project have genuinely separate plan collections — for example: - Separate buildings on one campus - A base building and a tenant-improvement package - Distinct phases that need independent drawing indexes > **Note:** Don't create a new drawing area for every issuance or revision. Those belong in separate drawing sets within the same area. Splitting related revisions across drawing areas prevents us from treating them as versions of the same sheet. #### Drawing sets A drawing set is one upload package. It usually represents a plan issuance, addendum, bulletin, or other group of PDFs that arrived together. When you create a drawing set, you can enter: - A drawing set name - The date it was received - A default sheet date - An optional description - One or more PDF files We process each PDF and separate it into individual sheets, and we take a first pass at each sheet's number, title, discipline, and scale. You review those results before the sheets can be published. The drawing set remains available after publishing, so you can always trace a revision back to the upload it came from. > **Note:** Deleting a set removes its sheets from the active drawing workflow. Double-check which set you have open before you confirm a deletion. #### Sheets and drawings A sheet is an individual page from an uploaded drawing set. Day to day, you'll identify it by its sheet number and title — **A101: First Floor Plan**. Every version of A101 connects to the same drawing, so you get one complete revision history instead of a separate, unrelated sheet for every upload. The Drawings page shows the latest published revision of each drawing. Older revisions are still available from the drawing viewer; they just don't appear as separate rows in the main drawing index. Some details belong to the drawing as a whole, while others belong to one revision: - **Sheet number, title, and discipline** apply across every revision. - **Sheet date, publication state, and revision number** apply to a specific revision. Keep this distinction in mind when you edit details. We'll tell you whether your change affects one revision or every revision of the sheet. #### Revisions When you publish a newly uploaded version of an existing sheet, it joins that drawing's revision history, and the newest published version becomes the current revision shown on the Drawings page. Revision numbering starts at zero. The first published version of a sheet is **Rev. 0**, so the first reissue you receive becomes Rev. 1. Compact and mobile layouts abbreviate this further, showing `V0` and `V1`. From the drawing viewer, you can: - Open an earlier revision - Return to the current revision - Compare revisions side by side - Overlay revisions to highlight changes If you open an older revision, we won't let you forget it. A red banner appears across the top of the viewer reading **You are viewing an older revision of this sheet (Rev. 4 is the current revision)**, with the current revision as a link so you're one click from the plans you should be working off. > **Note:** We match revisions using the sheet details confirmed during review, so sheet numbers have to be accurate and consistent. A typo such as `A-101` instead of `A101` may prevent a new upload from being connected to the sheet you expected. #### How the pieces fit together Here's a typical drawing lifecycle: 1. An administrator opens the appropriate drawing area. 2. They create a drawing set and upload one or more PDFs. 3. We process the files and extract the individual sheets. 4. An administrator reviews and confirms each sheet's details. 5. The confirmed sheets remain unpublished until an administrator publishes them. 6. Published sheets appear on the Drawings page for project members with drawing access. 7. Future uploads carrying the same sheet numbers become new revisions of those drawings. #### Good to know - **Confirming and publishing are separate steps.** Confirming validates a sheet's information. Publishing makes it available to the wider project team. - **The Drawings page is not the same as the Drawing Sets page.** The Drawings page shows the latest published sheets. The Drawing Sets page shows upload packages and their processing, review, and publication status. - **Unpublished sheets have limited visibility.** Drawing administrators can reach them from the drawing set while they're being prepared, but they don't appear in the main drawing index for the wider project team. - **Drawing permissions matter.** Project members with drawing access can view published sheets. Uploading, reviewing, editing, publishing, and unpublishing require drawing-management permission. - **Use consistent sheet numbers.** Accurate sheet numbers are essential for revision matching, drawing links, and search. With this structure in your head, reviewing uploads, publishing revisions, finding sheets, and working in the viewer all stop being guesswork. #### Why did my new plan show up as its own drawing instead of a revision? Its confirmed sheet number didn't match the existing drawing, or it went into a different drawing area. Both are metadata problems, and both are safer to correct than to fix by uploading the file again. #### How many drawing areas should my project have? Usually one. Add another only when the project genuinely has separate plan collections — different buildings on a campus, a base building alongside a tenant-improvement package, or phases that need their own indexes. #### Where did the older version of a sheet go? Nowhere. The Drawings page lists only the latest published revision, but every earlier revision is still available from the revision selector in the drawing viewer. ### Organizing drawing areas, disciplines, and sheets Good drawing organization comes down to one rule — keep related revisions together — plus enough care with disciplines and sheet order that people can find a plan by browsing instead of searching for it. #### Choose the right drawing area Most projects should use a single drawing area. Create more only when the project has truly separate plan collections, such as multiple buildings or independent phases. When a project has more than one, the Drawings page shows them as tabs across the top and remembers the area you visited last. Desktop shows up to five tabs, then **More**. On a phone, every area is in a scrollable strip — swipe to reach the ones that don't fit. On the web, the page title also becomes an area switcher: select the area name to jump to any area and see how many sheets each one holds. > **Note:** Don't use drawing areas to separate issuances. Upload a new issuance in the existing area — either as a new drawing set or merged into one that's already there — so we can connect matching sheets as revisions. #### Add a drawing area Drawing areas are managed from the Drawings page, and you need drawing-management access to see these controls. 1. Open **Drawings Menu** in the upper right of the Drawings page. In the native app, tap the **⋯** button and look under **Drawing areas**. 2. Select **Add drawing area**. 3. Enter an **Area name**, such as `Building B` or `Parking Deck`. 4. Select **Create area**. The first time you add a second area, the dialog also asks you to name the area your existing sheets already live in. Those sheets don't move — you're only giving their area a name that makes sense next to the new one, and you can rename it later. When you save, we open the new area, empty and ready for its first drawing set. #### Rename, reorder, or remove drawing areas Once the project has more than one area, **Drawings Menu** also offers **Edit drawing areas**. In that dialog you can: - Rename an area by typing over its name. Names have to be unique within the project. - Drag an area by its handle to reorder it, or use **Move up** and **Move down** from the row's **⋯** menu. This order sets the tabs and the area switcher for everyone on the project. - Select **Add area** to add another one. - Choose **Remove area** from the row's **⋯** menu. The row shows **Removed when you save**, and **Undo** brings it back until then. Nothing changes until you select **Save changes**. You can't remove the project's last drawing area, or an area that has published sheets — the row reads "Has published sheets. Move or unpublish them first." Removing an area also removes the unpublished drawing sets and sheets inside it, along with their markup, and there's no restore. Check what's still in the area before you save. #### Set up disciplines Disciplines group sheets on the Drawings page and in the viewer's sheet selector. Architectural, Structural, Mechanical, Electrical, and Plumbing are the usual suspects. From **Edit/Reorder Disciplines & Sheets**, you can: - Add or rename a discipline - Add abbreviations used by sheet numbers - Reorder disciplines - Reorder sheets within a discipline - Delete a discipline Abbreviations pay off during review. If `A` is an abbreviation for Architectural, entering a sheet number such as `A101` helps us suggest the right discipline instead of making you pick it every time. An abbreviation can run up to 20 characters, which is enough for the longer prefixes some consultants use, and each one has to be unique within the project. If you go over, the dialog tells you before you save rather than after. > **Note:** Deleting a discipline doesn't delete its drawings. Its sheets move to **Uncategorized** until you assign them somewhere else. #### Reorder sheets carefully The order you set here controls how sheets appear within discipline groups and how everyone moves through drawings with the previous and next controls. If a handful of sheets seem out of place, check their assigned discipline before you start dragging rows around. A sheet in the wrong discipline is usually easier to fix by correcting its details. When new sheets land in a discipline, we place each one after the last sheet whose number comes before it — `A102` sits after `A101` even if you already dragged `A201` somewhere custom. That insertion doesn't reshuffle the rest of the order you set. > **Note:** Use the drawing-area management controls to reorder disciplines and sheets. Your role needs drawing-management permission. #### Use tags for a second layer of organization Disciplines answer, “What kind of drawing is this?” Tags answer the project-specific questions that cut across disciplines: - Which sheets belong to Building A? - Which sheets are part of a permit package? - Which sheets should the concrete team review? Tags don't replace disciplines. They give you another way to filter related drawings across discipline groups. See [Finding drawings with search, stars, and tags](#finding-drawings-with-search-stars-and-tags) for day-to-day use. Set this up once and your team browses a drawing index that reads like the plan set they already know. #### Should I make a new drawing area for an addendum? No. Keep it in the area that already holds those sheets. Create a new drawing set for a new issuance, or choose **Merge into existing set** when the pages belong on a set that's already there. Putting the addendum in its own area breaks the revision connection you want. #### I deleted a discipline by mistake — did I lose those drawings? No. The sheets move to **Uncategorized**, and you can reassign them to a discipline from there. ### Uploading and managing a drawing set Every new group of plans or revisions starts life as a drawing set. If you have drawing-management permission, you can add one from the Drawings page by selecting **Add/Edit Drawing Sets**. Before you start, gather the source PDFs and open the drawing area that already owns the related revisions — that's the single choice that decides whether these pages become revisions of existing sheets or a parallel set of new ones. ![Desktop: The drawing-set form collects set details and source PDF files before upload.](https://constructable.ai/help-images/drawings/upload-set.png) #### Upload a set 1. Open the correct drawing area. 2. Select **Add/Edit Drawing Sets**. 3. Select **Add New Drawings**. 4. Leave **Create new drawing set** selected. 5. Enter a clear set name, such as `Issued for Construction - 2026-07-15`. 6. Enter the date the set was received. 7. Choose a default sheet date, if one applies. 8. Add an optional description. 9. Attach one or more PDF files. 10. Select **Submit**. The drawing-set upload accepts PDF files. If the issuance arrived as several PDFs, attach them all to the same set rather than creating a separate set per file. **Example — ASI 3:** Upload all PDFs issued together as one set named `ASI 3 - 2026-07-15` in the drawing area that already contains A101. Don't create a new drawing area just because the issuance is new. #### Add pages to an existing set Use this when an addendum or a late PDF belongs on a set that's already in the project — not when you're starting a new issuance. 1. Open **Add/Edit Drawing Sets** and select **Add New Drawings**. 2. Choose **Merge into existing set**. 3. Under **Drawing set**, pick the target. The placeholder reads **Select a drawing set**. The option stays disabled when the area has no set you can merge into. 4. Check the dates. Picking the target fills **Received On** and **Default Sheet Date** from that set. **Received On** is locked while you're merging, and its tooltip explains why: "Received On comes from the set you're merging into. Edit the set to change it." **Default Sheet Date** stays editable, so change it when the late pages carry a different date. 5. Attach the PDFs and select **Submit**. The upload appears on Drawing Sets as a card named after the target set, with **(additional drawings)** on the end. Review and confirm those sheets the same way you would a new set. A sheet number that's already on the target is blocked with **This already exists in the set** — fix the number or delete the extra page before you finish. When every sheet is confirmed, the pages move onto the target set and the upload card goes away. The toast uses the target set's name. > **Note:** Merge is for adding pages to a set that already exists. A brand-new issuance still wants **Create new drawing set** so its received date and name stay attached to that package. #### Choose a useful default sheet date The default sheet date gives the imported pages a sensible starting point. You can correct individual dates during review, or edit dates in bulk after processing. Use the date printed on most sheets, which isn't necessarily the date the files hit your inbox. If the package contains mixed dates, choose the most common one and fix the exceptions during review. #### Edit set details You can change the drawing set's name, received date, default sheet date, and description after uploading it. These fields describe the upload package — they don't touch the sheet number or title of the drawings inside it. #### Delete a set Deleting a drawing set removes its active pages from the drawing workflow. If the set contains published revisions, removing it can change which revision is current. > **Note:** One drawing set can hold the current revision of many sheets, so a deletion that feels small can reach further than you expect. Before you delete, confirm all of the following: - You have the correct drawing area and set open. - You know whether any of its sheets are published. - You've downloaded a copy if the files need to be retained outside Constructable. > **Pro Tip:** If you only need to remove one page, delete that sheet instead of the entire set. #### Remove selected sheets from a set On a drawing set's sheet list, switch to list view, select the rows, and open **Bulk Actions**. Choose **Delete (3 sheets)** — the count follows your selection — then confirm **Delete** in **Delete selected sheets?**. The copy tells you the drawing set itself stays. The sheets leave the set; there's no restore from this screen. If some rows fail, those stay selected so you can try again. Bulk delete and bulk publish need list view, which only appears in a desktop-width browser. In the native app and in a phone-sized browser window, a drawing set's sheets show as thumbnails with no selection controls. Use the publish-status filter — **All**, **Published**, or **Unpublished** — to narrow the list first. Changing the filter clears your selection. #### The issuance arrived as five separate PDFs. Do I create five sets? No. Attach all five files to the same drawing set. The set represents the issuance, not the file. #### Can I fix the set name after uploading? Yes. The name, received date, default sheet date, and description are all editable afterward, and changing them doesn't affect the sheets inside. Your plans are in the system and on their way to review. Continue with [What happens while a drawing set is processing](#what-happens-while-a-drawing-set-is-processing). ### What happens while a drawing set is processing A drawing set you've just uploaded sits under **Processing drawing sets** on the Drawing Sets page while we split the PDFs into individual sheets and read the title blocks. New sets stay off the Unpublished and Published lists until at least one page is ready, so look at the processing cards at the top rather than hunting for a set row. It runs in the background, so you can close the tab — we email you when the set is ready for review. You don't have to wait for object detections on every page before you open **Review Drawing Set**. The sheet preview loads detections for the page you're on; other pages can still be catching up. While files are still being read, the card can show **Analyzing files**. Select **Cancel** if you uploaded the wrong package. **Cancel this upload?** explains that processing stops and unconfirmed sheets from this upload are removed; confirmed sheets stay on the drawing set. Confirm with **Yes, Cancel Upload**, or **Keep Processing**. #### What Constructable does For each uploaded PDF, we: 1. Separate the file into individual sheets. 2. Create thumbnails and viewer-ready versions. 3. Read drawing text for search and sheet links. 4. Look for likely sheet numbers, titles, and disciplines. 5. Attempt to detect a usable drawing scale. > **Note:** Treat all of that as suggestions, not final drawing details. You still review every sheet before it can be published. #### Follow processing progress The Drawing Sets page shows the upload under **Processing drawing sets**. Once pages are available, the card reports how many pages have finished metadata extraction. We email whoever uploaded the set when every page is ready for review, unless that person has unsubscribed from email. Drawing-area notification preferences don't control this one-time processing email, so you'll get it whether or not you follow the area. Large or complex PDFs take longer than small, text-based ones. Scanned pages often need more manual correction too, simply because there's less readable text to work from. #### If detected details are blank or wrong Processing can finish even when we can't confidently read a field, and that isn't necessarily an upload failure. Open the **Review Drawing Set** screen and enter the missing sheet number, title, date, or discipline yourself. #### If the upload fails A failed set appears with an error message. We record the failure for investigation, and you can dismiss the failed set. Before you upload again: - Confirm that each attachment is a valid PDF. - Try opening the file locally. - Re-save or flatten a damaged PDF if that's practical. - Avoid re-uploading the same set while an earlier attempt is still processing. If a valid file fails more than once, reach out to us with the project name, drawing area, set name, and original PDF filename. #### How long should processing take? It depends on the file. Small, text-based PDFs finish quickly; large, complex, or scanned ones take longer. Watch the progress bar on the Drawing Sets page rather than the clock. #### A sheet number came through blank. Did the upload fail? No. We couldn't read that field confidently, which is common with scanned pages. Fill it in during review and the sheet is fine. When processing finishes, the set moves to **Needs Review** and the plans are ready for your eyes. Continue with [Reviewing and confirming an uploaded drawing set](#reviewing-and-confirming-an-uploaded-drawing-set). ### Reviewing and confirming an uploaded drawing set Review is where you check the sheet number, title, date, and discipline we read off each page, and correct whatever we got wrong. Nothing you do here reaches the field — the set stays invisible to the wider project team until you publish it — so it's the safest place in the whole workflow to take your time. ![Desktop: A published drawing set lists its sheets, dates, statuses, tags, download options, and bulk actions.](https://constructable.ai/help-images/drawings/review-drawing-set.png) #### Open the review workspace On the Drawing Sets page, find the upload under **Needs Review** and select **Review Drawing Set**. When the set has a name, the header includes that name after **Review Drawing Set**. The **Review Drawing Set** screen shows: - A list of sheets grouped by discipline - A progress bar counting sheets confirmed, ready, and needing a fix - A sheet preview - Editable sheet details - Search, filter, and navigation controls The preview for the sheet you're on loads as soon as that page's detections are ready. A slow sheet elsewhere in the set doesn't freeze the one you're reviewing. Each discipline group shows how many of its sheets are confirmed and how many still need a fix. A discipline you've finished collapses and shows **Done**; sheets without a discipline sit under **Unassigned**. Select a group header to open or close it, or use the button beside the search field to expand or collapse every discipline at once. The tabs above the list filter it by status, and each shows its count: - **All** shows every sheet in the upload. - **Need a fix** shows sheets we can't confirm yet — a missing sheet number or title, or a number that's duplicated in the upload or already in the set you're merging into. - **Ready** shows sheets with no problems, waiting for you to confirm them. - **Confirmed** shows the work you've already finished. #### Review each sheet For every page, verify: - **Sheet number** - **Sheet title** - **Sheet date** - **Discipline** We start you off with the details detected during processing. When a new upload matches a sheet number that's already in this drawing area, **Sheet title** prefills from the confirmed drawing instead of the PDF extraction — brand-new numbers still use what we read off the page. Correct anything that doesn't match the title block. Valid changes save automatically after a short pause, and a **Saved** indicator confirms it. If a field has an error, fix it before you move on. **Example — ASI 3:** If the revised plan is meant to replace A101, confirm its number in the same format as the existing drawing. `A101` and `A-101` may be treated as different identities. Select **Confirm and Next** to confirm the current sheet and keep going. On the last remaining sheet, select **Confirm**. #### Use search and bulk confirmation Search filters the review list by sheet number, title, or discipline, which helps when you're working through a large set or checking one related group of sheets. To confirm a batch you've checked, tick the sheets in the list — or tick a discipline header to take every sheet in that group, or **Select all visible** to take everything the current search and tab show. The bar above the list counts your selection, flags any selected sheets that still need a fix, and offers a confirm button with the number of sheets it will confirm. Sheets that need a fix stay selected after the rest are confirmed, so you can deal with them next. To confirm everything that's ready in one pass, use the confirm-all button beside the progress bar — at the top of the page on the web, above the list in the native app. Its label counts the ready sheets. It opens **Confirm All Sheets**; select **Confirm All** to confirm every sheet without errors. Sheets with missing details or duplicate numbers stay in the queue for individual review. > **Note:** Spot-check the extracted details before you confirm in bulk. The number you confirm here is the one we match every future revision against, so a wrong number quietly stays wrong on every reissue that follows. #### Handle disciplines efficiently You can select an existing discipline or create one right here during review. If you change the discipline on a sheet with a common number prefix, we may offer to update the other unconfirmed sheets sharing that prefix. > **Pro Tip:** Take that offer when the prefix is reliable for the set — it saves a lot of clicking. Skip it when the package mixes numbering conventions, because not every project follows the same one. #### Remove an unwanted page Use **Delete Sheet** when the PDF includes a cover page, a blank page, a duplicate, or anything else that shouldn't become a drawing. After you delete, review moves to the next sheet still visible in your current list — so with the **Need a fix** tab open, it skips straight to the next sheet that needs work. #### Does confirming a sheet make it visible to the team? No. Confirming settles the sheet's identity; publishing is what releases it. Those are deliberately separate steps. #### Why won't Confirm All take some of my sheets? Those sheets have missing details or duplicate sheet numbers. They stay in the queue so you can resolve them one at a time — open the **Need a fix** tab to see exactly which ones, with the problem named on each sheet. Once every sheet is confirmed, the set moves to **Unpublished** with its sheet numbers settled. The next step is [Publishing and unpublishing drawings](#publishing-and-unpublishing-drawings). ### Publishing and unpublishing drawings Publishing is the moment your confirmed sheets become the current drawings everyone else works from. Until you publish, the set is finished on your side and invisible on theirs — which is exactly the pause you want before releasing an issuance. #### Confirming vs. publishing These two steps are separate on purpose: - **Confirming** verifies the sheet's identity and details. - **Publishing** makes the revision visible to project members with drawing access. The gap between them is your chance to look over the entire issuance before any of it reaches the field. #### Publish a drawing set Publishing a whole set, or a selection of its sheets, happens in list view, so do it in a desktop-width browser. In the native app and in a phone-sized browser window, the set's sheets show as thumbnails without **Bulk Actions**; there you can only publish one sheet at a time from the viewer, as the tip below describes. 1. Open **Add/Edit Drawing Sets**. 2. Open the set you want to release. 3. Open **Bulk Actions** and choose **Publish All**. 4. Review the confirmation message and publish. To release only part of the set, tick those sheets first. **Bulk Actions** then offers **Publish 12 Selected** instead — the menu counts your selection into the label — and **Publish All** drops away. On the set's sheet list, the publish-status filter — **All**, **Published**, **Unpublished** — is the fastest way to see what's still waiting. Changing it clears the current selection. Only confirmed sheets can be published. Published sheets pick up revision numbers and become available from the Drawings page. > **Pro Tip:** If you're a drawing administrator already looking at an unpublished sheet in the viewer, there's a publish action right in the revision notice at the top. No trip back to the set required — and it's the way to publish a sheet from the native app or a phone: open the drawing set, tap the sheet's thumbnail, and publish it from the notice. **Example — ASI 3:** Publish the approved A101 page when it's ready. We make it the current A101 while keeping the earlier revision in the viewer's history. > **Note:** To publish or unpublish several sheets at once, select them in the drawing set's list view, then open **Bulk Actions**. List view only appears in a desktop-width browser. #### Publish in stages You don't have to release a set all at once. Publishing selected sheets is the right move when: - A partial issuance is approved before the rest. - A few sheets still need correction. - Different disciplines are released at different times. The drawing set status keeps count of how many sheets remain unpublished, so nothing gets forgotten halfway through. #### Unpublish a sheet Unpublishing pulls a revision out of the main drawing index for regular project viewers. The sheet stays available to drawing administrators from the drawing set workflow, so nothing is lost. You can unpublish selected sheets or every published sheet in a set. Use it when a revision went out by mistake or needs correcting before it's redistributed. Unpublishing lives in the set's list view, so it takes a desktop-width browser; the native app has no unpublish control. > **Note:** Unpublishing can change the revision sequence and which older revision counts as current. If what you really want is to issue a corrected version, uploading and publishing a new revision is usually clearer than withdrawing historical work. #### Let the team know Publishing and unpublishing both land in the drawings activity log, and both notify the project members who follow that drawing area. Give the set a clear name so recipients can tell what changed without opening anything. > **Note:** Bidders are excluded from publish-event recipients even when they can view drawings. If bidders need to know a set went out, tell them another way. #### Can I publish part of a set? Yes. Tick the sheets you want, then use the **Publish _n_ Selected** item in **Bulk Actions**. The set keeps track of what's still unpublished. #### Should I unpublish a sheet or upload a corrected one? Upload a corrected revision when the fix should stay in the record. Unpublish when the release itself was a mistake and shouldn't be part of what the team sees. Your issuance is out, and the field is looking at the plans you meant them to see. To learn how the current sheet gets chosen after publication, see [Managing revisions and editing drawing details](#managing-revisions-and-editing-drawing-details). When the set contained new revisions of existing sheets, generate the briefing of what changed — see [Viewing revision changes](#viewing-revision-changes). If a set went out in the wrong order relative to the others, see [Reordering drawing revision sets](#reordering-drawing-revision-sets). ### Managing revisions and editing drawing details Every version of A101 stacks up under one row on the Drawings page, so the index shows you today's plan without burying the ones that came before it. What holds that stack together is the sheet number — this article covers how the match happens and how to edit details without breaking it. #### How a new revision is created When a confirmed sheet matches an existing drawing, publishing it adds a revision instead of spawning another unrelated row. Sheet number consistency is what makes that match work. When a new revision is confirmed, we can copy scale information and non-takeoff markup forward from the latest published revision. That copying only happens when the new revision doesn't already contain markup, and takeoff marks are never carried forward. > **Note:** Review the new sheet before you assume copied markup still points at the right thing. When the underlying plan changed, carried-forward markup may need repositioning. In the ASI 3 example, the newly published A101 becomes the current drawing, and the previous A101 stays available as an older revision for comparison and context. #### View revision history Open a sheet in the viewer and use the revision selector to switch versions. Open an older revision and a notice points you back to the latest one. You can also open revisions in a new tab, compare them in Split View, or overlay them. See [Comparing sheets and revisions with Split View](#comparing-sheets-and-revisions-with-split-view) and [Comparing drawings with overlays](#comparing-drawings-with-overlays). On phones and in compact layouts, revision labels shorten to `V1`, `V2`, and so on instead of `Rev. 1`, `Rev. 2`. Same history, shorter label. #### Edit details shared by all revisions Use **Edit Drawing Details** when you're correcting information that identifies the drawing itself: - Sheet number - Sheet title - Discipline - Drawing tags - **Sheet date**, which applies only to the current revision The dialog tells you the split: "Sheet number, title, discipline, and tags apply to every revision. Sheet date applies to the current revision." Changes to sheet number, title, or discipline apply across every revision of the drawing. > **Note:** Renaming a sheet to a number that's already in use can create a conflict or merge situation. Check what's already sitting at the destination number before you save. #### Edit one revision **Edit Revision** — on the row's actions in a drawing set's sheet list and on the Drawings page — opens **Sheet number**, **Sheet title**, and **Sheet date** together, which is the fastest way to fix a title block that came through wrong without leaving the set you're reviewing. From a drawing set, you can also edit selected sheet dates or all of them in bulk. **Edit Drawing Details**, **Edit Revision**, and the bulk date edit all open from list view, so they take a desktop-width browser. The native app and phone-sized browser windows show sheets as thumbnails without these actions. > **Note:** Only the sheet date is genuinely revision-specific. Sheet number and sheet title identify the drawing, so changing either from **Edit Revision** carries across all of its revisions, exactly as it would from **Edit Drawing Details**. #### Delete carefully > **Note:** Deleting a published revision can renumber the revisions that remain, and deleting an entire drawing set can affect many drawings at once. Deletion is rarely the smallest tool for the job. Here's how to choose: - **Edit Drawing Details** or **Edit Revision** when the drawing or revision metadata is wrong. - **Unpublish** when a released revision should temporarily disappear from current drawings. - Upload and publish a new revision when you're issuing a correction that should remain part of the history. - **Delete** only when the page should no longer be part of the active record. #### Will renaming a sheet number rewrite its history? The number, title, and discipline apply across all revisions, so yes — the change follows the whole drawing. The revisions themselves stay intact. #### My markup didn't come across to the new revision. Why? Markup copies forward only when the new revision doesn't already contain markup, and takeoff marks never copy forward at all. Anything added to the old revision after the new one was confirmed stays where you put it. Get these habits right and your revision history stays a reliable record instead of a puzzle. ### Reordering drawing revision sets When an older issuance gets published after a newer one — the bid set goes up a week after IFC — its sheets become the current revisions and the field sees the wrong plans. Reordering the drawing sets puts each sheet's revision history back in the order the plans were actually issued. The order of the published sets in a drawing area decides revision numbers: the newest set holds each sheet's current revision, and older sets fill in the history behind it. Fixing that order is a web task — it isn't in the native app. #### Reorder the sets 1. From the Drawings page, select **Add/Edit Drawing Sets** to open the Drawing Sets page for the area. 2. Select **Reorder Revisions** in the upper right. 3. In **Reorder Drawing Revisions**, drag each set by its handle between **Newest** at the top and **Oldest** at the bottom. Each row shows the set name, how many published sheets it holds, and when it was first published. 4. Select **Reorder Revisions** to save. Only sets with at least one published sheet are listed, and the dialog needs two of them. With fewer, it reads "This drawing area needs at least two published drawing sets." and there's nothing to save. #### What changes when you save Saving republishes sets to match the new order, starting with the oldest set that changed position and including every set newer than it. Rows that will be republished are highlighted in the dialog before you save. Those sheets get new revision numbers and publish dates that follow the order you set, and the set at the top becomes the current revision of each sheet it contains. Older sets below the first change keep their revisions and dates. Unpublished sheets aren't touched. The reorder shows up in **View Drawings Activity Log** for the area, listing the sets in their new order. > **Note:** A revision-changes report that already exists isn't rewritten when you reorder, so it still describes the order the set had when the report was generated. #### Why don't I see Reorder Revisions? You're in the native app, or your role doesn't have drawing-management access. Open the Drawing Sets page in a browser, or ask a project administrator to check your drawing permission. With the sets in the right order, every sheet's current revision is the one your team should be building from. ### Viewing revision changes Publishing a set does not, by itself, write the briefing of what changed. Once revised sheets from a set are published, anyone who can view drawings can select **Generate revision report** on that set. Open the finished report when you need to brief the trades — it isn't on the Drawings index. #### Open the report 1. From the Drawings page, select **Drawing Sets**. If you manage drawings, the same button reads **Add/Edit Drawing Sets**. In the native app, both live in the **⋯** menu. 2. Find the set whose revised sheets were published. With view-only access, the list shows published sets only. 3. If no report exists yet, select **Generate revision report**. The control sits on the Drawing Sets list and as a banner on the set itself. 4. While the description is still running, the set shows **Generating revision changes…** and the link isn't clickable yet. 5. When it's ready, the banner reads **Revision changes are ready**. Select **View revision changes**. Anyone with **View drawings** can generate the report and open it. Failed generations don't leave a banner — a failed report route is simply not found. Partial completes can still list undescribed sheet numbers in the briefing. The report is one per drawing set, and it describes sheets that are new revisions of existing drawings. A set holding only first issues (Rev. 0) has nothing to compare against, so **Generate revision report** doesn't appear for it. Once a report exists, publishing more revised pages from that set updates the same briefing rather than creating another one. > **Note:** If you published revised sheets and never see **Generate revision report** or **Revision changes are ready**, nobody has generated the report yet. Publishing alone will not create it. #### Read the briefing The page title is the drawing set name. The header shows the revision range, how many changed sheets are listed, and when the report was generated. The briefing is a short AI summary — why the set was issued, the main layout or scope shifts, and which trades need to coordinate — with sheet numbers you can follow. Related **RFI**, **Submittal**, **Change order**, and **Document** badges appear at the top when several sheets share them, and again on the individual sheet cards. Sheets are grouped by discipline. Each card has a thumbnail (opens the viewer), the sheet number, the revision range, the title, and what changed. Sheets with no material change stay off the list, so a 40-page set might only show the eight that actually moved. This work runs as an internal Agent pass. It does not appear in **All Chats** or under **Use a Skill**. #### Where is View revision changes? On the drawing set, not on the current Drawings index. Open **Drawing Sets** (or **Add/Edit Drawing Sets**), then the set. If nobody has generated the report yet, you'll see **Generate revision report** there instead of the view link. You now have a briefing you can send the trades. ## Find and manage current drawings ### Using the Drawings page The Drawings page is your project's current drawing index. It shows the latest published revision of every sheet in the selected drawing area, which makes it the one place to go when you need to be sure you're looking at today's plan. When the project has more than one drawing area, switch areas with the tabs above the index. The search field reads **Search sheets and drawing contents...** on a single-area project, and includes the area name when there are several. ![Desktop: The Drawings page groups current sheets by discipline and provides search, tag, bulk, and view controls.](https://constructable.ai/help-images/drawings/using-the-drawings-page.png) Don't confuse it with **Drawing Sets**, which is where drawing administrators handle uploads, reviews, and unpublished pages. #### Choose a view Use the controls labelled **Drawing view** to switch between: - **List view** for sheet details, row selection, and bulk actions - **Thumbnail view** for a visual scan of the plans We remember which one you picked. Choose thumbnail view to browse visually or list view to review sheet details and select drawings in bulk. The **Drawing view** buttons only appear in a desktop-width browser. The native app, on phones and tablets, and a phone-sized browser window always show thumbnails, so list view, row selection, and **Bulk Actions** aren't available there. Thumbnail cards lead with the sheet number, title, and preview. When you need the drawing set a sheet came from or its full revision history, open the sheet and use its revision selector. #### Browse discipline groups Drawings are grouped by discipline. Select a group to expand or collapse it, or use **Expand All** and **Collapse All**. Two more groups appear when they have anything in them: - **Starred** for sheets you've marked as favorites - **Uncategorized** for drawings without a discipline > **Note:** Starred sheets still belong to their normal discipline. The Starred group is a shortcut, not a second copy of the drawing. #### Understand the list columns List view can show: - **Number** - **Title** - **Revision** - **Sheet Date** - **Drawing Set** - Tags - Available actions The index follows a deliberate project order based on discipline and sheet position, and column-header sorting isn't available. If the order is wrong for your project, a drawing administrator can change the shared order from **Edit/Reorder Disciplines & Sheets**. #### Open a drawing Select a sheet number, title, or thumbnail to open the latest revision in the drawing viewer. When you leave the viewer, we put you back where you were — same view, same expanded groups, roughly the same scroll position. Expected a sheet and don't see it? Check these four things: 1. The selected drawing area 2. Active search or tag filters 3. Whether the sheet was confirmed but not published 4. Whether the latest revision was unpublished #### Why can't I sort by sheet date? The index uses your project's own order — discipline first, then sheet position — instead of column sorting. That keeps everyone looking at the same sequence. #### Is a starred sheet a different drawing? No. Starring adds a personal shortcut group. The sheet stays in its discipline and nothing changes for anyone else. That's your current plan set, one click from the viewer. For more ways to land on the right sheet, continue with [Finding drawings with search, stars, and tags](#finding-drawings-with-search-stars-and-tags). ### Finding a detail with the Details tab Somebody asks where detail 6 is and the honest answer used to be "somewhere on the A5 sheets." Numbered details are still on the sheets — you get to them from the drawing viewer, not from a separate tab on the Drawings page. The Drawings page no longer has a Details tab. Area tabs switch drawing areas; they don't list callouts. To land on a numbered detail: 1. Open **Drawings** and pick the drawing area. 2. Open the sheet that holds the callout, or open the sheet that points at it. 3. Select the faint blue shaded box on a sheet-number or detail reference. When the reference names a specific detail, we zoom to that spot on the target sheet instead of dropping you at the top. 4. If you don't see a link, use viewer search for the detail number or title. Scanned or handwritten callouts often won't link. Details come out of the same processing that happens when a drawing set is uploaded. We only turn callouts into links when we're confident about them — a smudged or hand-drawn bubble may not light up even though you can read it, and the sheet itself is still the authority. > **Note:** A recognized detail is a callout on the sheet. It isn't a record you can edit, comment on, or assign. Find it from the reference on the plan, and you stop paging through A5 by memory. #### Why is there no Details tab on my drawing area? There isn't one on any drawing area. Switch areas with the tabs at the top of **Drawings**, then open a sheet and follow a detail link or search in the viewer. #### A detail I can see on the sheet isn't a link We only link detections we're confident about, so faint, rotated, or handwritten callouts get left out. Use viewer search or the sheet itself for those. ### Finding drawings with search, stars, and tags Nobody should have to scroll a full plan set to find one sheet. Search, stars, and tags each solve a different version of that problem — search for the sheet you can name, stars for the ones you open constantly, tags for the groups your project cares about. ![Desktop: Expanded discipline groups show sheet numbers, titles, revisions, dates, and personal star controls.](https://constructable.ai/help-images/drawings/finding-search-stars-tags.png) #### Filter by sheet number or title Use the search field on the Drawings page to filter the current area. Enter at least two characters. We match loosely against sheet numbers and titles, so a partial term will usually still land you on the right sheet. While you're online, the same search also reads the text inside the drawings — keynotes, room names, schedule entries — and keeps any sheet where the term appears, even when its number and title don't match. Number and title matches show up right away, and a spinner in the search field shows while we check the contents — or **Searching drawing contents...** when nothing has matched yet. Open a sheet from the filtered list and your term is already filled in when you open the viewer's search, so you can jump straight to where it appears. Results stay inside the current drawing area and any tag filter you've applied. If we can't search the contents, a notice tells you so and the list falls back to number and title matches: - Offline: "You're offline. Only sheet numbers and titles are being searched." - A failed content search: "Couldn't search drawing contents. Showing sheet number and title matches only." - A very common term: "Too many sheets mention this. Some content matches aren't shown, so try a more specific search." > **Note:** We remember your search text per drawing area. If the page looks unexpectedly empty when you come back later, you're almost certainly still filtered — clear the search field. Content search reads the text we pulled from each sheet during processing, so scanned or handwritten notes may not turn up. Once a sheet is open, use the viewer's own search to step through every match — see [Navigating and searching in the drawing viewer](#navigating-and-searching-in-the-drawing-viewer). #### Star frequently used sheets Select the star action on a drawing to drop it into your personal **Starred** group. Stars earn their keep for: - A superintendent's most-used logistics and floor plans - Sheets needed during a specific phase - A small review set you open over and over Starring changes nothing for anyone else, and it has no effect on publication or discipline. It's your shortcut. #### Organize and filter with drawing tags Tags are project-defined labels that group sheets across disciplines. Creating tag definitions and assigning them to one or many drawings takes drawing-management access. To filter: 1. Select **Filter by Tag**. 2. Choose one or more tags. 3. Choose whether drawings should match **any** selected tag or **all** selected tags. Active filters appear near the toolbar, and you can remove them one at a time or clear the lot. > **Pro Tip:** The active tag filter carries into the viewer's sheet selector, so you can page through the same filtered group without bouncing back to the index. Filter to `Permit Set` before you open a sheet and the whole review stays inside that group. #### Tags vs. disciplines Use a discipline for the sheet's primary professional category, and tags for the flexible project-specific groupings that cut across them. `Electrical` is almost certainly a discipline. `Permit Set`, `Building B`, or `Foreman Favorites` are better as tags. #### Why does search find nothing when I know the text is on the sheet? Check for the offline notice first — without a connection, the Drawings page search only looks at sheet numbers and titles. If you're online, the text may not be readable on that sheet: scanned pages and hand-drawn notes often don't come through. Try a shorter, more distinctive term, or open the sheet and search it from the viewer. #### Can other people see my starred sheets? No. Stars are personal. Use a tag when you want a group everyone on the project can filter by. Between the three, you should be able to get to any sheet in a couple of seconds. ### Using bulk actions, activity, and notifications Retagging forty sheets one at a time is nobody's idea of a good afternoon. In list view in a desktop-width browser, you can select a batch of drawings and retag, recategorize, download, or share them in one pass. The same menu is where you check who changed what, and where you turn the drawing area's email notifications up or down. #### Select drawings Use the row checkboxes to select individual drawings. Selecting a discipline group can select its visible descendants, which is the fast way to grab an entire discipline. > **Note:** Switch to list view and select at least one drawing to open **Bulk Actions**. Check drawing-management permission for editing actions. List view, the checkboxes, and **Bulk Actions** don't appear in the native app or in a phone-sized browser window, where the Drawings page shows thumbnails only. #### Available bulk actions Depending on your permissions, you can: - Add or remove drawing tags - Change disciplines - **Edit Sheet Dates** for the selected sheets — list view, with drawing-management permission. The dialog is **Edit Sheet Dates**; each row has **Sheet Date** and **Clear sheet date**. Save, and a toast confirms how many sheets were updated. - Download selected drawings - Create a shareable link for selected drawings Tag, discipline, and sheet-date edits need drawing-management permission. Downloads and share links are open to anyone who can view the selected drawings. > **Note:** Bulk tag editing adds or removes only the tags you choose — it isn't a wholesale replacement of every existing tag. Check which edit mode you're in before you save. #### View drawing activity Open the Drawings menu and select **View Drawings Activity Log** to review the events tied to that drawing area. It's the right place to settle questions like: - When was a set published? - Was a sheet unpublished? - Who changed or removed drawing information? > **Note:** The activity log tells you what happened in the past. When you need to know which revision is current right now, check the viewer instead. #### Manage notifications Drawing notification settings decide how much email a drawing area sends you, and the setting you pick for one area overrides your project and personal defaults for that area only. If you customized an area and want your normal settings back, reset it to defaults. Your personal and project notification settings are reachable from here too when the change should be broader. > **Note:** Notification options only affect the alerts you receive. They never change your permission to view or edit drawings. #### Why don't I see bulk actions? Switch to list view and select at least one drawing, then open **Bulk Actions**. If you don't see the **Drawing view** buttons at all, you're in the native app or a phone-sized browser window, which show thumbnails only. Open the Drawings page in a desktop-width browser to select and edit drawings in bulk. The activity log and notification settings are still in the Drawings menu — the **⋯** button in the native app. #### Does turning off drawing notifications hide drawings from me? No. Notifications and permissions are completely separate. Muting an area just means we stop telling you about it. One pass through list view and a whole discipline is retagged, downloaded, or shared. ### Downloading and sharing drawings You can pull down current drawings, a handful of selected sheets, a whole uploaded drawing set, or just the sheet you're looking at. The one decision worth making first is whether your recipients need today's plans, one historical upload package, or a single sheet. #### Download all current drawings From the Drawings menu, select **Download All**. The PDF you get contains the latest published revision of every drawing in the selected area. This is the right answer most of the time when you're distributing a current plan set. #### Download selected drawings In list view: 1. Tick the rows you want. 2. Open **Bulk Actions**. 3. Select **Download Selected**. The menu counts your selection into the label, so it reads **Download Selected (12 sheets)**. You get a PDF containing the latest revision of only those drawings. Use **Download Selected** for a chosen group from the current drawing index, **Download All** for all current drawings, or export selected pages from an individual drawing set for pages from that upload package. Selecting rows takes list view in a desktop-width browser. In the native app and in a phone-sized browser window, **Download All** and **Download Entire Set** are the download options; in the native app they're in the **⋯** menu. #### Download a drawing set Open a drawing set and choose **Download Entire Set**, or select specific pages within the set. A drawing set page works the same way the Drawings index does, which matters on a large issuance. Search it from the same search field as the index — sheet numbers, titles, and, while you're online, the text inside the set's sheets — narrow it with **Filter by Tag**, open or close the discipline groups with **Expand All** and **Collapse All**, and switch between **List view** and **Thumbnail view** with the **Drawing view** buttons. In list view you also get **Published At** and **Status** columns, so you can see at a glance which pages of the set went out and which are still **Unpublished**. Tick rows there and the set's bulk actions apply to that selection. As on the Drawings index, the native app and phone-sized browser windows show the set as thumbnails only, so selecting pages takes a desktop-width browser. > **Note:** A drawing-set download gives you that upload package as it was, which can include older revisions and unpublished pages. Check what's in it before you hand it to someone as the current project set. #### Include markup The export dialog has an **Include published markup** checkbox, on by default. Clear it when the recipient needs clean plans; leave it on when the annotations are the whole point of the handoff. > **Note:** You only export markup you're allowed to see, so your access to RFIs, Submittals, list items, and other records changes what shows up. Two people exporting the same sheet can end up with different PDFs. #### Create a shareable link Choose **Share Download Link** for all or selected drawings. We generate the PDF, upload it, and hand you a link to copy. > **Note:** That link points at a snapshot, not a live view. When drawings change, generate a new link — the old one keeps serving the old package. #### Download the drawing log Select **Download Drawing Log** for a PDF register of the area's latest published drawings. It carries the sheet and revision metadata you'd want for a transmittal or coordination record, and it's a register rather than a plan set. #### Export the current sheet From the drawing viewer's toolbar or context menu, select **Download** to export the active sheet with its visible markup. Wait until the sheet has finished loading — the control stays disabled with **Download is available once the sheet finishes loading** until then. > **Note:** The current-sheet export has no **Include published markup** checkbox the way the bulk export does — it takes whatever is on screen. If you need it clean, select **Hide all markup** in the viewer first, then download. There's no separate print workflow in the viewer. Export the PDF and print it from your normal PDF application. #### Which download gives me the plans we're building from today? **Download All**. It assembles the latest published revision of every drawing in the area. **Download Entire Set** gives you a historical upload package instead. #### I sent someone a share link last month and it's out of date. Can I refresh it? Generate a new link. The existing one points at the package we built when you created it. Pick the option that matches the ask and your recipients open exactly the set you meant to send. ## View, compare, and mark up ### Navigating and searching in the drawing viewer The drawing viewer is where you'll spend most of your time. You can inspect sheets, move through revisions, search the text printed on the plans, and work with markup without ever going back to the drawing index. ![Desktop: The drawing viewer keeps the current sheet and revision beside navigation, search, markup, and drawing tools.](https://constructable.ai/help-images/drawings/navigating-viewer.png) ![Desktop: Drawing content search shows matching text results beside the open sheet.](https://constructable.ai/help-images/drawings/content-search.png) #### Pan, zoom, and select Use the **Pan** tool to move around the sheet and the **Select** tool to work with markup and pins. On desktop you start in **Select**; in the native app, and whenever the scrollwheel-zoom preference is on, you start in **Pan** instead. You don't have to switch tools to pan. Hold the spacebar while you click and drag, and you'll pan without leaving Select. > **Note:** The Pan tool won't let you select or edit ordinary markup — that's the point of it. Pins are the exception: you can still tap a pin while panning to open it. To zoom, press `+` and `-`, hold Control (Command on Mac) while scrolling, or pinch on a trackpad. #### Copy text off a sheet Retyping a keynote or a door-schedule row into an RFI is how typos get into correspondence. **Select text**, under **Selection tools** in the toolbar, lets you drag across the text printed on the sheet instead. A **Copy** button appears beside what you've highlighted; select it and we confirm with **Text copied**, ready to paste anywhere. This reads the sheet's own text layer, so it works on drawings issued as real PDFs and comes up empty on scanned or photographed sheets — the same reason viewer search can't find a phrase on a scan. > **Note:** To copy text from a sheet, open that sheet and choose **Select text**. Close the comparison first to work directly with the sheet text. Shortcuts on desktop: | Key | Action | | -------------- | ------------------------------------- | | `S` | Select tool | | Hold `Space` | Pan while Select stays active | | `M` | Measure distance | | `A` | Measure area | | `D` | Pencil | | `H` | Highlight | | `T` | Text | | `K` | Cloud | | `C` | Comment pin | | `+` / `-` | Zoom in and out | | `←` / `→` | Previous and next sheet | | `Esc` | Return to the default tool | | `Delete` | Remove the selected markup | | `Cmd/Ctrl + Z` | Undo | | `Cmd/Ctrl + A` | Select everything in the active Topic | | `Cmd/Ctrl + O` | Open the sheet selector | | `Cmd/Ctrl + F` | Open search | Your scroll-wheel behavior depends on your user setting. If the wheel zooms when you expected it to scroll, check **Scrollwheel zooms the drawing viewer** under **User Preferences** in [My Account](https://constructable.ai/help/account-and-security#update-personal-preferences). On touch devices, pinch to zoom and drag to pan — no keyboard shortcuts needed. On phones, sheet and revision controls live in the bottom bar while Pan or Select is active. When you choose a markup or measurement tool, that space changes to tool controls; tap the checkmark button at the right end of the bar to put the sheet controls back. We load a quick preview first, then replace it with detailed PDF tiles as needed. A brief change in sharpness while zooming is normal. #### Move between sheets Use the previous and next buttons, arrow keys, or mobile swipe controls to move through the current drawing order. Open the sheet selector to: - Browse thumbnails by discipline - Filter by sheet number or title - See starred sheets - Replace the current sheet - Open a sheet in a new tab - Open the sheet in Split View, or overlay it on the one you're looking at If you entered the viewer with a drawing-tag filter active, the selector stays within that filtered set until you clear the filter. #### Search drawing content Viewer search reads the text extracted from the drawing sheets themselves, not just sheet titles — so you can go looking for a keynote or a room name. You can: 1. Enter a term or phrase. 2. Use exact matching when wording matters. 3. Preview matching sheets. 4. Open a result and jump to its highlighted location. > **Note:** Scanned or low-quality text may not be fully searchable. If you can see a phrase on the sheet but search won't find it, try a shorter distinctive term or search by sheet number instead. #### Follow sheet-number links We recognize many of the sheet references printed in the plans — both the plain sheet numbers in the text and the circled detail bubbles that point somewhere else. They show up as a faint blue shaded box over the reference. Select one and we'll open the target sheet, so you're not hunting through the index for the detail a plan just pointed you at. When the reference names a specific detail, we go one better and zoom to that detail on the target sheet instead of leaving you at the top of it. See [Finding a detail with the Details tab](#finding-a-detail-with-the-details-tab) if you're looking for a callout from the index rather than from a reference already on screen. Links depend on readable drawing text or a recognized callout, plus a matching sheet in the area. A reference won't link if the target sheet is unpublished, numbered differently, or wasn't recognized during processing. Sheet numbers made only of digits, like `101` or `3.1`, link from recognized callout bubbles but not from plain text in the notes. For those, `3.1`, `3-1`, and `3 1` all match sheet 3.1, but `31` doesn't. Plain-text links need a sheet number with both letters and digits, like A101. Follow a sheet link to open the referenced sheet or detail. Use **Open in Split View** when you want to keep the original sheet beside the destination, or use the viewer back history to return to your starting point. #### Hide markup temporarily Select **Hide all markup** in the viewer when you need a clean look at the underlying sheet; the same control then reads **Show all markup** to bring it back. On narrow layouts the button shows only the word **Markup** with an eye icon. Either way it only changes what you see — nothing is deleted or unpublished. Pins go with it. Comment, photo, RFI, Submittal, and list-item pins all disappear alongside clouds and text, which is what you want when you're reading the sheet or capturing it for someone else, and worth remembering when a pin you were about to open vanishes. #### Why does the sheet look blurry for a second when I zoom? We load a quick preview first and swap in detailed PDF tiles behind it. That brief change in sharpness is the handoff, not a problem with the file. #### My scroll wheel zooms when I want it to scroll. Can I change that? Yes. **Scrollwheel zooms the drawing viewer** is a user preference under **User Preferences** in [My Account](https://constructable.ai/help/account-and-security#update-personal-preferences). Learn the handful of shortcuts above and you'll move through a plan set about as fast as you can think. ### Comparing sheets and revisions with Split View Split View puts two sheets or revisions side by side so you can read both of them properly instead of flipping back and forth and trying to hold one in your head. You'll need access to both sheets or revisions you want to compare. ![Desktop: Split View compares the ground-floor and second-floor plans in separate panels with independent sheet controls.](https://constructable.ai/help-images/drawings/split-view.png) #### Open Split View From the sheet or revision selector: 1. Find the second sheet or revision. 2. Choose **Open in Split View**. 3. Resize the panels as needed. You can compare two revisions of one drawing, or two entirely different sheets. #### Work with the panels Whichever panel your pointer is over is the one that gets your keyboard shortcuts and tools, so move the pointer before you press anything. Split View controls let you: - Swap the primary and secondary sheets - Open a panel in a new browser tab - Close the secondary panel - Navigate each panel's sheet or revision Each panel pans and zooms on its own to start with. Two buttons on the divider between them change that. The padlock is **Lock Views**, which pins both panels to the same spot on the sheet; select it again for **Unlock Views**. Below it, the arrows button syncs movement across views, so panning or zooming one panel moves the other with it. Both work best when the two sheets share a similar size, orientation, and origin. > **Note:** Split View and opening a revision in a new tab are available on desktop web, mobile web, and the native app. Use the sheet or revision selector to choose the action. #### When Split View is the right tool Split View is what you want when: - You want to read both sheets normally. - The sheets have different layouts. - You're comparing a plan with a related detail. - You want independent markup context on each side. Reach for an overlay instead when the sheets represent the same geometry and you want the differences stacked directly on top of one another. #### Calibrate a sheet Close the secondary panel before setting or correcting a sheet's scale, then reopen Split View to continue comparing. #### Why is calibration greyed out? Split View is open. Close the second panel and the scale controls come back. #### Can I use Split View on my iPad? Yes. Open the sheet or revision selector and choose **Open in Split View** in the native app or mobile web. Overlay comparison is also available. Two plans, both readable, one screen — which is usually all a coordination question needed in the first place. ### Comparing drawings with overlays An overlay stacks one sheet directly on top of another so changes to the linework jump out at you. It's the fastest way to answer "what actually moved between Rev. 2 and Rev. 3?" when both drawings cover the same physical area. ![Desktop: Overlay comparison places two drawing revisions together with comparison-mode and blend controls.](https://constructable.ai/help-images/drawings/overlay-comparison.png) #### Start an overlay Open the sheet or revision selector, find the comparison sheet, and choose the overlay action. You can start one from the revision selector too. On phones and tablets, the sheet picker and overlay controls shift into compact layouts. Overlays work in supported desktop and mobile browsers, including Safari on iOS, and in the native app. A smaller screen changes the control layout, not what the comparison can tell you. #### Choose a comparison mode - **Differences** tints the two sheets against each other so anything that moved shows up as one colored line next to another. Reach for this when you're chasing a dimension or a wall that shifted. - **Ghost** fades one sheet to a faint image over the other, which keeps both drawings legible. Reach for this when you still need to read notes and callouts while you compare. - **Highlight** picks out the regions that differ rather than the individual lines. Reach for this first on a busy sheet, to find the two or three areas worth looking at closely. For **Differences** and **Ghost**, the **Blend Amount** slider shifts the balance between the two sheets. Slide it back toward the middle if the comparison starts getting hard to read. To take the overlay with you, select **Download** to export the live composite as a PDF on desktop web, mobile web, or the native app. Finish aligning the sheets and wait for the overlay to be ready before exporting. #### Align sheets with three points If the sheets don't line up: 1. Select **Align Sheets**. 2. Choose three matching reference points on the first sheet. 3. Choose the same three points on the second sheet. 4. Review the aligned result. > **Pro Tip:** Pick reference points that are far apart and unmistakable — grid intersections or fixed building corners. Three points clustered in one small area will look aligned right there and drift badly across the rest of the sheet. > **Note:** Finish or cancel alignment before choosing a comparison mode or closing the overlay. #### A comparison is not a change record An overlay shows you what looks different. It doesn't decide what's contractually significant, and it isn't a record anyone can act on later. Confirm what you find against the issued documents, then capture the decision in a Topic, an RFI, or whichever workflow the change belongs in. #### Should I use an overlay or Split View? Overlay when the two sheets cover the same geometry and you want differences stacked on top of each other. Split View when the layouts differ or both sheets need to stay readable. #### The two sheets won't line up. What now? Use **Align Sheets** and pick three widely separated matching points on each sheet, like grid intersections. Two minutes with an overlay usually tells you more about a revision than reading both sheets ever would. ### Adding and editing drawing markup Markup is how you point at something on a plan and make everyone else see it too — a cloud around the conflict, an arrow at the detail, a note explaining what you need. Draw it in the viewer, then save it where the right people will find it. ![Desktop: The desktop drawing viewer displays the markup toolbar for drawing, text, shape, color, and line controls.](https://constructable.ai/help-images/drawings/markup-toolbar.png) Markup never belongs to the drawing itself. It belongs to a **Topic** — a named bundle of markup plus the conversation about it — or to a record like an RFI that carries its own Topic. That's why your permission to mark up a sheet comes from Topics access rather than from drawing access, and it's why you'll see a save step that asks where the work should go. #### Choose a markup tool The viewer includes: - Pencil - Highlighter - Text - Callout — a boxed note with a leader arrow pointing at the thing it's about - Lines, arrows, and **Double arrow** — an arrow with a head at both ends, for marking a span or a clearance - Clouds - Rectangles, circles, and ellipses - Cross symbols Choose a color and line thickness before drawing, or select existing markup to update it. #### Add a callout **Callout** sits with the other markup tools in the toolbar. It's the one to reach for when a note needs to point at something specific — "verify this embed" with an arrow at the embed — instead of floating near it. 1. Select **Callout**. 2. Press where the arrow should point. 3. Drag to where you want the text box, and release. 4. Type your note. A single click without dragging places the box up and to the right of the arrow tip, or flips it when that would run off the visible sheet. If you finish without typing anything, we remove the empty callout. Callouts are included when you **Download** a sheet, and the text stays selectable in the PDF. #### Edit text you've already placed With **Text** selected, click an existing text markup to put the cursor back in it. **Callout** works the same way on an existing callout. This works on markup in the Topic you have open, or on your unsaved draft markup when no Topic is open. Markup from other Topics is faded and read-only. There are three thicknesses — **Thin**, **Normal**, and **Thick** — and eight colors. Picking a color or size with nothing selected sets it for whatever you draw next; picking one with markup selected restyles that markup instead. #### Select and edit markup Use the Select tool to choose one or more shapes. Depending on what you've selected, you can: - Move or resize it - Copy, cut, and paste - Copy or move it to another Topic - Delete it Standard clipboard shortcuts work on desktop, and the viewer's context menu has the same actions. > **Note:** Undo and Redo cover the current editing session only. Once you leave the viewer, that history is gone, so don't count on undoing your way out of something tomorrow. #### Why some markup looks faded Open a Topic and the sheet's other markup fades back. That's deliberate: with a Topic open, the markup belonging to it stays at full strength while markup from every other Topic drops to half opacity, so you can see your conversation's work without losing the surrounding context. Close the Topic and everything returns to normal. Pins never fade. A comment, RFI, or List Item pin stays fully visible no matter which Topic is open, and changing **Opacity** on a markup tool affects lines, shapes, and highlights — not pins. You should always be able to see that a location already has something attached to it. Faded markup isn't just a visual cue — it's also read-only. Select it and a small popover tells you which Topic it came from, with a link across to it: **Open Topic** for a plain Topic, or **Open RFI**, **Open Submittal**, or **Open Takeoff** when the markup belongs to one of those instead. On a phone, the active tool, color, and line thickness are grouped into the bottom toolbar. The full tool list opens in a drawer, and the checkmark button at the right end of the bar returns you to Pan without deleting the markup you just created. #### Finish measurements and multi-point shapes Some tools stay active while you keep adding points. Select **End** or **Done** when the shape is complete, or switch back to Pan. > **Note:** If the viewer seems to keep drawing every time you try to navigate, you've still got a tool active. Check the toolbar and return to Pan or Select. #### Hide vs. delete **Hide all markup** gives you a clean drawing view for a moment and puts everything back when you select **Show all markup**. **Delete** removes selected markup from its Topic for good. When you delete a pin, we ask you to confirm if that pin is attached to comments or another project record. #### Save work in context Draw anything while no Topic is open and you land in **Draft Mode** — a banner across the top of the viewer says so, with **Save** and **Discard** buttons on it. Your work is yours alone and isn't part of any shared record until you select **Save** and choose where it goes. RFI and List Item pins are the exception: they never go into Draft Mode, because they link straight to their own records instead. #### Why can't I edit markup that's already on the sheet? It belongs to a different Topic. Faded markup is read-only — select it and use the **Open Topic** link in the popover to switch into the conversation that owns it. Once that Topic is open, select **Text** or **Callout** and click the existing note to change its wording. #### Where did my markup go after I closed the viewer? If it was still in Draft Mode, it was never saved to a Topic. We do warn you first: leaving the viewer with unsaved draft markup raises an **Unsaved Draft Markup Warning**, where **Save To Topic** opens the save dialog, **Discard and Exit** throws the work away, and **Cancel** keeps you on the sheet. Your observation is now on the plan where the next person will actually see it. Continue with [Saving and collaborating with Topics](#saving-and-collaborating-with-topics). ### Saving and collaborating with Topics A Topic keeps related drawing markup and the conversation about it in one place, across a single sheet or a dozen, without unrelated notes getting mixed in. Think of it as a layer you and a few other people are drawing on together. How wide an audience you can share one with depends on your Topics permissions. ![Desktop: The drawing viewer's Topics panel provides a Create New Topic action beside the open sheet.](https://constructable.ai/help-images/drawings/save-topic.png) #### Work in Draft Mode Draw with no Topic open and you're in Draft Mode, with a banner across the top of the viewer saying so. Your work is private and isn't part of any shared project record yet. **Discard** on that banner throws it away; **Save** opens the **Save Markup** dialog. The dialog tells you what to do: "Choose an option and then click "Save Markup"". Pick one of four: - **Private** keeps it to yourself. Repeated private saves collect in one personal Topic, so this is the low-friction option for sketching something out before you're ready to show anyone. It's selected when the dialog opens. - **Publish to Project** shares it with everyone on the project, gathered into a single shared Topic. - **Create New Topic** gives the markup its own title and its own sharing settings — the right choice when this is real coordination someone needs to respond to. Choosing it opens a title field and **Who should have access to this topic?**. - **Save to Existing Topic** merges it into a conversation that's already running. Pick it from **Select existing Topic**. Then select **Save Markup**. It's the same button whichever option you chose, so the option you picked is what decides where the markup lands. > **Note:** If **Private** is the only option, you don't have permission to create or publish Topics. Your markup is still saved and still yours; ask a project administrator about Topics access if you need to share it. If you try to leave with unsaved draft markup, Constructable warns you. Saving before navigating is the safest choice. Private and project saves get named for you. Your personal Topic is titled **Jane Doe's Private Markup**, with your own name in it, and the shared one is **Public Markup**. Those defaults are fine for scratch work and useless for anything you want found again later, so use **Create New Topic** with a real title once markup matters. Only comment markup and pins can be saved into a Topic this way. RFI and List Item pins belong to their own workflows and follow their own create-or-link flow instead. #### Create a useful Topic Give the Topic a clear, specific title, such as `Level 2 corridor coordination` instead of `Review`. A Topic can include: - Markup on multiple sheets - Comment threads - Attachments and media - Screen recordings - Mentions and notifications Your team can return to the marked locations and see that context together. #### Choose visibility Depending on your permissions, a Topic can be: - Private to you or shared with specific people - Available across your organization - Available across the project Start with the narrowest audience that can actually finish the work. Widening access later is easy, and it's the natural move once an internal review is ready for the broader team. > **Note:** Topic permissions are separate from drawing permissions. Someone can have full access to a sheet and still not see every Topic sitting on it. #### Manage Topic markup Select markup to copy or move it to another Topic, RFI, or Submittal. Copying leaves the original in place; moving changes where the markup belongs. Archive a Topic when the work is done or has gone quiet. Archiving clears the clutter without treating the conversation as disposable. > **Note:** Archived Topics drop out of **Select existing Topic**. If a Topic you were expecting isn't there, someone probably archived it — **Unarchive Topic** brings it back. The same **⋯** menu also has **Delete Topic**, which is not a stronger archive. Deleting removes the Topic along with the markup drawn into it and the comment Threads underneath, and nothing brings it back. Reach for it when a Topic was started on the wrong sheet, not when coordination finished. Individual comment pins work the same way: **Delete Thread** in a thread's menu removes that conversation permanently, while **Resolve** closes it and leaves it readable. Exporting a Topic to PDF includes its drawn markup, text, and measurements, but not comment pins. That's usually what you want in a distributed set, though it does mean the PDF won't show where the conversations were. Point people at the Topic itself when the discussion is the substance. Markup changes sync with the project as you work. We use shape locking to cut down on conflicting edits, but two people still shouldn't be editing the exact same shape at the same moment. #### What's the difference between saving privately and creating a new Topic? A private save drops everything into one personal Topic named after you — fine for scratch work. **Create New Topic** gives the markup its own title and sharing settings, which is what you want when someone needs to respond to it. #### Why is Create New Topic missing for me? You don't have permission to create or publish Topics. **Private** still works and your markup is still yours. Ask a project administrator about Topics access. #### Can I move markup from one Topic to another? Yes. Select it and copy or move it to another Topic, RFI, or Submittal. Copying keeps the original where it is. Your markup and the conversation about it now live in the same place, on the sheet where it happened. ### Measuring and calibrating drawings You can measure lengths and areas right in the drawing viewer, which beats walking a tape for anything you're sizing up. The number is only as good as the sheet's scale, though, so check the revision and the scale before you write anything down. Anyone who can view drawings can measure. Setting or correcting the sheet's scale is different — that changes the number everyone else gets, so it takes drawing-management access. ![Desktop: The measurement tools show drawing scale and calibration controls beside the open sheet.](https://constructable.ai/help-images/drawings/measure-calibrate.png) #### Check the scale first We may detect a scale while processing the drawing. When it was set automatically, the measurement toolbar says so. Before you rely on a measurement: 1. Confirm that you're on the correct revision. 2. Check the displayed scale. 3. Measure a known dimension if one is available. 4. Recalibrate if the result is off. > **Note:** A scale printed in a title block may apply to only one viewport. Detail sheets carrying several scales deserve extra care before you trust a number off any one of them. #### Calibrate from a known distance Open **Page Scale Calibration** and choose **Calibrate by Line**. 1. Select **Calibrate by Line**. 2. Click the two ends of a dimension you know the real-world length of. 3. Enter that real-world distance. 4. Save the calibration. If the sheet is drawn to a standard architectural scale, you don't have to draw a line at all — **Page Scale Calibration** offers the common scales as pills, from **1/64"=1'-0"** up through **1"=1'-0"**, plus **1"=30'-0"** for civil sheets. Tap the one printed in the title block. The pills only appear while the sheet has no calibration line on it; once there is one, that line is the scale until you change it. The dialog also offers a **Round to Nearest** setting — 1 inch, 1/2 inch, 1/4 inch, 1/8 inch, or 1/16 inch — which controls how measurements are reported. Once a calibration line exists, the toolbar shows **Using Calibration Line**, and you can nudge either end of that line with the Select tool if you placed it slightly off. Update the real-world value if you do. Use the longest reliable known dimension you can find. Short reference distances magnify every bit of sloppiness in where you clicked. > **Pro Tip:** Sanity-check a fresh calibration by measuring a second known dimension before you trust any of the numbers. It takes five seconds and catches the case where you picked the wrong reference line. > **Note:** Close the second panel before changing calibration, then reopen Split View to continue comparing. #### Measure distance Choose **Measure** and place points along the path. Multi-segment measurement is what you want for routed work — conduit, pipe, anything that turns corners — rather than straight-line distance. The toolbar keeps a running total as you work. Select **End** to finish the run, then **Done** to leave the tool. On phones, measurement actions collapse into compact icons in the bottom context bar. The current total stays visible, though sheet-wide and drawing-wide takeoff totals are much easier to review on a larger screen. #### Measure area Choose **Area** and trace the perimeter. Close or finish the polygon and we'll calculate the area. > **Note:** Takeoff settings may display square feet, square yards, or multiplied units. Check which unit you're looking at before that number lands in an estimate. #### Precision and copied values Measurements follow the sheet's **Round to Nearest** setting, and the measurement toolbar lets you copy the current measurement, the sheet total, or the drawing-wide total to your clipboard. Treat digital measurement as a planning aid. Poor scans, an incorrect scale, and resized source PDFs all affect accuracy, so confirm critical dimensions against the contract documents or the field before anyone builds to them. #### How do I know whether a sheet's scale is trustworthy? Measure a dimension you already know. If it comes back right, the scale is good; if not, recalibrate from a known line. The toolbar also tells you when the scale was detected automatically rather than set by a person. #### Can I fix a calibration line I placed slightly off? Yes. Once a calibration line exists, nudge either end with the Select tool, then update the real-world value to match. With the scale verified, the numbers you pull off the sheet are ones you can plan around. ## Connect drawings to project workflows ### Using pins, comments, and screen recordings A pin ties an exact spot on a drawing to a conversation or a project record, so instead of writing "the third column from the north stair, roughly," you take people straight there. Which pins you get depends on what you can already reach — pinning an RFI to a sheet takes RFI access, not just drawing access. ![Desktop: The drawing pin menu offers Comment, Photo, List Item, RFI, and Submittal pin types.](https://constructable.ai/help-images/drawings/pin-types.png) #### Choose a pin type The pin tools are: - **Comment** - **Photo** - **List Item** - **RFI** - **Submittal** On desktop, **Comment** sits on the toolbar as its own button and the rest live behind the pin expander next to it. **Extract** isn't a pin at all — it sits under **Selection tools** with **Select text**, covered in [Extract text from a region](#extract-text-from-a-region). Each tool is gated on the matching permission, so your list may be shorter: **Photo** needs photo write access, **Comment** needs comment write access, and **List Item**, **RFI**, and **Submittal** are hidden from bidders entirely. **RFI** and **Submittal** also depend on your organization's package. On a Field-package organization those two tools aren't offered, no matter what your role allows, because RFIs and Submittals aren't part of that package. **Comment**, **Photo**, and **List Item** are available on every package. #### Place a pin 1. Open the correct sheet and revision. 2. Choose a pin tool. 3. Select the exact location on the drawing. 4. Choose whether to create a new record or attach one that already exists. For an RFI, those choices read **Create new RFI here...** and **Pin existing RFI here...**; the other pin types follow the same pattern with their own record name. 5. Add the details the team will need. Selecting a pin that's already placed opens a summary. From there you can read the key information, open the whole record — **View Full RFI**, for an RFI pin — or keep the conversation going. > **Pro Tip:** If the RFI already exists, choose **Pin existing RFI here...** instead of **Create new RFI here...**. You get the same marker on the sheet and one record instead of two for somebody to reconcile at closeout. #### Place and manage a Photo pin A Photo pin keeps field evidence at the exact drawing location where it was captured. Choose **Photo**, place the pin, then add media: - In the native app, select **Take photos** to use the camera or **Choose existing photos** to use media already on the device. - On web, upload a supported image or select **Choose existing photo** to reuse a project photo. - On a pin that already has photos, use **Take**, **Add**, or **Pick** to add more. Select **Edit**, remove individual photos, then select **Done editing** when you're finished. The pin shows how many photos it holds. Photos uploaded from a pin are kept in the system-managed Pinned album, and opening one in Photos shows the connected sheet under **Sheets**. > **Note:** Removing a photo from the pin changes that drawing connection. Deleting the pin and deleting the photo itself are separate actions, so read the confirmation before removing project evidence. #### Add comments A comment pin starts a conversation anchored to that location. It's the right tool for quick coordination that doesn't need the structure of an RFI, Submittal, or List Item. Make the first comment do some work: - What did you notice? - What response or action is needed? - Who should be involved? Tag the people who need to weigh in — a mention is what actually notifies them. On a phone, select **Reply** to open the reply dialog. Desktop keeps the reply form inline with the thread. #### Record your screen Screen recording lets you talk through a drawing while you navigate it — zooming in, pointing at things, explaining the problem out loud. The recording attaches to the relevant comment conversation. A recording can run up to 10 minutes. > **Note:** If you try to leave the drawing during an active recording, we'll warn you that the recording may be discarded. Stop it and let it attach before you navigate away, or you'll lose the whole take. Use the record control in the drawing viewer on desktop web, mobile web, or the native app. People with access can watch the saved recording on any platform. #### Extract text from a region **Extract**, under **Selection tools** in the toolbar, reads a region of the sheet the way a person would rather than pulling the PDF's text layer, so it's the one to reach for on a scan or on a schedule whose columns won't come across cleanly. Click and drag around the text you want, and give it a moment — a dense schedule takes longer than a couple of notes. If the drawing was issued as a real PDF and you only want a line or two, **Select text** in the same group is quicker; see [Copy text off a sheet](#copy-text-off-a-sheet). When it finishes, you'll see a preview plus three actions: - **Copy Rich Text** takes the words and their formatting, which is what you want when pasting a schedule or table somewhere that will keep the layout. - **Copy Plain Text** takes just the words. - **Clear Extraction Area** discards the selection so you can try a different region. Results depend on how clean the source PDF is, so read what came out before you paste it somewhere that matters. #### Delete pins carefully > **Note:** Deleting a pin removes the drawing marker and may affect its connected viewer context, but it doesn't necessarily delete the underlying RFI, Submittal, or List Item. Read the confirmation message before you continue — it tells you which of the two you're about to do. #### Should I use a comment pin or an RFI? Use a comment for coordination that just needs an answer from someone on the team. Use an RFI when the question needs a formal design response and a record of it. #### Can I record my screen from the app on my phone? Yes. Open the drawing viewer and use the record control to capture your screen. People with access can also watch recordings on their phones. Anyone who opens that sheet now finds the conversation waiting at the exact spot it's about. ### Creating and viewing RFIs from drawings When a drawing raises a question, the drawing is where the question should start. An RFI pin keeps a formal question attached to the exact location that prompted it. You'll need RFI access on top of drawing access to use it. #### Create an RFI from a sheet 1. Open the relevant sheet and revision. 2. Choose the **RFI** pin tool. 3. Place the pin at the affected location. 4. Create a draft RFI or connect an existing one. 5. Add the RFI details and continue the normal review workflow. > **Note:** The pin gives the RFI drawing context; it doesn't replace a clear title and question. Plenty of people will read this RFI in an email, not in the viewer, so write it so it stands on its own. #### Browse RFIs in the viewer Open the viewer menu and choose **RFIs**. The side panel lets you browse the RFIs and drafts you have access to, open their details, and see the markup or comments attached to them. Selecting an RFI can bring its drawing markup into focus. When an RFI touches several locations, its marked-up sheets are the fastest way to walk through all of them. #### Draft visibility Draft RFIs may be limited to their creator or to people with broader RFI access. Publishing drawing sheets doesn't publish an RFI, and sharing a Topic doesn't change an RFI's status. #### Permissions RFI mode requires permission to view RFIs, and creating or editing one requires the corresponding write permission. Some project roles, bidders among them, won't see the RFI pin tool at all even though they can view drawings. > **Note:** If you can see an RFI pin but not its details, your RFI access is narrower than your drawing access. That's a permissions difference, not a broken pin. #### Does placing a pin send the RFI to anyone? No. The pin creates or connects the record; the RFI then follows the normal review workflow from there. #### Why can't I see the RFI behind a pin? Drawing access and RFI access are separate permissions. You have enough of the first to see the marker and not enough of the second to open the record. The question is now anchored to the plan that raised it, so whoever answers can see exactly what you were looking at. ### Working with Submittals and list items on drawings Submittal and List Item pins tie those records to the plan locations they're actually about, so the person picking the work up can see where it is rather than reading a description of it. You'll need Submittal or Punch List access on top of drawing access. #### Add or open a Submittal Reach for a Submittal pin when a drawing location relates to a product, a shop drawing, or an approval workflow. 1. Choose the **Submittal** pin tool. 2. Place the pin. 3. Create a draft Submittal or choose an existing one. 4. Complete the Submittal in the normal workflow. Open **Submittals** from the viewer menu to browse the items, drafts, comments, and related markup you have access to without leaving the drawing. > **Note:** The pin is context. The official Submittal record still controls its status, assignments, and approval history, so don't treat the marker as the source of truth. #### Add or open a List Item Use a **List Item** pin to record an issue at the exact place you observed it. From the pin, you can create a new item or connect one that already applies. Write enough description and attach enough media that someone can verify the condition without you standing next to them. Open **Lists** from the viewer menu to browse items along with their list context. #### Use the right workflow Two questions settle almost every case. First: does something have to happen before the work can proceed? If not, it's a comment. Second: who has to make it happen? - The architect or engineer has to answer a question about intent — **RFI**. - Someone has to approve a product or shop drawing before it's bought — **Submittal**. - A trade has to go back and fix something you can see — **List Item**. Pick wrong and the item still exists, it just stops showing up where anyone is looking for it. A concern buried in a comment thread never lands on a log, never gets a due date, and never appears in a report. #### Permissions and roles Submittal and List Item tools show up only when your project role can reach those records. Drawing access alone isn't enough. There's a second reason the **Submittal** pin can be absent, and it isn't your role: Submittals and RFIs aren't part of the Field package, so their pin tools don't appear on a Field-package organization at all. **List Item** is unaffected — it's there on every package. If you need to connect a record and the pin type isn't there, ask a project administrator to look at your project permissions rather than assuming the tool is missing for everyone. #### The List Item pin tool isn't in my menu. Why? Your role doesn't have access to list items, which live under the **Punch Lists** permissions in project settings. Drawing access doesn't include them. #### If I delete the pin, does the List Item go away? No. Deleting a pin removes the marker from the sheet. The List Item stays on its list with its assignment, due date, and history intact — it just loses its location on the plans. Read the confirmation message before you continue, because it tells you exactly what's about to go. The record and the location now travel together, which is usually the difference between an item that gets fixed and one that gets argued about. ### Creating and exporting drawing takeoffs Takeoffs keep your measured and counted quantities on the plans themselves, so months later you can still see exactly where a number came from. You'll need permission to add or change takeoffs, plus a verified sheet scale for anything you measure. ![Desktop: The empty Takeoffs side panel prompts you to create or select takeoff work beside the drawing.](https://constructable.ai/help-images/drawings/takeoffs.png) #### Understand the hierarchy - A **takeoff set** groups a body of estimating work. - A **category** groups related takeoff items. - A **takeoff item** defines what is being counted or measured. A `Concrete` set might hold `Slabs` and `Footings` categories, each with its own measured items. #### Create a takeoff 1. Open **Takeoffs** from the viewer menu. 2. Create or open a takeoff set. 3. Add a category. 4. Add an item with the appropriate unit and optional multiplier. 5. Select that item. 6. Place quantity counts or linear and area measurements on the relevant sheets. The Quantity tool only appears while you're in Takeoff mode. > **Note:** Linear and area items depend entirely on the sheet scale. Verify the calibration before you start measuring, or you'll be redoing the whole item later. #### Review totals The measurement toolbar can show: - The current measurement - The item's total on the current sheet - The total across drawings - Multiplied totals where configured > **Note:** Check which takeoff item is active before you place marks. A measurement filed under the wrong item produces a total that looks perfectly reasonable and is wrong — the hardest kind of mistake to catch. #### Move and organize items You can edit categories and items, or move an item into another category. Keep naming and units consistent and your exports will read cleanly for someone who wasn't there when you built them. #### Export takeoffs Takeoff sets and categories can be exported to: - **CSV** for quantity data - **PDF** for marked-up sheets The PDF export offers a takeoff legend, which you turn on or off as you set the export up. > **Note:** Look over the selected sheets and legend items before you share an export, especially when the takeoff still holds private or unfinished work. Takeoffs sit behind their own permission, separate from drawing access, so not everyone on the project can reach them. #### Why can't I find the Quantity tool? It only exists inside Takeoff mode. Open **Takeoffs** from the viewer menu and select an item first. Entering Takeoff mode also needs permission to add or change takeoffs, not just to view them. #### Do my takeoff marks carry over to a new revision? No. Takeoff marks aren't carried forward when a new revision is confirmed, so plan on redoing them against the current sheet. Every quantity in your estimate now points back to the exact mark on the exact sheet it came from. ## Work in the field and manage access ### Using drawings on a phone or tablet Standing in the building is exactly when you need the plans, so the phone and tablet experience is built for that: open current drawings, use the viewer tools, and reach connected project records without going back to a trailer. #### Browse drawings In the native app, on phones and tablets alike, and in a phone-sized browser window, the Drawings page and drawing set pages show sheets as thumbnails — there's no list view. Sheets stay grouped by discipline, and you can: - Switch drawing areas from the tab strip — every area is in the strip, so scroll sideways if they don't all fit - Search sheet numbers, titles, and drawing contents - Filter by drawing tags - Open starred sheets - Select a sheet thumbnail Selecting sheets and using **Bulk Actions** to edit, publish, unpublish, delete, download, or share them in groups needs list view, which only appears in a desktop-width browser — at least 640 pixels wide, which a tablet's browser usually is. From the native app, you can still publish one sheet at a time: open it from its drawing set and use the publish action in the notice at the top of the viewer. #### Navigate the viewer The mobile viewer gives you touch controls for: - Pan and zoom - Previous and next sheet - Sheet selection - Markup tools - Measurements - Pins and connected records Phone and tablet layouts differ, so a control you know from one may live in a menu or drawer on the other. #### Work in landscape Landscape gives the drawing more room and is usually more comfortable for markup or measurement. The viewer accounts for device safe areas, so controls stay clear of notches and system bars. #### Compare and manage drawings on mobile Use Split View, overlays, new-tab revision navigation, recording, and PDF exports on mobile web and in the native app. Open the sheet selector, drawing-set actions, or viewer overflow menu to find controls in compact layouts. Bulk administration — selecting sheets to publish, unpublish, retag, edit, or delete them — isn't on mobile; do that in a desktop-width browser. > **Note:** On phones, the bottom bar changes with your active tool. If the sheet selector or revision control seems to have vanished, you're still in a tool: tap the checkmark at the right end of the bar, or switch back to Pan. Viewer modes such as Topics, RFIs, Submittals, Lists, search, and markup visibility live in the ellipsis menu. #### Prepare before heading to the field If the connection out there is going to be unreliable, use the native app to make the disciplines or sheets you need available offline while you're still online. See [Storing drawings for offline viewing](#storing-drawings-for-offline-viewing). #### Where did the sheet selector go? You have a markup or measurement tool active, and the bottom bar switched to that tool's controls. Tap the checkmark at the right end of the bar, or go back to Pan. #### Can I compare two sheets on my phone? Yes. Use Split View to read sheets side by side or an overlay to compare their geometry. Both are available on mobile web and in the native app. Current plans, in your pocket, with the same pins and markup everyone back at the office is looking at. ### Storing drawings for offline viewing Basements, elevator shafts, and half the sites you'll ever walk have no signal. In the native app, save sheets to your device ahead of time — one sheet, a whole discipline, or the entire drawing area — so the plans open anyway. Offline storage isn't available in a web browser. Do it while you're online. What we save for each sheet is its thumbnail, the quick preview, and the optimized PDF of the current revision. Very deep zoom may look less detailed offline than it does on a live connection. #### Make a discipline available offline This is the fastest way to get a trade's sheets onto your phone before a walk. 1. Open the Drawings page in the native app. 2. Find the discipline group and tap the download button on its header. 3. Review the drawer: **Sheets** is how many sheets still need downloading, **Download size** is roughly how much space they'll take, and **Available** is the free space on your device. 4. Tap the button to save those sheets offline. Its label counts the sheets. While sheets download, the group header shows a count of how many are stored so far, such as `12/40`. When every sheet is stored, it reads **Saved offline**. If the device doesn't have room, the drawer says **Not enough storage** and tells you how much space to free up. Clear space in your phone's storage settings, or remove another discipline you no longer need offline, then try again. #### Make the whole drawing area available offline Tap the **⋯** button on the Drawings page and choose **Make All Available Offline** under **Offline**. The same drawer opens for every discipline in the area at once. Once the whole area is stored, that menu item reads **Remove All Offline Sheets**. #### Store a single sheet 1. Find the sheet's thumbnail on the Drawings page. 2. Tap **Store on device** in the thumbnail's footer. 3. Wait for the stored indicator before going offline. Making a discipline or the whole area available offline — or removing it — replaces any sheet-by-sheet choices inside it. #### Stored drawings stay current Stored sheets follow the latest published revision. Whenever the app is open and online, it downloads any newer revision of a stored sheet and removes the superseded copy once the new one is fully saved. When a discipline or the whole area is stored, sheets newly published into it download too. > **Note:** Updates only happen while you're connected. If a new revision publishes while you're out of signal, your device keeps showing the revision it already has until you reconnect with the app open. #### Confirm storage before relying on it > **Pro Tip:** Don't find out in the basement. Open a few stored sheets while you still have signal and confirm they load. Storing a sheet isn't the same as downloading a PDF into another app. The stored copy belongs to Constructable and is used by its drawing viewer. #### Remove stored sheets To remove one sheet, tap its stored indicator, then **Remove** in **Remove sheet from this device?**. To remove a discipline, tap **Saved offline** on its header and confirm **Remove offline sheets** — the drawer tells you how much space you'll get back. For the whole area, use **Remove All Offline Sheets** in the **⋯** menu. After that, loading those sheets again takes an internet connection. Removing the local copy doesn't delete the project drawing. #### Keep offline drawings ready - Make the sheets you need available offline, and test them while online. - Open the app with a connection before each site walk so stored sheets can catch up to the latest revisions. - Comments, connected records, and search need network access. After you reconnect, confirm that anything important you captured in the field has actually landed in the project. #### If a drawing will not load When the viewer can't reach the asset it needs, it shows an offline message. Check whether the sheet or its discipline finished storing, then reconnect with the app open so the download can complete. #### Can I store every drawing at once? Yes, in the native app. Tap the **⋯** button on the Drawings page and choose **Make All Available Offline**. Check that your device has room first — the drawer shows the download size next to your available space. #### Will comments and pins work offline? Reconnect to refresh connected records, comments, and search, then confirm that your field work has synced to the project. Head out knowing the plans will open whether or not the signal does. ### Understanding drawing permissions and visibility Drawing access comes in two levels — viewing published drawings and managing them — and the workflows attached to a drawing carry their own permissions on top. When a button is missing, this article tells you which permission to go look at. #### Drawing viewers People with **View drawings** access can: - Open the Drawings page - View published sheets and revisions - Search drawings - Star sheets - Download or share drawings they can access - Browse published drawing sets from **Drawing Sets** - Generate and open revision reports - Use viewer features allowed by their other permissions Published drawings are the normal project-wide view. Confirmed but unpublished sheets stay out of the main index for regular drawing viewers, which is the point of publishing being its own step. #### Drawing administrators People with drawing-management access can also: - Create and manage drawing areas from **Drawings Menu** - Upload, edit, and delete drawing sets - Review and confirm sheets - Publish and unpublish sheets - Reorder published drawing revision sets - Edit drawing and revision details - Manage disciplines, sheet order, and tags By default, administrators, managers, and employees can manage drawings, while subcontractors, consultants, owners, and bidders can view published drawings but not manage drawing sets. Those are defaults — your project's own permission settings decide what's actually true, so check them before assuming something is broken. #### Connected-workflow permissions Not every viewer mode comes from the drawing permission: - Adding comment pins requires permission to add or edit comments. - Topics have separate view, edit, and sharing rules. - RFIs require RFI access. - Submittals require Submittal access. - Lists and the items on them use the **Punch Lists** permissions in project settings. - Opening Takeoff mode requires permission to add or change takeoffs. > **Note:** Because these are separate, you and a teammate can open the same sheet and see different pins, markup layers, and menu options. Neither view is wrong. Some roles, bidders among them, can view drawings while the RFI, Submittal, and List Item pin tools stay hidden. #### Visibility is not the same as notification Permissions decide what someone can reach. Notification settings decide what they hear about. Turning off drawing notifications doesn't take away drawing access, and subscribing to an area doesn't grant any. #### Troubleshoot a missing action When a control isn't there: 1. Confirm that you're in the correct drawing area and revision. 2. Check whether the sheet is published. 3. Check whether the feature is available on your device or current view. 4. Ask a project administrator to verify both the drawing permission and the connected workflow's permission. > **Note:** Resist widening someone's whole project role just to unlock one drawing tool. Change the specific permission instead — the broad change is the one you'll regret later. #### A teammate can see a sheet and I can't. What's different? Usually the drawing permission itself, or the sheet is unpublished and they're a drawing administrator. Compare access before you go looking for the file again. #### I can see a pin but can't open what's behind it. Your access to that workflow — RFIs, Submittals, list items — is narrower than your drawing access. The marker is visible; the record isn't. Knowing which of the two permissions is missing turns "it's broken" into a one-line request for your administrator. --- # How to use Photos in Constructable > Use this guide to capture, organize, review, download, report, and troubleshoot project photos and videos. It covers the exact controls available on desktop web, mobile web, and the native app. Source: https://constructable.ai/help/photos Use this guide to capture, organize, review, download, report, and troubleshoot project photos and videos. It covers the exact controls available on desktop web, mobile web, and the native app. Learn what pending uploads and weak connectivity mean for field capture in [Field-Ready Mobile](https://constructable.ai/help/concepts/field-ready-mobile). ## Start here - **I take field photos:** [Create an album and add media](#create-an-album-and-add-media) → [Review photo details](#view-and-describe-photos). - **I organize project media:** [Find photos](#find-and-browse-photos) → [Copy or move selections](#copy-move-and-download-photos). - **I prepare reports:** [Export photos to PDF](#export-photos-to-pdf). - **Something is missing or blocked:** Start with [Troubleshooting Photos](#troubleshooting-photos). ### Common task recipes - **Document a site walk:** Create a dated album, take or upload photos and videos, then add descriptions to important photos. - **Reuse a photo in another album:** Select it and choose **Copy to Album...** from the **⋯** menu. The original remains where it is. - **Reorganize without duplicates:** Select photos inside an album and choose **Move to Album...** from the **⋯** menu. - **Send a visual report:** Select photos in an album or in **Photos** and export them to PDF with timestamps and descriptions. ## Understand access and availability ### Understand how Photos works Every photo in the project lives in an album, and everything else here — searching, selecting, downloading, reporting — is a way of getting back to what's inside one. **Album → uploaded or captured media → timestamp and description → selection → download or PDF** Albums organize your project's photos and videos. Two icon buttons in the Photos header switch between them: **Album view** browses those collections, and **Photo grid view** browses media across every album you can access, which is the one you want when you remember the photo but not where it went. Hover either icon to see its name. In either grid, photos are grouped under month headings such as August 2026, using each photo's capture time when it has one. Copying and moving sound similar and aren't. Copying places a photo in another album without removing its original album context, so the same evidence can live in two collections. Moving changes the photo's album, which is what you want when media simply landed in the wrong place. Every photo carries a date, and it comes from one of two places. If the file has a capture time in it — which anything shot on a phone does — we use that. If it doesn't, we use the moment the photo was uploaded to Constructable. That second one is not a date from the file, so a photo someone emailed you in March and uploaded in July will read as July. > **Note:** Daily Log photos have a separate view permission from other project photos, so a teammate can have full access to project Photos and still not see media that came from a Daily Log. Your organization can also have us burn the capture date, time, and location into photos as they arrive. See [Understand stamped photo captions](#understand-stamped-photo-captions) if your photos show a timestamp block in the corner and you're wondering where it came from. ### Permissions, visibility, and platform availability If some photos are visible and others aren't, or the upload button simply isn't there, that's usually access rather than a bug. Photos checks a few separate things. - **View photos, excluding daily log photos** controls ordinary project Photos. - **View daily log photos** separately controls media associated with Daily Logs. - **Add or remove photos, create photo albums** controls album creation, uploads, moves, copies, edits, and deletion. - Whether you can modify the album itself is also checked before move or delete actions appear, so an action can be missing on one album and present on another. By default, administrators, managers, and employees receive Photos permissions. Your project may be configured differently, so check with your Admin before assuming something is broken. With the required access, you can browse, upload, download, organize, and export photos on desktop web, mobile web, and the native app. - Browsing albums and photos works on desktop web, mobile web, and the app. - In the app, **Add Photos** opens **Take Photos** and **Choose Photos** so you can shoot straight into an album. - Desktop adds drag-and-drop uploads and shows the selection toolbar buttons with their labels rather than as icons. - On a phone, the selection toolbar sits at the bottom of the screen and shows **Download**, **Delete**, and a **⋯** menu as icons. - **Select All**, **Copy to Album...**, and **Move to Album...** live in the **⋯** menu on every screen size, not on the toolbar itself. - **Download** works everywhere. In the app it saves the originals to your camera roll; on Android they land in an album called Constructable Downloads. - Select photos and choose **Export to PDF** from the **⋯** menu. - Use the selection toolbar and **⋯** menu to download, copy, move, or delete selected photos on mobile web and in the native app. ### Troubleshooting Photos Nearly every Photos problem is one of three things: a filter you forgot about, an upload that hasn't finished, or a permission that differs from the one you're thinking of. Find your symptom and work down the checks in order. #### No photos appear Start with filters — they're the usual culprit. 1. Clear the search and date filters. 2. Switch between **Albums** and **Photos**. 3. Confirm that the photos belong to an album. 4. Check ordinary and Daily Log photo permissions, depending on where the media came from. #### Upload is unavailable Confirm you have **Add or remove photos, create photo albums** and that you can modify the current album. In the app, also allow camera or photo-library access when your device prompts. If the camera is blocked, the app shows **Camera Access Required** with **Constructable does not have camera access. Allow camera access in Settings to continue.** Select **Open Settings** to jump to the app's system settings, or **Cancel** to stop. The same dialog appears when **Scan QR Code** on a list needs the camera. #### A recent upload has not appeared Give the upload time to process and keep the app open until pending media completes, then refresh once connectivity returns. Media that someone else is still uploading may stay hidden until it's ready — that's expected, not a lost file. #### Move is missing **Move to Album...** appears only while viewing an album you can modify. When you need another copy but should keep the source, use **Copy to Album...** instead. #### PDF export is missing Enter selection mode, select at least one photo, and open the **⋯** menu to choose **Export to PDF**. From an album the PDF is titled with the album name; from the cross-album **Photos** view it's titled **All Photos**. #### A photo date seems wrong If the file carries a capture time, we use it. If it doesn't, the date you're looking at is the moment the photo was uploaded to Constructable, not anything read out of the file — so anything forwarded to you and uploaded weeks later will read as the upload day. Date filters use whichever of the two the photo ended up with. #### Some photos have a stamped timestamp and others don't Captions are burned in at upload, so only photos that arrived while **Date, Time, and Location Captions** was switched on carry one. Turning the setting on later doesn't go back and stamp the photos already in the project. See [Understand stamped photo captions](#understand-stamped-photo-captions). ### Understand stamped photo captions Some organizations need every field photo to prove when and where it was taken, without anyone having to remember to say so. Turn on **Date, Time, and Location Captions** and we burn that information into the bottom corner of each photo as it's uploaded, so it survives being downloaded, emailed, and pasted into someone else's report. The stamp carries whatever the photo actually recorded: - Capture date and time with the time zone, as in "Jul 24, 2026 4:18:38 PM PDT" - The address we resolved for the capture location - GPS coordinates A photo missing a capture time doesn't get a caption at all, which is why a screenshot or a scanned document uploaded to an album comes through clean. To change the setting, an Admin opens **Organization Settings**, expands **Photo Settings**, and toggles **Date, Time, and Location Captions**. It reads **Enabled** or **Disabled**, applies to every project in the organization, and covers both project photos and Daily Log photos. > **Note:** The setting only affects photos uploaded from that point on. Switching it on doesn't stamp your existing library, and switching it off hides captions on photos that already have them rather than deleting the originals — turn it back on and those photos show their captions again. #### Can I stamp photos we uploaded last month? To apply captions to older media, re-upload it while **Date, Time, and Location Captions** is enabled. #### Who can turn captions on or off? Anyone with **Update organization-level settings**, which is Admin by default. It's an organization-wide switch, not a per-project or per-user one. Turn it on before the walk and every photo carries its own proof of when and where it was taken. ## Capture and organize ### Create an album and add media Photos pile up fast on a job, and one enormous collection called Site Photos helps nobody. Create an album for a specific field event, area, or reporting period so your team can find the media again later. #### Create an album 1. Open **Photos**. 2. Select **Album** in the header. In the app, it's the **+** button in the top right. 3. Enter a unique title. 4. Select **Create Album**. > **Pro Tip:** Lead the title with the date. `2026-07-24 Level 3 rough-in` still means something in a year and it's easy to search for; `Site Photos` is neither. Each album title must be unique within the project, so add the date or the area when two collections would otherwise clash. #### Add photos and videos 1. Open the album. 2. Select **Add Photos**. 3. In the app, choose **Take Photos** to shoot straight into the album, or **Choose Photos** to pull from your camera roll. 4. On web, the **Upload Photos & Videos** dialog opens — pick files, or drag them onto the album instead. 5. Wait for all uploads to complete. > **Note:** Large videos and weak field connections can take longer than you'd expect, so keep the app open while uploads are pending. You now have a named place for this walk's media, and a title your team can search for. #### Can I put videos in an album? Yes. Albums hold photos and videos, which is why the web upload dialog is labeled **Upload Photos & Videos**. Share videos as original files and use still photos in a PDF report. #### Can two albums share a title? No. Each album title must be unique within the project. Adding the date or the area is usually enough to tell two similar collections apart. ### Find and browse photos A project library gets big quickly, and scrolling isn't a search strategy. Use the view, search, and date controls to narrow thousands of photos down to the handful you actually need. ![Desktop: The Photos index shows album cover images, photo counts, dates, search, sorting, and view controls.](https://constructable.ai/help-images/photos/find-and-browse.png) - Choose **Albums** to search album titles and scan cover photos. - Choose **Photos** to browse media across albums. - Search by album title. - Set start and end dates to filter on each photo's capture date, or its upload date when the file has no capture time. - Open an album to focus selection and reporting actions on one collection, or stay in **Photos** to select across albums. - Select a photo to open the carousel and move through nearby media. > **Note:** If you see no results even though the project clearly has media, clear your active filters before assuming anything was deleted. A date range left over from last week's report is the most common cause. Narrow it down once and the selection, export, and download actions all work on exactly the set you meant. #### What's the difference between the Albums and Photos views? **Albums** browses collections and searches album titles. **Photos** browses media across the albums you can access, which is faster when you remember the photo but not where it lives. Both views group photos by month. **Export to PDF** works from either view on desktop web, mobile web, and the native app. #### Why does a photo show a date I don't recognize? If the file has a capture time in it, we use that. If it doesn't, you're seeing the day the photo was uploaded to Constructable — so a photo shot in March and uploaded in July reads as July. ### View and describe photos Open a photo when you want to inspect it at full size, check its date, or add the context that makes it useful to someone reading it next month. Use the photo viewer to move through your current filtered group. Add a description that explains what is shown, where it is, and why it matters. Descriptions travel into album PDF exports, so write them for someone who was not on site — "cracked grout, Level 3 east restroom, north wall" beats "grout issue" every time. Details sit in a side panel on desktop and a pull-up drawer on a phone; **More info** opens it and **Less info** collapses it again. **More info** appears for the photo you're looking at when that item has a full photo record — an attachment that's still syncing, or a file that isn't a photo, won't show it even if other slides in the same carousel do. Inside you'll find **Description**, **Comments** with a count, and **Sheets** when the photo is pinned to a drawing, plus who added the photo and when. The timestamp reads **Captured on** when the file carried a capture time and **Uploaded on** when it didn't. Select **Start Thread** on the **Comments** tab to open a discussion about the photo. Photos uploaded from a drawing's **Photo** pin live in the system-managed Pinned album. When a photo is connected to a drawing, its details include **Sheets**; open that section to return to the exact sheet and pin location. > **Note:** An album's notification controls only affect the updates you receive. They don't change who can view or edit its media. #### Why is this photo in the Pinned album? It was uploaded from a **Photo** pin in the drawing viewer. The album keeps drawing evidence together automatically; use **Sheets** in the photo details to return to its drawing location. A described photo is evidence. An undescribed one is a picture of a wall. ### Copy, move, and download photos Selection mode is how you handle a group of photos in one pass — pulling a set into a reporting album, fixing where media landed, or grabbing the original files to hand off. 1. Open an album or the Photos view. 2. Enter selection mode. 3. Select individual photos, or open the **⋯** menu and choose **Select All**. 4. Choose an action: - **Download**, on the toolbar itself, saves the original files. On desktop, up to ten photos download as individual files named from the capture time, and anything larger arrives as a single ZIP with a progress toast while it zips. In the app, they go to your camera roll — on Android, into an album called Constructable Downloads. - **Copy to Album...**, in the **⋯** menu, adds the selected photos to another album and leaves them in this one too. - **Move to Album...**, also in the **⋯** menu, relocates them. It appears only while you're in an album you can modify. On a phone the toolbar sits at the bottom of the screen and its buttons are icons rather than words: a download arrow, a trash can, and **⋯**. Choose copy when the same evidence belongs in two collections. Choose move when you are correcting how media is organized. > **Note:** Before moving a large selection, double-check the destination. Move changes where the photos live, so a wrong pick means finding them again in an album nobody expected. Your media now sits where the next person will look for it. #### Should I copy or move? Copy when the same photo genuinely belongs in two places — it stays in its original album as well. Move when the media is simply in the wrong album and you don't want a duplicate. #### Why can't I download on my phone? Use **Download** on the phone toolbar; in the app it saves the originals to your camera roll. For a report, select photos and choose **Export to PDF** from the **⋯** menu. #### Why is Move to Album missing? **Move to Album...** only appears while you're viewing an album you can modify. From a cross-album view, or on an album you can't modify, use **Copy to Album...** instead. ## Report and remove ### Export photos to PDF A photo PDF turns selected photos into a visual record you can email or file. Use **Export to PDF** on desktop web, mobile web, or the native app. 1. Open an album or the cross-album **Photos** view. 2. Enter selection mode. 3. Select one or more photos. 4. Open the **⋯** menu and choose **Export to PDF**. 5. Wait for the PDF to generate and download. From an album, the PDF uses the album title. From **Photos**, it's titled **All Photos**. Either way it arranges your selected photos in a report layout. > **Note:** Select at least one photo before choosing **Export to PDF**. It is available from both an album and the cross-album **Photos** view. > **Pro Tip:** Add descriptions before you export rather than after. They come through in the PDF, and they're the difference between a page of photos and a report someone can act on. You now have a self-contained record for a reader who will never log in. #### Do videos come through in the PDF? Export still photos in the PDF and share the original video files separately. #### Why isn't Export to PDF available? Enter selection mode and select at least one photo, from an album or from **Photos**, then open the **⋯** menu and choose **Export to PDF**. ### Delete photos or an album Deleting an album takes every photo in it along too, so it's worth a second look before you confirm. Decide first whether you mean to remove individual media or the entire collection. #### Delete selected photos 1. Open the album. 2. Enter selection mode. 3. Select the media. 4. Choose **Delete** and confirm. To remove a single photo while you're looking at it, use **Delete photo** in the viewer. The confirmation says it plainly: "Are you sure you want to delete this photo? This action cannot be undone." #### Delete an album Open the album menu, choose **Delete**, and confirm. > **Note:** Deleting an album deletes every photo in it. There is no undo and no trash to fish them back out of, so download the originals first if the media matters. Most of the time there's a smaller fix. If only the album title is wrong, edit it. If the media belongs somewhere else, move it instead of deleting the album. Cleaned up this way, the library gets shorter without losing anything you'll want back. --- # How to use Daily Logs in Constructable > Use this guide to configure, create, complete, review, export, and troubleshoot Daily Logs. It covers the exact controls for recording weather, labor, equipment, materials, deliveries, inspections, delays, notes, phone calls, photos, and files on desktop web, mobile web, and t... Source: https://constructable.ai/help/daily-logs Use this guide to configure, create, complete, review, export, and troubleshoot Daily Logs. It covers the exact controls for recording weather, labor, equipment, materials, deliveries, inspections, delays, notes, phone calls, photos, and files on desktop web, mobile web, and the native app. ## Start here - **I configure field reporting:** [Configure Daily Log sections](#configure-daily-log-sections) → [Customize Daily Logs for one project](#customize-daily-logs-for-one-project) → [Create the first log](#create-and-find-daily-logs). - **I complete the report each day:** [Build the daily record](#build-the-daily-record) → [Add photos and attachments](#add-photos-and-attachments) → [Export the finished log](#export-one-or-many-daily-logs). - **I only log my crew's headcount:** [Record personnel with limited Daily Log entry](#record-personnel-with-limited-daily-log-entry). - **I review project history:** [Find logs by date](#create-and-find-daily-logs) → [Read activity and evidence](#review-and-correct-a-daily-log). - **I send the log to the owner or architect:** [Distribute a Daily Log](#distribute-a-daily-log). - **Something is missing or blocked:** Start with [Troubleshooting Daily Logs](#troubleshooting-daily-logs). ### Common task recipes - **Start today's report quickly:** Add the log for today's date, repeat eligible labor, time cards, equipment, and materials from the prior log, then update quantities and notes. - **Send the day's report out:** Open the log, choose **Actions** → **Distribute**, pick the photo sections and recipients, and send. - **Document a failed field inspection:** Add an Inspection entry, mark it **Failed**, add notes and attachments, and include inspection photos in the PDF. - **Record a delay:** Select the applicable delay types and explain the impact in the log so the delay indicator is visible from the index. - **Log a jobsite phone call:** Open the day's log, select **Add Phone Call** in **Phone Calls**, set **Direction**, who was on the call, and **Start Time**, then save. - **Log a toolbox talk or near miss:** Open **Safety**, write the day's record, and attach the sign-in sheet or photos there so they export as **Safety Photos**. - **Send a month of logs to the owner:** Select **Export Daily Logs** in the Daily Logs page header, set **Start date** and **End date** up to 60 days apart, and select **Download** for a ZIP with one PDF per log. - **Turn over the full history:** Generate a Closeout package with Daily Logs ticked. - **Track something your form doesn't ask for:** Open **Project Settings** → **Daily Log Settings**, add a field to a section or add a section of your own under **Custom fields**. ## Understand access and availability ### Understand how Daily Logs work A Daily Log is one dated record of a single day on the project — weather we capture for you, entries your crews fill in, and the photos and files that back them up. Saved entries update the live record, there is one log per date, and where you attach a photo decides where it lands in the PDF. **Date → weather and overview → field entries → notes, delays, and evidence → PDF or Closeout package** Your project has one dated sequence of Daily Logs. Anyone with write access edits the live record — which is exactly what you want when a correction surfaces three days later. Which sections you see is set in two layers. Organization settings decide which optional sections exist anywhere in your organization, and each project can hide built-in sections it doesn't use, add its own fields to a section, and add custom sections of its own. A section turned off for the organization can't be brought back by a project. > **Note:** Where you attach a file decides where it lands. A file added inside a labor, delivery, dumpster, or inspection entry stays with that entry, files added under **Safety** stay with the safety record, and media added to the overview belongs to the Daily Log itself. The difference shows up at export time, because photos come through grouped by where you put them. ### Permissions, visibility, and platform availability If you can open a Daily Log but can't change anything, or the log reads fine while its photos are nowhere to be found, that's permissions working as configured rather than something broken. Daily Logs check a few separate kinds of access. - **View daily logs** opens the Daily Logs page and the records themselves. - **Create new daily logs, make changes to existing daily logs** covers creating a log, editing it, adding entries, attaching media, and deleting. - **Limited Daily Log Entry** is a separate, default-off action for Subcontractor, Consultant, and Owner roles. It lets those people open **Daily Logs**, add a dated log, and record their own **Personnel** rows — nothing else. See [Record personnel with limited Daily Log entry](#record-personnel-with-limited-daily-log-entry). - **View daily log photos** is a separate Photos permission, so someone can read a log without seeing its photos. - **Manage daily log settings, including custom fields** lets someone hide built-in sections and fields on a project, add custom fields, and build custom sections. Admin and Manager have it by default. - Turning a section on or off for the whole organization isn't a Daily Log permission at all. That takes organization-settings access. By default, administrators, managers, and employees can both view and write Daily Logs. **Limited Daily Log Entry** starts off for every role, including Subcontractor, Consultant, and Owner — an administrator turns it on when those companies should log their own headcount. Your project may be set up differently, so if what you're seeing doesn't match this, check with your Admin before assuming something is broken. Once you have the access, writing the day's log works wherever you are — web and the app both handle creating logs and editing entries. You can export a single log, download up to 60 days of logs at once, or prepare the full history through Closeout. - Everyday creation and entry editing work on desktop web, mobile web, and the app. - The app gives you a single running list of dates instead of the web layout's weekly groupings, and a **+** button in the header to add a log. - Exporting one log to PDF works everywhere. On web it's **Actions** → **Export to PDF**; in the app it's the **⋯** button in the header. - **Export Daily Logs** downloads a date range of logs and needs only **View daily logs**. On web it's in the Daily Logs page header; in the app it's the download icon beside **+**. ### Troubleshooting Daily Logs Most Daily Log surprises come down to one of three things: a section your organization or project turned off, a permission you don't have, or a browser that can't save files. Find your symptom below and work through the checks in order. #### An entry section is missing Check the project first, then the organization. Open **Project Settings** → **Daily Log Settings** and select the section under **Custom fields** — if **Show this section** is off, the project hid it, and someone with **Manage daily log settings, including custom fields** can turn it back on. If the section reads **Off for this organization**, ask an organization administrator to open **Organization Settings** → **Daily Log Settings**. Personnel, time cards, safety, equipment, deliveries, dumpsters, inspections, phone calls, and materials can each be disabled for the organization. #### A field is missing from an entry The project probably hid it. Built-in fields such as **Hours Worked**, **Quantity**, or **Notes** can be hidden per section in **Project Settings** → **Daily Log Settings**. Values already entered are kept and come back when someone shows the field again. #### The Custom fields panel is empty Nobody with **Manage daily log settings, including custom fields** has opened the page on this project yet. The outline is set up the first time someone with that permission opens it; until then, people who can only view the settings see an empty panel. #### Repeat from the last log is missing The action appears only when a prior log contains eligible entries for that section — there's nothing to copy otherwise. Create the first entry manually, or confirm that the previous dated log has active entries. #### A photo is missing from the PDF The export dialog only lists photo groups that actually contain photos, and it ticks every one it lists. So a missing group usually means the photos aren't attached where you think they are — check whether the delivery ticket went on the delivery entry or on the log overview. Also confirm the attachment wasn't deleted and that your role has **View daily log photos**. #### The Export Daily Logs button is missing It needs **View daily logs**. On web it's a labeled button in the Daily Logs page header, beside **Add New Log**. In the app it's an unlabeled download icon in the header, beside **+**. #### Weather looks incomplete Weather depends on the project's location and the weather data available for it. When the historical or automatic weather doesn't describe the site conditions, add what you actually saw in the notes. #### A control is read-only Confirm Daily Log write permission. Viewing a log or its photos does not grant permission to edit entries. Someone with only **Limited Daily Log Entry** can add and edit their own personnel rows; the rest of the log is not theirs to change. #### I only see Personnel on the Daily Log That's **Limited Daily Log Entry** working as configured. Notes, weather, equipment, and the other sections stay hidden unless the role also has **View daily logs**. If this person should fill out the full report, they need **Create new daily logs, make changes to existing daily logs** instead. ## Set up and complete daily work ### Configure Daily Log sections Every organization reports a little differently, and a log full of sections nobody fills in teaches people to skip the whole thing. Show the sections your organization actually uses so your field teams get a focused, consistent report each day. ![Desktop: Organization Settings shows which Daily Log sections are enabled and provides an Edit action.](https://constructable.ai/help-images/daily-logs/section-settings.png) 1. Open **Organization Settings**. 2. Select **Daily Log Settings**. 3. Enable or disable: - **Personnel Section** - **Time Cards Section** - **Safety Section** - **Equipment Section** - **Deliveries Section** - **Dumpsters Section** - **Inspections Section** - **Phone Calls Section** - **Materials Section** 4. Save. These settings apply across your organization, not just one project. Disabling a section hides that part of the Daily Log, but it does not delete historical entries. Before you change a setting, check the reporting requirements for active projects. > **Note:** Notes, Weather, and Delays aren't in this list because the organization can't turn them off. A project can still hide Weather or Delays for itself — see [Customize Daily Logs for one project](#customize-daily-logs-for-one-project). Notes stay on every log. In the log itself, notes and **Phone Calls** sit with Overview on the left. The other sections always appear in the same order on the right — Personnel, Time Cards, Safety, Equipment, Materials, Deliveries, Dumpsters, Inspections, Weather, Delays, then any custom sections the project added — so the report reads the same way on every project and anyone reviewing a stack of them knows where to look. Set this once and every crew in your organization starts from the same report. #### Will turning a section off delete what we already recorded? No. Disabling a section hides that part of the Daily Log, and historical entries stay in the record. #### Can I enable a section for just one project? Not one the organization turned off — a project can't bring back a section that's off here. Going the other way works: leave the section on for the organization and hide it on the projects that don't use it from **Project Settings** → **Daily Log Settings**. See [Customize Daily Logs for one project](#customize-daily-logs-for-one-project). ### Customize Daily Logs for one project A tilt-up job and a hospital fit-out don't need the same daily report. Hide the sections and fields a project never uses, add the fields your crews keep typing into notes, and build sections of your own — without changing any other project. 1. Open **Project Settings** and select **Daily Log Settings** under **General**. 2. Scroll past **Daily Log defaults** to **Custom fields**. The outline on the left lists every built-in section, from **Phone Calls** to **Delays**, with its fields beneath it, followed by any custom sections. 3. Select a section, a field, or **Add Field** in the outline. Its settings open on the right. Changes save as you make them and apply to this project only. Changing anything needs **Manage daily log settings, including custom fields** — Admin and Manager have it by default. Opening the page takes **Update existing projects, hide projects** to reach Project Settings plus **View daily logs**; with those but without the settings permission, the outline is read-only. #### Hide a section or field Select a section heading in the outline and turn off **Show this section**. The heading gets a crossed-out eye icon so you can spot hidden sections at a glance. A section marked **Off for this organization** was turned off in Organization Settings, and you can't turn it on from here. To hide one field, select it and turn off **Show this field**, or hover it in the outline and select the eye icon. Fields with a lock are needed on every entry and can't be hidden: **Company Name** on Personnel, Deliveries, and Dumpsters, **Equipment**, **Material Type**, **Inspector**, and every Phone Calls field. Fields you can hide: - **Personnel:** **Workers**, **Hours Worked**, **Notes** - **Equipment:** **Hours Used**, **Inspected At**, **Notes**, **Maintenance** - **Materials:** **Quantity**, **Unit**, **Notes** - **Deliveries:** **Notes** - **Dumpsters:** **Received**, **Removed**, **Notes** - **Inspections:** **Inspection Result**, **Notes** A hidden section drops off the log, out of the PDF, and out of the export and distribution photo choices, and its **Daily Logs - Personnel Report**, **Daily Logs - Time Cards Report**, or **Daily Logs - Materials Report** card leaves the project's **Reports** page. A hidden field drops off the entry form, the entry on the log, the PDF, and the matching column in the Personnel and Materials reports. > **Note:** Hiding doesn't delete anything. Entries and values already recorded are kept, and they come back as soon as someone shows the section or field again. #### Add fields to a built-in section **Phone Calls**, **Personnel**, **Equipment**, **Materials**, **Deliveries**, **Dumpsters**, and **Inspections** each take their own custom fields. **Time Cards**, **Safety**, **Weather**, and **Delays** don't. 1. Select **Add Field** under the section in the outline. 2. Enter a **Name** and choose a **Type** — the same types Lists offer, from **Text** and **Number** to **Single Select**, **Company**, **Location**, and **Attachment**. 3. Turn on **Required** if an entry shouldn't save without it. The field shows up on that section's entry form, below the built-in fields. A required field that's left empty stops the save with a message naming the field. Filled-in values show on the entry in the log and print under the entry in the PDF, and the Personnel and Materials reports get a column for each of their custom fields. > **Note:** **Repeat** copies only the built-in fields from the last log. Fill custom fields in again on each repeated entry. #### Add a section of your own Use a custom section for something the log has no home for — site visitors, concrete pours, a once-a-day site conditions check. 1. Select **Add Section** at the bottom of the outline. 2. Enter a **Title**. 3. Turn on **Has many entries** when crews will fill the section out more than once a day, such as one entry per visitor. Leave it off for a section filled out once per log. 4. Select **Add Field** to add the section's fields. Custom sections appear on the log after **Delays**. A once-per-log section has an edit button on its panel; a section with many entries has **Add** in its header, an edit button on each entry, and reads **No entries** until someone adds one. Filling them in needs **Create new daily logs, make changes to existing daily logs**, and people with only **Limited Daily Log Entry** don't see them. In the PDF, custom sections print after Inspections. Only filled-in fields print, and entries or sections with nothing filled in are left out. Each section with many entries also gets its own report on the project's **Reports** page — see [Use Daily Log Reports](https://constructable.ai/help/reports#use-daily-log-reports). Drag a section to reorder it. **Remove field** and **Remove section** take effect right away, with no confirmation, and there's no restore button — what was entered for them stops appearing on logs, PDFs, and reports. #### Does a template project carry these settings? Yes. A project created from a template copies the template's hidden sections and fields, its custom fields and their options, and its custom sections. Daily Logs themselves don't copy. You now have a Daily Log that asks this project's crews for exactly what this project needs. ### Create and find Daily Logs Today's report starts as an empty dated record, and the same index is where you go months later when someone asks what happened on a Tuesday in March. Create one record for the day, then use the index whenever you need to look back through project history. ![Desktop: The Daily Logs index groups recent records by week and shows photo previews for quick context.](https://constructable.ai/help-images/daily-logs/create-and-find.png) 1. Open **Daily Logs**. 2. Select **Add New Log**. In the app, it's the **+** button in the header. 3. The **Add Daily Log** dialog opens on today's date. Change it if you're catching up, then select **Create**. 4. Open the new date from the index. A project can only hold one log per date. If you pick a day that already has one, the dialog tells you so rather than creating a second — open the existing log and add to it. On web, logs are grouped into Sunday-through-Saturday weeks under a **Week of** heading, newest week first. In the app you get a single running list, newest first, without the week headings. A construction indicator beside a date tells you that a delay was recorded, and photo previews on the web index give you quick context. Select any date to open the full record. > **Pro Tip:** Add the log in the morning rather than at quitting time. An open record you top up through the day beats reconstructing eight hours from memory at 4:30. You now have a dated record to fill in, and a history you can scan a week at a time. #### Why doesn't my phone show the weekly headings? The app uses a single running list, newest first. Week groupings are part of the web layout. #### What's the small indicator next to some dates? That's the construction indicator, and it means a delay was recorded on that day. It's there so you can scan back through a month and spot the difficult days quickly. ### Record personnel with limited Daily Log entry A subcontractor on site often needs to record who showed up without writing the rest of the day's report. **Limited Daily Log Entry** is that narrower access. It starts off for every role. An administrator turns it on for Subcontractor, Consultant, or Owner when those companies should log their own headcount. 1. Open **Daily Logs**. The item appears with this permission even without **View daily logs**. 2. Select **Add New Log**. In the app, it's the **+** button in the header. 3. Pick the date and select **Create**. That creates an empty dated log — you can't fill in notes, weather, or safety on the way in, and you can't edit those fields on a log that already exists. 4. Open the date and add a **Personnel** row. **Company Name** is locked to the company on your project membership. You can create, edit, and delete only the rows you submitted. **Personnel** appears when the organization has **Personnel Section** on and the project hasn't hidden it. **Repeat** — the action that copies yesterday's personnel — stays hidden on this permission. Distribution, delete, and export stay with **View daily logs** and **Create new daily logs, make changes to existing daily logs**. Without **View daily logs**, the rest of the log is hidden: notes, weather, safety, delays, time cards, equipment, phone calls, attachments, and any custom sections. That's expected, not a missing section. If this person should fill out the whole Daily Log, they need write access instead of limited entry. Limited entry plus write behaves as full write. You now have the day's headcount on the project log without opening the rest of the report. #### Why is Company Name locked? Limited entry records labor for the company you're on this project with. Changing the company would put someone else's crew on your row. #### Can I edit yesterday's personnel? You can edit or delete a row you submitted. You can't change someone else's personnel row, and you can't edit the log's notes or weather. ### Build the daily record As you complete the day's log, focus on what another person will need to understand later: who was there, what happened, and what affected progress. Your project's log may not match every section below. A project can hide sections and fields it doesn't use, add its own fields to an entry form — they sit below the standard fields, and a required one has to be filled in before the entry saves — and add custom sections after **Delays**. See [Customize Daily Logs for one project](#customize-daily-logs-for-one-project). ![Desktop: A populated Daily Log keeps notes, media, company labor, and employee time cards in one dated record.](https://constructable.ai/help-images/daily-logs/build-record.png) #### Overview and weather Add overview photos or videos, check the day's weather, and record general notes. Use notes for useful context that does not fit a structured entry. You don't record the weather yourself — we capture it hourly for the project's location and attach it to the log. Expand **Hourly Weather Details** to see the working day hour by hour, from 6:00 AM through 6:00 PM, with columns for **Time**, **Temp**, **Conditions**, **Precip**, and **Wind**. > **Note:** **Precip** is the chance of precipitation for that hour, not how much fell, and **Wind** is speed without direction. If a rain delay is going to matter in a claim, write what you actually saw in the Delays notes rather than leaning on the forecast column. Weather comes from the project's coordinates, which we derive from the project address. A log showing weather for the wrong town usually means the project address needs fixing in Project Settings. #### Phone calls **Phone Calls** sits with Overview on the left of the log when **Phone Calls Section** is on — it starts enabled. Empty copy reads **No phone calls logged**. 1. Select **Add Phone Call**. 2. Choose **Direction**: **Inbound** or **Outbound**. 3. Fill **Call From** or **Call To** (whichever matches the direction) and **Phone Number**. 4. Set **Start Time**. **End Time** is optional but must be after the start if you enter it. 5. Optionally write a **Summary**. Leave it blank to generate a summary automatically from the recording. 6. Optionally add one **Recording** — audio files only. The hint reads **One optional audio file. Transcribed automatically.** 7. Save. Each call can have only one recording. Remove the existing recording to replace it. After save, open the call to read **Transcript**, **Search transcript**, and **Logged By**. While a recording is still being processed, the call shows **Transcribing…**. **Couldn't transcribe this recording.** and **No speech detected in this recording.** are the two failure states. Phone calls with a summary or transcript ride along in the Daily Log PDF whenever the section is on and the call isn't still a draft. They are written content, so they are not a photo-group tick box at export. #### Labor and time cards - **Personnel** records company labor by trade and workforce details. - **Time Cards** records the hours your own employees worked. Personnel totals do the arithmetic for you: enter the number of workers and the hours each worked, and the entry shows the combined total. **Workers** and **Hours Worked** can stay blank when you don't have a count yet. A personnel entry starts with **Company Name**, and your own organization is the first option in that list — pick it when the headcount you're recording is your own crew rather than a subcontractor's. The rest of the list is the project team's companies. If the subcontractor isn't on the project team yet, type the company name; we create a subcontractor company in the Global Directory, or reuse one that already has that name. That does not add them to the Project Team — staff them separately if they need project access. **Notes** on a personnel entry is a formatted field, so you can use a bulleted list to break out what three separate crews were doing instead of running it all together in one line. Time cards are per employee. Select **Add Time Card** and fill in **Employee**, **Cost Code**, **Cost Type**, **Hours Worked**, and **Notes**. The entry sheet opens over the log, so you stay on the day you're writing. **Cost Code** and **Cost Type** are optional — although filling them in is what lets those hours become job cost, so leave them blank only if your team doesn't track labor that way. If the employee has an hourly cost rate on file, we fill both in for you. > **Pro Tip:** Most crews are the same today as yesterday. **Repeat Personnel from last log** — along with the matching actions for Time Cards, Equipment, and Materials — brings yesterday's entries over so you only have to correct what changed. If your time-card write access is **Only my time cards**, Repeat copies **Your Time Cards from last log**. On a phone the button shortens to just **Repeat**. When you're adding several entries in a row, use **Save and Add Another** instead of saving and reopening the form each time. It's on Personnel, Equipment, Materials, Deliveries, Dumpsters, and Inspections. Hours entered here are the same records you'd find under **Time Cards** in the organization menu — there's no separate daily-log-only copy. See [Time Cards](https://constructable.ai/help/time-cards) for reviewing, exporting, and costing them. #### Safety **Safety** is where the day's safety record goes — the toolbox talk you held, the near miss nobody wrote up anywhere else, the corrective action you took after a walk. Select the edit action on the block, write it in **Add safety notes here...**, and attach the sign-in sheet or the photo of the guarded opening under **Attachments**. Until someone writes something, the block reads **No safety notes logged**. Safety notes ride along in the Daily Log PDF like any other section, and safety attachments that are images become their own **Safety Photos** group at export and distribution time. That grouping is the reason to attach a JHA photo here rather than on the log overview. > **Note:** This is the day's narrative safety record, not an inspection result. If you're walking the site against a checklist, use the project's Inspections workflow instead — see [Inspections](https://constructable.ai/help/inspections). #### Equipment and materials Record the equipment used and material quantities for the day. Equipment choices come from the organization's managed inventory. Creating a new piece of equipment from the Daily Log picker needs **Add, edit, and archive equipment and other material assets** — without it, the picker only lists equipment that already exists. #### Deliveries, dumpsters, and inspections Create a separate entry for each delivery, dumpster event, or inspection so the details and evidence stay clear. Daily Log inspection results can be **Passed**, **Failed**, or **N/A**. These are field-report entries and are separate from the project's Inspections workflow. #### Delays Pick the delay types that apply: - **Weather** - **Permitting** - **Owner Directive** - **Material Acquisition** - **Waiting on RFI/Submittal** - **Other** Then use **Delay Notes** to explain what was actually affected. The notes field is always available, whichever types you pick — you don't have to select **Other** to write something. Say which crew or activity stopped and for how long; that's the detail a reviewer needs months later, and it's the detail nobody can reconstruct from memory. Once you record a delay, the log is flagged in the index so delayed days are easy to spot when you scan back through the project. Filled in this way, the log answers the questions people actually come back with: who was on site, what stopped, and for how long. #### Are Daily Log inspections the same as the project's Inspections? No. An inspection entry here is part of the field report for that day and records a **Passed**, **Failed**, or **N/A** result. The project's Inspections workflow is separate. #### Do I have to select Other before I can write delay notes? No. **Delay Notes** is available whichever delay types you pick, so choose the types that genuinely apply and explain the impact in the notes. ### Add photos and attachments A photo is only evidence if someone can tell what it's showing. Add each photo or attachment to the record it supports, and your exports will still make sense to someone who was not on site. Where you attach something decides where it ends up: - Add general site media from the Daily Log overview. - Add files or photos inside Personnel, Delivery, Dumpster, and Inspection entries. - Add the safety sign-in sheet or hazard photo under **Safety**. - In the app, choose the camera or your photo library from the photo action. Taking a photo needs your device's media permission. > **Note:** Wait for pending uploads to finish before navigating away from the Daily Log. At export time, images become photo pages grouped by where you attached them — **Daily Log Photos**, **Personnel Photos**, **Delivery Photos**, **Dumpster Photos**, **Inspection Photos**, **Safety Photos** — and non-image attachments appear in linked attachment lists. That grouping is exactly why it pays to put the delivery ticket on the delivery entry rather than on the overview. See [Export one or many Daily Logs](#export-one-or-many-daily-logs). Attach things this way and the day's evidence arrives already sorted. #### Where should I put a delivery ticket or an inspection report? On the entry itself. Files and photos added inside a Personnel, Delivery, Dumpster, or Inspection entry stay with that entry, which is what keeps the export readable. #### Why isn't my photo in the exported PDF? The export dialog lists only the groups that hold photos, and ticks them all. If a group you expected wasn't listed, the photo is attached somewhere other than where you think — check the entry rather than the log overview. Then confirm the attachment wasn't deleted and that your role has **View daily log photos**. ### Review and correct a Daily Log Daily Logs stay editable, so a mistake you find next week is still fixable. Use the activity area when you need to understand a change, and correct the specific entry instead of replacing the whole log. 1. Open the log by date. 2. Compare the overview, structured entries, weather, notes, and delays. 3. Open the entry that needs correction. 4. Save the corrected fields or remove that entry. 5. Review the activity section when you need change context. > **Note:** There is no publish or approval state on a Daily Log. If your team needs daily signoff, set an internal cutoff and make any later corrections deliberately. The record now matches the day it describes, and the rest of the day's work is untouched. #### Someone already exported the PDF. Can I still fix the log? Yes. The log stays editable, so correct the entry and export a fresh PDF. #### Should I delete the log and start the day over? Almost never. Edit a wrong value, delete a wrong entry, and leave the rest of the day standing — see [Delete a Daily Log or entry](#delete-a-daily-log-or-entry). ## Export and retain ### Export one or many Daily Logs Sooner or later the record has to leave Constructable — an owner asking about a rain week, a claim, a turnover package. Export one PDF to share a day's report, download up to 60 days of logs with **Export Daily Logs**, or send the whole history through Closeout for a turnover package. #### Export one log 1. Open the dated log. 2. On web, choose **Actions** → **Export to PDF**. In the app, open the **⋯** button in the header and choose **Export to PDF**. 3. Review the photo groups. Every group that has photos in it is listed and already ticked — untick the ones this reader doesn't need. 4. Download the PDF. The PDF carries all of the log's written content no matter what — including **Phone Calls** when that section is on and the day has calls, filled-in custom fields under each entry, and custom sections after Inspections. Sections and fields the project hid are left out. The tick boxes only control photo pages: **Daily Log Photos**, **Personnel Photos**, **Delivery Photos**, **Dumpster Photos**, **Inspection Photos**, and **Safety Photos**. A group with no photos in it isn't listed at all. > **Warning:** Because the groups start ticked, the risk is sending more than you meant to, not less. A day with a hundred site photos exports all hundred unless you untick them, and a personnel photo that made sense internally reads differently in an owner's inbox. Look at the list before you download. #### Export a range of dates When the owner wants last month's logs, you don't have to export them one day at a time. 1. Open **Daily Logs**. 2. Select **Export Daily Logs** in the page header, beside **Add New Log**. In the app, it's the download icon beside **+**. 3. The dialog opens on the current Sunday-through-Saturday week. Change **Start date** and **End date** if you need a different range — up to 60 days, counting both ends. 4. Select **Download**. You get one ZIP named for the project and the date range, with a **Daily Logs** folder holding a separate PDF for each log in the range. Days without a log are simply skipped, and if the range has no logs at all you'll see **No daily logs in that date range** instead of a download. Pick a longer range than 60 days and **Download** stays unavailable until you shorten it. Each PDF is the same one **Export to PDF** builds, with every photo group that has photos included — there's no photo picker for a range, so export the day on its own if a reader shouldn't get every photo. The ZIP builds in your browser, and a progress message counts through the logs with a **Cancel** button; keep the page open until the download starts. If some logs can't be prepared, the rest still download and the message tells you how many were left out. #### Export every log at once For the project's whole history — or more than 60 days — generate a Closeout package with only Daily Logs ticked. It builds in the background, so you don't have to keep the tab open. We email you when it's ready, and the tile on the Closeout page carries the **Download** button and the finished ZIP size. Only you see the packages you generate. Generating one needs **Generate closeout packages**. See [Closeout](https://constructable.ai/help/closeout#generate-a-closeout-package). Organization-level Reports also provide cross-project Daily Log reporting for users with access, including personnel, equipment, deliveries, dumpsters, inspections, materials, and phone calls. Employee hours have their own report — **Daily Logs - Time Cards Report** in project **Reports**, and the **Time Cards** card in **Global Reports** — and both need **View time cards** rather than Daily Logs access. You now have a shareable record for someone who will never log in. #### Why can't I find Export Daily Logs? It needs **View daily logs**. On web, look in the Daily Logs page header beside **Add New Log**; in the app, it's the unlabeled download icon beside **+** in the header. #### Does the PDF include photos automatically? Yes. Every photo group that has photos in it starts ticked, so a plain export includes all of them. Untick the groups you don't want before you download. ### Distribute a Daily Log Exporting a PDF gets the day's record onto your own machine. Distributing sends it — to the owner, the architect, whoever on your team reads the logs — and keeps a record on the log of who received it and when. 1. Open the dated log. 2. Choose **Actions** → **Distribute**. In the app it's the **⋯** button in the header. If the log has already gone out once, the action reads **Redistribute**. 3. **Step 1 of 3** is **Include Photos**. The PDF always carries all of the log's written content; these tick boxes only control which photo sections ride along. **Select all** and **Deselect all** are there for a day with a lot of photos. Select **Continue to Step 2: Recipients**. 4. **Step 2 of 3** is **Notify Recipients**, split into your organization's recipients and **External Recipients**. Your project's default recipients arrive already selected — add or remove people for this particular day. Select **Continue to Step 3: Review**. 5. **Step 3 of 3** shows the **Email** that goes out. Read it, then send with **Distribute** or **Redistribute**. Leave **Send email** on to deliver the notification. Turn it off and the distribution is still recorded against the log, but nobody gets a message — useful when you've already handed the PDF over another way and just want the record straight. Once a log has been distributed, a banner on the log shows **Distributed** or **Redistributed** with the time, the **Recipients**, the **Attachments**, and the **Distribution Message**. **View Sent Emails** takes you to the Email Activity report to confirm delivery. > **Note:** Redistributing doesn't replace the earlier send. Each distribution is added to the log's history, so a corrected log that goes out twice shows both. To stop rebuilding the same recipient list every day, set **Default distribution recipients** under **Daily Log defaults**. Open **Project Settings** → **General** → **Daily Log Settings**. Until someone sets them, the field shows **--** and every distribution starts from an empty list. You now have the day's report in the right inboxes, and proof on the log that it went. #### Do I have to send an email to distribute? No. Clear **Send email** and the distribution is recorded on the log without notifying anyone. #### Can I change who gets the log by default? Yes. Open **Project Settings** → **General** → **Daily Log Settings**. **Default distribution recipients** under **Daily Log defaults** pre-selects people in Step 2. You can still adjust the list for any single day. Editing those defaults needs **Create new daily logs, make changes to existing daily logs**. Organization **Daily Log Settings** is a different page — that's where you turn sections on and off for the whole organization. The project page's **Custom fields** panel, below the defaults, is where you hide sections or add fields for this project alone. ### Delete a Daily Log or entry Deleting is the bluntest tool in Daily Logs and it's rarely the one you want. Delete only as much as you need to correct the record, which is usually a single entry rather than the whole day. - Open an entry and choose **Delete** to remove only that personnel, time card, equipment, material, delivery, dumpster, or inspection entry. - Open the log's **Actions** menu — the **⋯** button in the app — and choose **Delete Daily Log** to remove the full dated record. Deleting the full log takes the whole day with it: every entry, every note, the delays, and the attached media. The confirmation says the action can't be undone, and it means it. If one value is wrong, edit it. If one entry is wrong, delete that entry instead of the entire day. Time card hours that carried a project, a cost code, and an hourly cost rate also produced payroll costs under **Non-Committed Costs**. Deleting the log deletes those linked costs along with the hours, so check the financial impact before removing a log that fed cost tracking. See [Send time card hours to Non-Committed Costs](https://constructable.ai/help/time-cards#send-time-card-hours-to-non-committed-costs). > **Note:** Export the PDF before deleting a full log. The dated record is often the only place a day's conditions were written down, and once it's gone there's nothing to recover. Corrected this way, the project history stays intact and only the mistake goes away. --- # How to use Time Cards in Constructable > Time Cards records the hours your own employees worked, on which project, and against which cost code. One card covers one person on one date, and its lines split that person's day across the jobs they touched. Coded hours become project payroll costs automatically. Source: https://constructable.ai/help/time-cards Time Cards records the hours your own employees worked, on which project, and against which cost code. One card covers one person on one date, and its lines split that person's day across the jobs they touched. Coded hours become project payroll costs automatically. ## Start here - **Log hours for an employee:** [Add a time card](#add-a-time-card). - **Record hours while writing the day's log:** [Log time cards from a Daily Log](#log-time-cards-from-a-daily-log). - **Find or export hours:** [Find, group, and export time cards](#find-group-and-export-time-cards). - **Get hours onto the project's costs:** [Send time card hours to Non-Committed Costs](#send-time-card-hours-to-non-committed-costs). - **Time Cards is missing or you can only see your own:** [Troubleshoot Time Cards](#troubleshoot-time-cards). ### Common task recipes - **Log a full week for a crew member:** Open **Time Cards**, select **Add Time Card**, pick the **Person** and **Date**, then add a line for each project they worked on. Repeat for each date. - **Split one day across two jobs:** In a single time card, add two **Line Items** with different **Project** values and the hours that belong to each. - **Pull last week's payroll numbers:** On **Time Cards**, group by **Person**, filter **Date** to the period, and export the grid to PDF. ## Record hours ### Add a time card You need a record of what your own employees worked so payroll and job costs agree with each other. A time card is that record: one person, one date, and one or more lines that say where the hours went. 1. Open **Time Cards** from the organization menu, between **Directory** and **Global Reports**. 2. Select **Add Time Card**. On a phone this is the **+** button in the header. 3. Choose the **Person** and the **Date**. Both are required. 4. Under **Line Items**, select **Add Line Item** and fill in the **Project** and **Hours**. 5. Set **Cost Code** and **Cost Type** if they aren't already filled in, and add **Notes** for anything the payroll clerk would otherwise have to ask about. 6. Add more lines for every other project that person worked that day. 7. Attach anything supporting under **Attachments** — a signed paper sheet, a photo of the crew board. 8. Save. If the employee has an hourly cost rate set up in Organization Settings, we fill in the cost code and cost type for you and tell you so: **Cost code is set by the employee's hourly cost rate** and **Cost type is set by the employee's hourly cost rate**. You can still override them on the line. > **Note:** A person can only have one time card per date. If you start a second one for the same person and day, we open the existing card instead and tell you: **A time card already exists for this person on this date. Switched to that entry.** Add another line item rather than another card. Saving a time card makes it immediately visible to everyone whose role lets them see it and eligible for cost sync. If the organization is connected to QuickBooks Online and Time Cards mappings are in place, QuickBooks time activities can also arrive as time card line items. A linked employee becomes the **Person**; the line adopts an existing card for that person and date when one is already there. Hours nobody typed by hand are usually this import — not a second card. You now have the day's labor captured against real projects and cost codes. ### Log time cards from a Daily Log Most hours get remembered at the end of the day, when someone is already writing the Daily Log. So you can enter them there without leaving the log. Open the day's Daily Log and find the **Time Cards** section. Select **Add Time Card** and fill in **Employee**, **Cost Code**, **Cost Type**, **Hours Worked**, and **Notes**. The entry sheet opens over the log — you don't navigate away and lose your place. Editing and deleting work the same way from that section. If your write access is **All time cards**, the **Employee** picker lists organization members the same way the **Person** picker does on **Time Cards** — not only people already on this Project Team. **Only my time cards** keeps the picker on you. If the same crew worked the same scope yesterday, select **Repeat** — **Time Cards from last log** — and we copy the previous log's time card lines onto today's date. If your write access is **Only my time cards**, that action reads **Your Time Cards from last log** and copies only cards you're allowed to edit. Fix the hours that changed rather than retyping everyone. On a phone the button shows only **Repeat**. Anything you enter here is the same record you'd see under **Time Cards** at the organization level; there's no separate daily-log-only version of it. When nothing has been entered yet, the section reads **No employee hours logged**. > **Note:** The **Time Cards** section appears in Daily Logs only when an administrator has turned on **Time Cards Section** under **Organization Settings** → **Daily Log Settings**. Related: [Add a time card](#add-a-time-card) for the full entry form and attachments. ## Review and report ### Find, group, and export time cards The **Time Cards** grid lists one row per line item, so a person who worked two jobs on Tuesday appears twice — once for each job's hours. That's what you want when you're reconciling costs, and it's why grouping matters when you're reconciling payroll. The grid shows **Person**, **Date**, **Project**, **Hours**, **Cost Code**, and **Notes**, newest date first and ungrouped. Group by **Person / Date** to see each person's day as a single block with its lines underneath, or by **Person**, **Date**, or **Project** depending on what you're totalling. Filter by **Person**, **Date**, **Project**, or **Cost Code**. A pinned total row at the bottom of the grid sums **Hours** for everything currently in view, and each group you collapse carries its own hours subtotal. Filter to a pay period and the number you need for payroll is sitting at the bottom of the screen — no export and no spreadsheet. Editing and deleting happen from the row itself: the pencil opens the entry, and the trash removes it. Deleting the last remaining line on a card deletes the whole time card — we ask you to confirm that with **Delete Time Card** instead of **Delete Line Item**. Both confirmations say the action can't be undone, and there's no way to restore a deleted time card from the interface, so check the date before you confirm. Export the current grid to PDF from the grid controls. What you exported is what you had on screen — the columns you were showing, in the grouping you chose. For hours across projects alongside other reporting, the **Time Cards** card in **Global Reports** and the **Daily Logs - Time Cards Report** in project **Reports** cover the same data in report form. ### Send time card hours to Non-Committed Costs Hours are only half the job — the other half is getting labor cost onto the project without anyone rekeying it. We do that for you, and it's on by default. **Automatically Sync Time Cards to Non-Committed Costs** lives in **Organization Settings** → **Financial Settings**. When it's **Enabled**, a time card line creates and keeps updating a payroll cost in Non-Committed Costs as long as the line has all three of these: - a **Project** - a **Cost Code** - an hourly cost rate on file for that employee A line missing any of the three is still a valid record of hours; it just doesn't produce a cost. That's usually the explanation when hours are logged but the project's actual costs look light. > **Note:** Turning the setting off doesn't just stop new costs — it removes the payroll costs that time cards had already created. Turn it off only if your organization brings labor cost in some other way. Cost rates themselves live under **Organization Settings** → **Hourly Cost Rates**. Change a rate and the costs generated from later hours follow it. Related: [Non-Committed Costs](https://constructable.ai/help/non-committed-costs) for how those costs then appear in project reporting. ## Troubleshooting ### Troubleshoot Time Cards #### Time Cards is missing from the organization menu Your role needs **View time cards**. #### You can only see or edit your own hours **View time cards** and **Create, update, and delete time cards** each carry a level. **Level of time card access** and **Level of time card write access** can be set to **All time cards** or **Only my time cards**. Employees get **Only my time cards** by default; an administrator can raise it on the role. **Only my time cards** write access also limits edit and delete to your own cards, including from a Daily Log. #### The Time Cards section is missing from Daily Logs An administrator turns it on with **Time Cards Section** under **Organization Settings** → **Daily Log Settings**. #### Hours are logged but no cost appears on the project Check the line has a **Project** and a **Cost Code**, that the employee has an hourly cost rate, and that **Automatically Sync Time Cards to Non-Committed Costs** is **Enabled**. #### A second time card for the same person and date will not save There's only one card per person per date by design. We switch you to the existing card — add a line item to it. #### A deleted time card needs to come back It can't be restored from the interface. Re-enter it. #### Hours appeared that nobody entered If QuickBooks Online is connected, time activities can sync into **Time Cards**. Confirm the employee is linked to a Constructable user, then look for a line on that person's card for the same date. --- # How to use Lists in Constructable > Use this guide to set up Lists, capture field issues, assign corrective work, review and complete items, export reports, and troubleshoot blocked actions. It covers desktop web, mobile web, and native-app behavior. Source: https://constructable.ai/help/quality-lists Use this guide to set up Lists, capture field issues, assign corrective work, review and complete items, export reports, and troubleshoot blocked actions. It covers desktop web, mobile web, and native-app behavior. ## Start here - **I set up quality workflows:** [Choose a list type](#understand-lists-and-list-types) → [Create a list](#create-and-manage-a-list) → [Create templates](#create-and-use-list-item-templates) → [Configure custom fields](#configure-custom-fields-on-a-list). - **I record field issues:** [Add a list item](#create-a-list-item) → [Add evidence and drawing locations](#add-evidence-comments-and-drawing-locations). - **I perform corrective work:** [Work assigned items](#assign-follow-and-filter-list-items) → [Move work through review](#move-a-list-item-through-its-statuses). - **I approve work:** [Review status and evidence](#move-a-list-item-through-its-statuses) → [Export the list](#export-a-list). - **Something is missing or blocked:** Start with [Troubleshooting Lists](#troubleshooting-lists). ### Common task recipes - **Run a punch walk:** Create a Punch List, add items with location, trade, assignee, approver, due date, and photos, then send each item through review. - **Jump straight to a list you use daily:** Expand **Lists** in the project sidebar and select it from the shortcuts underneath. - **Give crews location access:** Download location QR codes, post them in the field, and scan a code from the app to filter or add items at that location. - **Reuse a standard checklist:** Manage templates, then choose a template while creating items. - **Collect extra details on every item:** Open **List Settings** → **Custom Fields**, then **Add Field** or **Add Section**. - **Drop fields a list never uses:** In the same **Custom Fields** page, select a built-in field such as **Trade** and turn off **Show this field**. - **Log a safety incident:** Use **Incidents** under **Field Tools**, not a list whose type is **Incidents**. See [Incidents](https://constructable.ai/help/incidents). - **Issue a report:** Filter the list down to the items you want, then export a PDF with or without item photos. ## Understand access and workflow ### Understand how Lists work A list is a collection of work you found on a walk, and a list item is one piece of that work. Assignment, review, and reporting are all things that happen to an item between the moment you spot it and the moment someone signs off on it. **List → list item → location and evidence → assignee → In Review → approver → Completed** The list is also what sets the type, and the type changes what we call the items — **Punch Item**, **Observation**, **Incident**, or **To-Do**. Choose it before people start adding work. Everyone attached to an item has a distinct job. The assignee does the work, the approver decides whether it's acceptable, and subscribers just follow along. Items can also carry drawings, comments, attachments, trades, dates, and follow-up work, so the whole story stays in one place. Two vocabularies describe the same thing here, and knowing where each one shows up will save you a search. The tool is called Lists. Configuration, exports, and Inbox say "punch" instead. If you're looking for one of these and can't find it, search for the word in the right-hand column: | Where you are | What it's called there | | ---------------------------------------- | ----------------------------------------------------------------------------------------------- | | Project navigation and the list index | **Lists** | | Project Settings > Roles and Permissions | **Punch Lists**, with actions like **View punch lists** and **Move punch list items to review** | | The PDF export dialog | **Export Punch List PDF** | | A Closeout package's section list | **Punch List** | | The Inbox **Type** filter | **Punch List** | This holds no matter which list type you're working in. An Observations list's permissions still read "punch list items," and its PDF still comes out of a dialog titled **Export Punch List PDF**. ### Reach a list from the project sidebar If you live in one or two lists all day, you don't have to go through the index every time. Use **Lists** in the project navigation to reach your lists. In a sidebar layout, expand **Lists** for shortcuts to open lists. Select the chevron next to the **Lists** label under **Field Tools** to expand it — the notification badge stays on the right, like the other tools. Underneath you'll find: - Up to four open lists, oldest first, each with its list-type icon and that list's notification count. - **View all**, with the total in parentheses, which opens the Lists index. It also shows the notification count for lists that aren't in the shortcuts. The badge on **Lists** itself is the project total. The shortcuts show open lists only, so an archived list never appears there — use **View all** to reach it. The count beside **View all** is every list on the project, archived ones included, which is why it's often higher than the number of shortcuts above it. Constructable remembers whether you left the section expanded or collapsed, and it starts collapsed until you open it. > **Note:** You can also open **Lists** and choose a list from the index. #### Why isn't the list I want in the shortcuts? Either it's archived, or four older open lists are ahead of it. The shortcuts are the four oldest open lists, not the four you visit most, so use **View all** for anything else. Expand it once and your daily list is one click from anywhere in the project. ### Permissions, visibility, and platform availability If you can see a list but not its items, or you can move your own work to review but can't mark anything complete, that's permissions working as configured. Under **Punch Lists** in Project Settings, four separate actions control this, and having some but not others is completely normal. - **View punch lists** shows you the lists themselves. - **View punch list items** shows you the work inside them. This is separate from the one above, which is why an empty-looking list is usually a permission rather than an empty list. - **Add new punch list items, make changes to existing punch list items** covers creating items, editing any field, and setting any status including **Completed**. - **Move punch list items to review** lets an assignee hand their own work off for inspection without granting them the ability to approve it. Three of those four also carry a scope dropdown that decides how much you see, and that's where most of the confusion lives: - **Level of punch list access** is either **All Punch Lists** or **Only punch lists with an item assigned to me or anyone at my company, or where I'm the approver or a subscriber**. - **Level of punch item access** is either **All Punch Items** or **Only punch items assigned to me or anyone at my company, or where I'm the approver or a subscriber**. - **Level of move to review access** is either **All Punch Items** or **Only punch items assigned to me or anyone at my company**. By default, admins, managers, and employees get all four actions at the **All** scope. Subcontractors, consultants, and owners get the two view actions and move-to-review, all at the restricted scope, and none of the write action — so they see work assigned to them or anyone at their company, can send that work for review, and can't approve it. **Configure custom field definitions** is a separate Admin-only permission. It opens **Custom Fields** on a list; it does not by itself let you add items. Filling in those fields on an item still uses **Add new punch list items, make changes to existing punch list items**. Incident forms are a different page and use **Manage incident settings, including incident types** — see [Configure incident settings and forms](https://constructable.ai/help/incidents#configure-incident-settings-and-forms). Those are just the defaults, though. Your project may be set up differently, so if what you're seeing doesn't match this, check with your Admin before assuming something is broken. > **Note:** Being a subscriber changes what you can see and what you're notified about. It doesn't make you the assignee or the approver. Day-to-day item work goes anywhere you do — the app and web both handle creating items, adding photos, and moving work through review. Use list settings and export actions to configure lists and prepare reports. - The app gives you a compact item list, detail pages, a floating **Add Item** button, and a header **⋯** menu with **Add Item** and **Export all to PDF**. - The **Actions** menu provides **Bulk Actions**, **Download as PDF**, **Download as CSV**, and **Manage Templates**. - Open **List Settings** to find **Manage Templates** and **Custom Fields**. - Find **New List** and **Download Location QR Codes** in the Lists header or its **⋯** menu, depending on your layout. - In compact layouts, check the header actions and **⋯** menu for list setup and reporting controls. - Allow camera access when scanning a location QR code. ### Troubleshooting Lists Most Lists problems come down to one of three things: an active filter, an archived list, or a permission you don't have. Find your symptom below and work through the checks in order. #### A list or item is missing Nine times out of ten it's a filter, not a deletion. Work through these in order: 1. Clear the item status, location, and any other filters. 2. Expand **Archived** — someone may have archived the list. 3. If your access is restricted, confirm you're an assignee, approver, or subscriber on the item — or that someone at your company is the assignee. 4. Ask an Admin to check both list-view and item-view permissions, since those are separate. #### Add Item is missing The list has to be open, and your role needs **Add new punch list items, make changes to existing punch list items**. Archived lists won't take new work until someone unarchives them. #### I can't move an item to In Review Check that the item is assigned to you or someone at your company, and that your role has **Move punch list items to review**. If its scope is set to **Only punch items assigned to me or anyone at my company**, an item assigned to a different company won't move no matter what you do. Anyone with full edit access can change statuses regardless of assignment. #### I can't mark an item Completed Completing an item needs **Add new punch list items, make changes to existing punch list items**. Move-to-review on its own lets you hand work off for inspection, but it isn't an approval permission — that separation is deliberate. #### Templates are missing Open the list, choose **Manage Templates**, and confirm your role has **Add new punch list items, make changes to existing punch list items**. Restricted item access still includes the list's templates when you can add items, so the picker is there for people who create work even if they can't see every item on the list. View-only restricted roles don't get those template rows. #### Custom Fields is missing Open **Custom Fields** from **List Settings**. Your role needs **Configure custom field definitions**; Admin has that permission by default. #### Assignee, Trade, or Due date is missing on one list That list hides the field. Open **List Settings** → **Custom Fields**, select the field, and turn on **Show this field**. Values entered before it was hidden come straight back. The same goes for a missing **Approver**. #### A drawing marker or attachment is missing You need access to both the list item and the drawing or photo it points at. Missing one hides the connection. > **Note:** A drawing pin is context for an item, not the item itself. Deleting the pin doesn't necessarily delete the item behind it. ## Set up and capture ### Understand Lists and list types Every list has a type, and the type decides what your team sees on screen and in reports. Picking the right one up front saves you explaining later why the safety log calls everything a punch item. - **Punch List** tracks deficient or incomplete work through correction and approval. - **Observations** records what someone noticed in the field, which may or may not turn into assigned work. - **Incidents** groups safety-adjacent list items that still go through assignee and approver review. That is not the project's safety log — **Incidents** under **Field Tools** is. See [How to use Incidents](https://constructable.ai/help/incidents). - **To-Do List** tracks general project tasks that don't fit the other three. Underneath, all four list types are the same machine — same assignment, statuses, attachments, and reporting. The difference is the vocabulary everyone reads. You don't have to create any of these to get started. Every new project arrives with one of each already made — **Punch List**, **Observations**, **Incidents**, and **To-Do List** — so you can add your first item immediately and rename or archive whatever your team doesn't use. > **Note:** Choose the type before you start adding items, so nobody has to mentally translate "punch item" into "observation" while they work. Get this right and your reports read like the work they describe. #### Can I change a list's type after I've added items? Yes. Edit the list and choose a different type. The item label updates to match, and the items themselves are untouched. #### Do the four types behave differently? No. They share the same statuses, permissions, notifications, and export behavior. The type is about clarity, not capability. ### Create and manage a list Make a separate list whenever the work belongs to its own phase, walk, area, or owner. It keeps assignments legible and means you can report on one walk without filtering around three others. Choose **New List** from the Lists header or its actions menu. 1. Open **Lists**. 2. Select **New List** in the upper-right corner. In the app, open the **⋯** menu in the header and choose **New List**. 3. Enter a clear name in **List title**, a required **Prefix** (for example `PL`), and choose the list type. 4. Select **Create List**, then open the list. The prefix is unique on the project and stored in uppercase. Constructable fills one in from the title as you type; change it if two lists would otherwise share the same letters. Item numbers on this list then display as the prefix plus a padded number — `PL #001` — so a punch walk can call items without naming the whole title. Be specific with names. `Level 2 Owner Walk - 2026-07-24` will still make sense in October; `Punch List 3` won't. If two walks need their own reports or need to be archived at different times, give them their own lists instead of building one oversized one. Once the list exists, the **⋯** button on its row is where you find **Edit List**, **Archive List** or **Unarchive List**, and **Delete List**. That menu also carries **Manage Templates** and **Custom Fields**. Inside an open list, those same setup actions sit under **List Settings**. Each list on the index carries a progress ring showing how much of it is finished — completed items over active ones, with drafts and templates left out of the math. > **Note:** The ring counts the items _you_ can see. If your role is limited to items where you're the approver, assignee, or subscriber, your ring reflects your slice of the list, and a project manager looking at the same list will see a different percentage. Neither number is wrong; they're answering different questions. Use a manager's view when you're reporting overall closeout progress. > **Pro Tip:** Resist the urge to make one list per project. A list you can hand to a single trade or close out in a single walk is a list that actually gets closed out. Named and scoped this way, a list is something you can hand to one trade and finish. ### Create and use list item templates If you find yourself typing the same item over and over — the same fire-caulking check, the same pre-drywall look — turn it into a template. You'll type it once and keep the wording consistent across everyone who uses it. Open **Manage Templates** from the list actions or **List Settings**. 1. Open **Lists**. 2. Select the **⋯** button on the list's row and choose **Manage Templates**. Inside an open list, it's under **List Settings**. 3. Add a template with whatever's reusable: title, description, trade, dates, assignee, or approver. 4. Head back to the list. 5. Choose the template when you add an item or a follow-up, then fill in the location and job-specific evidence. > **Note:** Templates are starting points, not finished items. Give each new item a quick read before you save so last quarter's assignee or an expired due date doesn't quietly ride along. If your punch item access is restricted, you still see the templates on lists you can open as long as you can add items. A view-only restricted role does not. Build them once at a desk and your crews get consistent items from a phone all season. ### Configure custom fields on a list Standard list fields cover assignee, trade, location, and due date. When a walk needs something those don't capture — a deficiency code, a weather condition, which shift found it — add custom fields on that list. They show up on every item, on the create form, in the grid, and on the PDF. The same page also lets you hide the standard fields a list doesn't use. Open **Custom Fields** from **List Settings** to configure the layout. 1. Open the list. 2. Select **List Settings**, then **Custom Fields**. From the Lists index, the same action is on the row's **⋯** menu. 3. Select **Add Field** or **Add Section**. An empty list opens with **Capture the details your team needs**, plus **Fields** and **Sections** cards. A view-only role sees **No custom fields have been added to this list yet.** 4. Select a field or section in the outline to edit it. Empty inspector copy reads **Select a field or section to edit it.** 5. Enter a **Name**. Choose a **Type**: **Text**, **Rich Text**, **Number**, **Date**, **Date and Time**, **Checkbox**, **Single Select**, **Multi Select**, **User**, **Company**, **Cost Code**, **Location**, or **Attachment**. **Cost Code** picks one of the cost codes enabled on the project, and **Location** picks one of the project's locations. 6. Turn on **Required** when an item shouldn't save without a value. 7. For **Single Select** or **Multi Select**, add **Options**. **Add option** adds another; each option can be removed. Two options on the same field can't share a name, even with different capitalization — a duplicate shows **An option with this name already exists.** and doesn't save until you change it. 8. For **User** or **Company**, set **Choose from** to **People on the project team** / **Companies on the project team** or **Everyone in the directory** / **All companies in the directory**, and turn on **Allow multiple** when more than one value is allowed. 9. On a section, enter a **Title** and turn on **Has many entries** when people should fill the section out more than once on each item. 10. Drag **Reorder field** or **Reorder section** when the order on the item should change. **Remove field** or **Remove section** deletes that piece from the list. You need **Configure custom field definitions** to build or change the layout. Admin has it by default. Filling in the values still uses **Add new punch list items, make changes to existing punch list items**. Editing a value writes to the item's activity. A project created from a template copies each list's custom field layout onto the new project. It does not copy values onto items. #### Hide built-in fields a list doesn't use The outline also lists the fields every list has. Seven of them can be hidden on one list: **Approver**, **Assignee**, **Trade**, **Location**, **Start date**, **Due date**, and **Description**. A to-do list that never uses trades, or an observations list nobody signs off, reads better without the empty boxes. 1. Select the built-in field in the outline. 2. Turn off **Show this field**. On desktop you can also hover the field in the outline and select the eye icon. **Title**, **Number**, and **Status** show a lock — every item needs them, so they can't be hidden. A hidden field disappears from that list's create form, item pages, grid, PDF export, and from the project **List Report** and **All Lists**. Nothing is deleted: values already entered are kept and come back if you show the field again. Hiding a field also turns off what depends on it. With **Due date** hidden, the inspector warns **Overdue flags are off while it's hidden.**, and items on that list stop getting due-date reminders. With **Assignee** hidden, nobody receives assignee notifications or reminders for that list's items, and the items drop off the assignee's ball-in-court list on the Dashboard. With **Approver** hidden, the inspector warns **Moving an item to In Review won't notify anyone while it's hidden.** Nobody gets the approver's emails for that list's items, and **Edit Approvers...** leaves **Bulk Actions**. Items you create while it's hidden don't get an approver at all, so showing the field again brings back approvers only on items that already had one. Anyone with **Add new punch list items, make changes to existing punch list items** can still mark items **Completed**. Once the fields exist, anyone who can edit an item can fill them in — on desktop, mobile web, or native — the same way they fill title and trade. ### Create a list item The person who fixes this probably isn't standing where you're standing. Give them enough detail to find the condition, understand what finished looks like, and prove it when they get there. 1. Open the list. 2. Select **Add Item**. In the app, it's the floating button in the lower corner, and it's also in the header's **⋯** menu. 3. Enter a specific title and description. 4. Choose a location and trade where they apply. 5. Set start and due dates. 6. Choose an assignee and an approver. 7. Add subscribers who should follow the item. 8. Fill in any custom fields this list requires, including fields inside sections. A required custom field that's empty blocks save. A section with **Has many entries** can be filled more than once; empty copy on the item reads **No entries**. 9. Attach photos, or pull in project photos you've already uploaded. 10. Save. If the description, location, trade, a date, the assignee, or the approver isn't on the form, that list hides it — skip the step. See [Configure custom fields on a list](#configure-custom-fields-on-a-list). Saving an item with an assignee emails that person right away rather than waiting for their digest, unless the assignee is you — see [Send reminders and manage notifications](#send-reminders-and-manage-notifications). You stay on as a subscriber automatically, since you created it — no need to add yourself. Anyone you @mention in the description is subscribed automatically too, so you don't have to mention someone and then remember to add them to the subscriber list. Each item has a **Number** on its Overview. The list's **Prefix** plus that number is how the item shows up in grids, search, and exports. If this item can't start until something else finishes, use **Add Follow Up** on the parent item to create the follow-on work. Follow-up items always live on the same list as their parent, so start from the parent rather than creating the item somewhere else and trying to link it afterward. The new item's start date is the parent's due date, and its due date is one week after that. You'll still pick a template — **Select Template** — the same way you do for a regular item. The linked parent shows as **Follows** on the child, and the parent lists its **Follow-up items**. When the problem turned up on an inspection, start from the inspection item instead — **Create List Item** in its **⋯** menu fills in the title and observations for you. The new item's Overview shows **From Inspection** with a link back to that inspection. See [Create a list item from an inspection item](https://constructable.ai/help/inspections#create-a-list-item-from-an-inspection-item). > **Pro Tip:** Write the title the way you'd say it out loud on the radio. "Missing fire caulk at Level 2 north corridor penetrations" beats "Caulk issue" when someone is scanning forty items on a phone. #### Let the description fill in the rest Typing a full description and then re-entering the same facts into the title, location, and trade fields is busywork. Write **Full Item Description** the way you'd describe the condition to a foreman, then select **Autofill from Description**. We read what you wrote and populate the location and the trade, and where the trade points clearly at one subcontractor we'll suggest the assignee too. The title only gets filled in if you left it empty, so if you already typed one it stays exactly as you wrote it. Everything stays editable — check it before you save, particularly the location, since a description that says "second floor east" can't tell which of two east rooms you meant. Autofill needs a connection. In a basement or a dead zone the button is greyed out, and in some builds it loses its label and looks like a blank space next to **Full Item Description**. Nothing is broken — write the item out by hand, or save it and revisit once you're back on signal. This is why it pays to dictate a rich description on your phone rather than typing a terse one. The more you say, the less you have to fill in. ### Add evidence, comments, and drawing locations Keep the evidence and the conversation on the item itself. The moment part of the story moves to text messages, the item stops being a record anyone can trust. - Attach photos, videos, and files. - Pull in existing project photos when the evidence is already in Photos. - Use comments for updates, questions, and review context. - Place or connect a **List Item** pin in the drawing viewer. That's the pin tool's name in the viewer toolbar; the record it creates is an item on one of your lists. - Check **Sheet Pins** on the item to jump to the sheets it's associated with. The list grid's **Sheet** column shows the same sheets, so you can see where each item is pinned without opening it. Write descriptions that hold up away from the drawing. A pin tells someone where the issue is, but the item still has to say what's wrong and what outcome you need — plenty of people will read it from a phone in a stairwell, not from the viewer. For the drawing-viewer side of this workflow, see [Working with Submittals and list items on drawings](https://constructable.ai/help/drawings#working-with-submittals-and-list-items-on-drawings). Keep it all on the item and the next person inherits the whole story instead of half of it. ### Send reminders and manage notifications Use the item's actions menu when an Open item needs follow-up or when you want to change the updates you receive. - **Send Reminder Notification** appears on an Open item when you have permission to edit list items. The reminder targets the current assignee. - **This Item's Notification Settings** controls your notifications for that item. It does not change the assignee, approver, subscribers, or their access. - On web, notification settings are a primary item action. In the native layout, both the reminder and notification settings are in the item's actions menu. If **Send Reminder Notification** is missing, confirm the item is still **Open** and that you have **Add new punch list items, make changes to existing punch list items**. You often won't need the reminder, because the item already emails whoever has the ball — the person whose turn it is — the moment it lands with them, instead of holding it for their digest: - A new item emails its assignee. - Changing the assignee on an **Open** item emails the new assignee. Changing the approver on an item that's **In Review** or **Rejected** emails the new approver. - Moving an item back to **Open** emails the assignee. Moving it to **In Review** or **Rejected** emails the approver. **Completed** emails no one right away. Nobody is emailed for a change they made themselves, and drafts never send these emails. Everything else about the item follows your usual digest and **Channels** settings in My Account. ## Assign, review, and report ### Assign, follow, and filter list items A hundred-item list is useless to everyone and urgent to no one. Roles and filters are how each person carves out the handful of items that are actually theirs. Seven fields do most of the sorting: - **Assignee** owns the corrective work. - **Approver** decides whether the result is accepted. - **Subscribers** follow the conversation without owning anything. - **Trade** groups items by responsible scope. - **Location** groups work by where it is. - **Sheet** shows which drawing sheets the item is pinned to. - **Due Date** drives what happens first. If the list has custom fields, those names become extra columns on the grid. If the list hides a built-in field such as **Trade** or **Due date**, its column and filter leave the grid. The **Sheet** column shows the first sheet number, plus a count like +2 when the item is pinned to more sheets. Select the sheet number to open the drawing viewer at that pin. Group by **Sheet** and an item pinned to three sheets appears under all three, so the group counts can add up to more than the number of items — that's each pin being counted, not a duplicate. Stack filters for status, assignee, trade, location, sheet, and dates to find the items you need. Select items and use **Bulk Actions** to edit them with write access, or use the export actions for PDF and CSV reports. In compact layouts, check the header actions or **⋯** menu. **Location** options come from the **Locations** block in Project Settings, where they're arranged in tiers — Tier 1 might be a building, Tier 2 a floor, Tier 3 a room. **Trade** options come from your organization's trades, which an Admin manages in the **Trades** panel under Organization Settings. If the choice you need isn't in either list, that's a settings change rather than something you can type in on the item. #### Change many items at once Select the items you want, open **Actions**, and pick a bulk edit under **Bulk Actions**: - **Edit Due Date...** - **Edit Assignee...** - **Edit Approvers...** - **Edit Status...** - **Edit Trade...** - **Edit Subscribers...** This is how you reassign a whole trade's work when a sub changes, or push a set of due dates after a schedule slip. The **Edit Assignee...** picker lists people from the companies on this project, not only people already on the Project Team. Inactive users, bidders, and super users stay out of that list. > **Note:** With nothing selected, a bulk action applies to every item currently showing — the labels change to **Edit All Due Dates** and so on to warn you. That's genuinely useful when you've filtered down to exactly the right set, and genuinely destructive when you haven't. Read the action label before you confirm: if it says "All," check your filters. > **Pro Tip:** Filter to your own name plus **Open** before a walk. That's your list for the morning, and it's usually a lot shorter than it looks from the full grid. Filtered down this way, a hundred-item list becomes the six things you can actually close today. ### Move a list item through its statuses An item's status is how everyone else knows whose turn it is. Keeping it current is the difference between a list that closes itself out and one that stalls with each side waiting on the other. ![Desktop: A list item shows its current status and the actions used to move it through review and completion.](https://constructable.ai/help-images/quality-lists/item-status.png) **Open → In Review → Completed** - **Open:** Work is active, or it's been sent back for another pass. - **In Review:** The assignee says it's ready to inspect. - **Completed:** The approver accepted the result. - **Rejected:** The review didn't accept it. Reopen it when more work is needed. Leave the item **Open** while the correction is underway. Once the work is done, add a photo or two and a comment explaining what changed, then move it to **In Review** — that's the signal to the approver that it's their turn. The approver walks the condition, checks it against the evidence, and marks the item **Completed** if it's accepted or **Rejected** if it isn't. Rejected work goes back to **Open** for another cycle. Nothing is lost, and the comment history shows why it came back. > **Note:** Completing an item isn't the same as photographing it. Save **Completed** for work that's genuinely been accepted through your project's review process, or your closeout reports will say things your walk won't back up. Who can do what here depends on access. Anyone with **Add new punch list items, make changes to existing punch list items** can move items between any of the active statuses. Someone with only **Move punch list items to review** can hand off work assigned to them or anyone at their company, and no more. Status is also completely separate from whether the list is archived. Kept current, the status column tells the whole team whose turn it is without anyone having to ask. #### Why can't I mark my own item Completed? Because move-to-review and approval are deliberately different permissions. You can tell the approver the work is ready; they decide whether it passed. #### What happens to a rejected item? It returns to **Open** for another correction cycle. All of its comments, photos, and history stay attached, so the next pass has the full context of why it came back. #### Does archiving a list change its items' statuses? No. Archiving is about where the list appears, not about the state of the work inside it. ### Export a list Export when you need to hand a list to someone who doesn't log in — a distribution for the trades, a record of a walk, or a package for turnover. 1. Open the list. 2. Apply filters first if the report should only cover part of the list. 3. Open **Actions** and choose **Download as PDF** under **Download As**. 4. In the **Export Punch List PDF** dialog, decide whether to include item photos. 5. Generate and download the PDF. You'll get titles, due dates, statuses, assignees, trades, the sheets each item is pinned to, custom fields (including section entries), non-image attachments, and optionally the photos, under a title bar with the list's name. Built-in fields the list hides are left out. Since the export follows whatever filters are active, take one look at the list on screen before you generate — that's your table of contents. > **Note:** Before you send an export outside Constructable, scan it for items that were restricted inside the platform. The PDF has no permissions once it leaves. Under **Download As** you'll also find **Download as CSV**, which is the one you want when the list is headed for a spreadsheet. It carries the grid's columns — title, status, trade, location tiers, due date, assignee, approver, description — and no photos. Use the PDF when the pictures are the point and the CSV when the sorting is. Either way, someone who will never log in gets the same list you're looking at. #### Send just one item as a PDF When a sub needs one item rather than the whole walk, open the item, open its actions menu, and choose **Download PDF**. It's in the same menu in the app. If the item has photos, the **Export Punch List PDF** dialog opens first with **Item Photos** turned on; with no photos, the download starts straight away. The file is named after the item's number and title. #### Report across every list on the project An export covers one list. When the question spans all of them — everything still open, everything assigned to one sub, everything overdue in one area — use **List Report** instead. On desktop, **Open List Report** in the Lists header takes you straight there; it's also under **Management Tools** → **Reports**. It puts every list item on the project in one grid you can group by **List**, **List Type**, **Trade**, **Assignee**, **Status**, **Due Date**, or location, and it leaves out drafts and templates. **All Lists** in **Global Reports** does the same thing across every project. Both reports work on the Field package, too — they don't need Project Management. See [Use the List Report](https://constructable.ai/help/reports#use-the-list-report). #### Post QR codes at the locations themselves **Download Location QR Codes** produces a printable PDF with one code per page, each captioned **Scan to open items and actions for this location**. Tape them up at the door and anyone with the app can scan straight into that location's items instead of hunting through a list on a phone. The button is on the Lists header on desktop, and in the header's **⋯** menu in the app. When you add an item from that location menu — or after scanning a code — **Save** closes the sheet and opens that list filtered to the location, the same view as **View items at this location**. In the app, the item you just saved is highlighted in green for a few seconds so you can confirm it landed. To log the next one at the same spot, select **Add Item** there and pick a template; the scanned location is filled in unless the template carries a location of its own. > **Note:** This exports codes for every location in the project, not just the ones used in the list you're looking at. Print the pages you need. #### Why does my export have fewer items than the list? Exports respect your active filters. Clear them and export again if you meant to include everything. #### Can I export from my phone? Yes. Open the actions or **⋯** menu and choose **Export all to PDF**, **Export selected to PDF**, or **Download as CSV**. Apply filters and select items first when you need a specific group. For a single item, use **Download PDF** in that item's actions menu. ### Archive or delete lists and items Archiving and deleting sound similar and aren't. Archiving tidies a finished list away and keeps every bit of it. Deleting destroys it. Almost always, you want to archive. All four of these live on the **⋯** button on the list's row. - **Archive List** pulls the list out of the open group and stops new-item work, while keeping it available under **Archived**. - **Unarchive List** brings it back into active use, exactly as it was. - **Delete List** deletes the list and every item in it. The confirmation says so, and there's no undo. - **Delete Item** deletes a single item, along with its comments, photos, and history. Also no undo. Archiving is the natural end of a list's life. The walk is done, the record survives, and your Lists page stops showing you work from three phases ago. An archived list also drops out of the sidebar shortcuts, which is half the point. > **Note:** Before deleting an item, look at what's hanging off it — comments, attachments, drawing pins, and anything marked as follow-up work. If other items follow this one, the confirmation asks whether to **Delete All Follow-up Items** or **Remove Follow-up Links**. Read that choice before you confirm. #### Can I get an archived list back? Yes. Open **Archived** and unarchive it. Everything comes back as it was. #### Should I delete a list once the project closes out? Usually not. Archive it instead — closeout is exactly when you want the record to still exist, and a Closeout package pulls its **Punch List** section from lists that are still there. --- # How to use Inspections in Constructable > Use this guide to build, schedule, perform, complete, export, and troubleshoot Inspections. It covers the exact controls and blocked states on desktop web, mobile web, and the native app. Source: https://constructable.ai/help/inspections Use this guide to build, schedule, perform, complete, export, and troubleshoot Inspections. It covers the exact controls and blocked states on desktop web, mobile web, and the native app. ## Start here - **I create inspection programs:** [Understand the lifecycle](#understand-the-inspection-lifecycle) → [Create or import a draft](#create-import-or-duplicate-an-inspection) → [Build sections and items](#build-the-inspection-structure). - **I standardize inspections across the company:** [Build organization inspection templates](#build-organization-inspection-templates) → [Create custom inspection responses](#create-custom-inspection-responses). - **I perform field inspections:** [Schedule and start](#schedule-and-start-an-inspection) → [Record results and observations](#record-item-results-observations-and-attachments) → [Complete](#complete-reopen-or-correct-an-inspection). - **I review records:** [Find inspections](#find-and-open-inspections) → [Export a PDF](#export-an-inspection-pdf). - **Something is missing or blocked:** Start with [Troubleshooting Inspections](#troubleshooting-inspections). ### Common task recipes - **Build a checklist every project can use:** In **Organization Settings** → **Inspection Templates**, select **Add Template** and build the sections and items once. In any project, pick that template in the **Create Draft Inspection** dialog. - **Answer with your own words instead of check / X / N/A:** In **Organization Settings** → **Inspection Responses**, add a response set such as Yes / No, then choose it as an item's **Response type**. - **Repeat an inspection on this project:** Duplicate last occurrence's inspection instead of starting over. - **Seed a new project:** Import inspection structures from another project. Item results, observations, and item attachments are left behind. - **Perform the field walk:** Move the inspection to **Inspecting**, record a result on each item — **Passed**, **Failed**, **N/A**, or one of the item's custom responses — and add notes and photos. - **Send a failed check to the responsible trade:** In **Add/Edit Observations**, select **Save & Create List Item**, pick the list, and assign it. See [Create a list item from an inspection item](#create-a-list-item-from-an-inspection-item). - **Issue a record:** Complete the inspection and export its PDF. ## Understand access and lifecycle ### Understand how Inspections work Every inspection moves through the same four statuses, and the one it's in decides what you can do to it. **Draft → Scheduled → Inspecting → Complete** An inspection holds an overview, trades, attachments, ordered sections, and ordered checklist items. Item results are recorded while the overall inspection is **Inspecting** — that one rule explains most of what you can and can't do at any given moment. Each status answers a different question about where the inspection stands. - **Draft:** Build the structure and overview. - **Scheduled:** Set the inspection date and prepare for field work. - **Inspecting:** Record a result on each checklist item. Every result counts as a pass, a fail, or not applicable, even when the item uses your organization's own response wording. - **Complete:** Preserve the finished state for review and export. If you have inspection write access, you can move to the next status or jump to any other one. Sending an inspection backward reopens it — a cancelled walk returns to **Scheduled**, a finished one returns to **Inspecting** for a correction. The status only ever shows where the inspection stands now, so once you've moved it backward, the activity log is the only place the real order of events survives. ### Permissions, visibility, and platform availability Inspections splits access three ways, and holding one permission without the others is normal rather than a sign something is broken. - **View inspections** controls access to non-draft inspection records. - **Create new draft inspections** controls creating drafts and seeing the draft group. - **Create new inspections, make changes to existing inspections** controls structure, status, results, observations, duplication, rename, and deletion. Administrators, managers, and employees receive these permissions by default. Your project may be configured differently, so check with your administrator before assuming a record has gone missing. > **Note:** Draft access and general view access are separate. Someone can be able to view every active inspection and still not see a single draft. Once you have the access, everything in Inspections works on a phone. Browsing, recording results, writing notes, changing status, importing, duplicating, and exporting the PDF are all available on desktop web, mobile web, and the app. - By default the result controls are three icon buttons, not words: a check for **Passed**, an X for **Failed**, and an N/A glyph for **Not Applicable**. An item that uses a custom response set shows its responses as labeled buttons instead, laid out two to a row on a phone. Either way they're taller on a phone so they're easier to hit with a glove on. - Building a long checklist works on a phone but is miserable there. Do structure work at a desk and save the phone for the walk. - On desktop, the create control is a **Draft Inspection** button with a chevron beside it holding **Import from Project**. In the app it's a **Draft** button whose menu holds **New Draft Inspection** and **Import from Project**. ### Troubleshooting Inspections Nearly everything that looks broken in Inspections is one of three things: a permission you don't have, a status that disables the control you're reaching for, or an import behaving exactly as designed. Find your symptom and work through the checks in order. #### A draft is missing Confirm you have **Create new draft inspections**. Drafts are shown separately from active inspections, and general inspection view access doesn't reveal them. #### Pass, Fail, and N/A are disabled They aren't greyed out — outside **Inspecting** they're not drawn at all. An item that already has a result shows a **Passed**, **Failed**, or **Not Applicable** badge in their place — or the chosen response's own label, for items with a custom response set — and an item with no result shows nothing. So a checklist that looks empty and unclickable usually means the inspection hasn't been started yet. Move it to **Inspecting** and confirm you have **Create new inspections, make changes to existing inspections**. You need both. #### Imported observations or photos are missing That's the design rather than a failure. Import copies inspection structure, sections, and items as new drafts, and intentionally leaves item results, observations, and item attachments behind. #### The wrong people or date appear Check the inspection overview — inspected-by user, inspection date, trades, and description all live there. Correct the overview before you export. #### Export is missing **Export to PDF** sits in the inspection's **⋯** menu. Confirm you have **View inspections**, and if the inspection or its attachments are still syncing, wait and retry. #### Status changed unexpectedly Anyone with write access can choose statuses from the status menu, including earlier states. Review the activity area and confirm the intended current status. #### The template picker or Response type is missing Both only appear once your organization has something to pick. The template menu in **Create Draft Inspection** shows up when at least one template exists in **Organization Settings** → **Inspection Templates**, and **Response type** shows up on an item when at least one response set exists in **Inspection Responses**. An archived response set isn't offered for new choices. If the templates exist and you still don't see the menu, confirm you have **View inspections**. ## Plan and build ### Understand the inspection lifecycle The status on an inspection tells everyone where it stands: writing the checklist, waiting on a scheduled walk, recording results in the field, or holding a finished record. Knowing what each status is for keeps you from completing work nobody has actually checked. Prepare your sections and checklist wording while the inspection is in **Draft**. Nothing is expected of anyone else yet, so this is the cheap moment to get the wording right. Set the date and the responsible inspector before you move it to **Scheduled**. Move to **Inspecting** when you're ready to enter results. That's the status where item results are recorded, so an inspection sitting in **Scheduled** with no Pass and Fail controls on screen isn't broken — it just hasn't started yet. Move to **Complete** after you review unresolved failures and the supporting evidence. Completing is where the record stops being a working document and becomes the thing you export. > **Note:** An Inspection is different from an inspection entry in a Daily Log. Use this workflow when you need a reusable, structured checklist with its own lifecycle and PDF. #### Why can't I mark items Passed or Failed yet? Item results are recorded while the overall inspection is **Inspecting**. Move the inspection into that status, confirm you have inspection write access, and the controls appear. #### What does moving an inspection backward do? It reopens the inspection, which is genuinely useful when a walk gets cancelled or a result needs correcting. Just know the status only shows where things stand now — once you've moved backward, the activity log is the only record of what happened in what order. Match the status to the work in front of you and the controls you need are the ones on screen. ### Build organization inspection templates When every job runs the same framing, pre-pour, or fire-stopping inspection, build it once as an organization inspection template. Any project can then start a draft from it instead of retyping the checklist or importing a whole project's worth of inspections. 1. Open **Organization Settings** and, under **Field**, choose **Inspection Templates**. 2. Select **Add Template**. The **Add Inspection Template** dialog asks only for a title. 3. Save. The template editor opens. 4. Under **Overview**, adjust the **Title** and add a **Description** if the inspection needs instructions or scope. 5. Select **Add Section**, name it for an area or system, then use **Add Item** to write each check. 6. Choose a **Response type** for any item that should use your own answers instead of the default **Check / X / N/A**. That picker only appears once your organization has a response set — see [Create custom inspection responses](#create-custom-inspection-responses). 7. Use each section's and item's actions menu to **Move Up**, **Move Down**, or delete it. Changes save automatically as you type. The one exception is the title: **Title is required. Changes are not saved until it has one.** The library list shows each template's title, how many sections and items it has, and when it last changed. Only roles with **Update organization-level settings** — Admin by default — see **Add Template** and the delete column, or can change a template; anyone else who opens it sees it read-only. A template is copied into the project at the moment someone starts a draft from it. Editing the template later changes the next inspection started from it, not the ones that already exist. Deleting a template works the same way, and the confirmation says so outright: inspections already created from it won't change. There's no restore for a deleted template, so rebuild it if you remove one by mistake. > **Pro Tip:** Write template items as observable pass criteria. A vague template doesn't just confuse one walk; it confuses every project that starts from it. #### How is a template different from Import from Project? A template is one inspection you choose by name, maintained centrally. **Import from Project** copies every inspection in another project at once. Use templates for your company standard and import when you're cloning a specific job's whole program. #### Does a template carry trades, dates, or attachments? No. It carries the title, description, sections, items, and each item's response type. Trades, the inspection date, the inspected-by user, and attachments get filled in on the project's draft. Build the standard once and every project's first draft starts from the same checklist. ### Create custom inspection responses Not every check reads naturally as a check mark or an X. "Is the guardrail at 42 inches?" wants Yes and No; a housekeeping walk might want Good, Needs Attention, and Unsafe. A response set gives inspectors those words while the inspection still knows which answers pass and which fail. 1. Open **Organization Settings** and, under **Field**, choose **Inspection Responses**. 2. Open **Actions** and choose **Add Response Set**. 3. Enter a **Name**, such as Yes / No. 4. Under **Responses**, enter each answer and pick what it **Counts as**: **Pass**, **Fail**, or **Not applicable**. Use **Add Response** for another one; a set holds from one to five. 5. Select **Add Response Set** to save. Then put it to work. When you add or edit an inspection item — in a project or in an organization template — choose the set under **Response type**. Leave it on **Check / X / N/A** for the default icons. The **Counts as** choice is what everything downstream reads. An answer that counts as **Fail** opens the notes sheet the same way the X does, and the pass rate, the index card counts, and the PDF all treat it as a failure. The PDF prints the answer's own label, so the record reads "No" rather than "Failed." > **Note:** Changing an item's **Response type** clears any result already recorded on it. Pick the response type while the inspection is a draft, not halfway through the walk. To retire a set, use the archive control on its row. The confirmation explains that inspection items already using it keep it; it just stops being offered for new choices. Turn on **Show Archived** under **Actions** to find it again and unarchive it. Response sets are archived, not deleted. #### Can different items on the same inspection use different responses? Yes. Response type is set per item, so a single checklist can mix Yes / No questions with the default check / X / N/A. Set up the words your inspectors actually say, and the results still roll up into pass rates you can compare. ### Create, import, or duplicate an inspection You have three ways to start an inspection, and the one you pick decides how much retyping you avoid and how much stale evidence you drag along. Every route lands you in a Draft, so there's room to check the result before anyone walks it. #### Create a draft 1. Open **Inspections**. 2. Select **Draft Inspection**. In the app, select **Draft** and then **New Draft Inspection**. 3. In the **Create Draft Inspection** dialog, choose a template from the menu above the title, or leave it on **Blank inspection**. The menu only appears once your organization has [inspection templates](#build-organization-inspection-templates). 4. Enter a title. Picking a template fills in its title if you haven't typed one yet. 5. Save the draft. A blank draft starts empty. A draft started from a template arrives with the template's description, sections, items, and response types already in place. Either way, the date, trades, and inspected-by user get filled in afterward, on the draft's overview. Starting blank makes sense for a one-off check or the first inspection of a new type. If you're about to retype something your company, this project, or another one has already been through, a template or one of the next two routes is faster. #### Import structures from another project 1. Select the chevron beside **Draft Inspection**, or the **Draft** button in the app. 2. Choose **Import from Project**. The **Import Inspection Structure** dialog opens. 3. Select the source project. 4. Select **Import**. This brings over _every_ inspection in the source project, not a selection, so point it at a project whose checklists you actually want wholesale. Each arrives as a new Draft carrying its title, description, trades, sections, and items. What doesn't come across is the previous project's evidence: item results, observations, and item attachments are all left behind, which is the point — you're taking the checklist, not the findings. > **Note:** Overview attachments _are_ copied, even though the dialog's wording suggests no attachments come along. If the source inspection had a spec excerpt or a site map attached at the inspection level, check whether it still applies before you schedule the copy. #### Duplicate one inspection Open an inspection's action menu and choose **Duplicate Inspection**. You get a Draft with the same title, description, trades, and checklist, dated today. The results don't come with it. Item pass/fail marks, observations, and item attachments all start clean, and the inspected-by user is cleared so you can assign whoever is walking it this time. Overview attachments do carry over. Before you schedule the copy, give the title a distinguishing date or area — duplicating a recurring inspection five times leaves you with five identically named records otherwise. #### Should I import or duplicate? Import when you're seeding a project and want another project's checklists wholesale. Duplicate when this project already contains the inspection you want to run again. Start from a template when your company keeps a standard version of the inspection in **Inspection Templates**. #### Do photos and results come along with a copy? No, and that's deliberate. Item results, observations, and item attachments stay with the original either way. Overview attachments do carry over, so give those a read before the copy goes out. A minute spent choosing the right starting point saves an afternoon of retyping, and keeps last month's findings out of this month's record. ### Build the inspection structure The order of your checklist is the order someone walks the building. Build the sections and items while the inspection is a draft so the inspector reads straight down the page instead of doubling back to find the next check. 1. Open a draft. 2. Complete the overview: title, description, inspection date, trades, inspected-by user, and general attachments. 3. Select **Add Section**. 4. Name the section for an area or system. 5. Add checklist items with clear pass criteria. If your organization has response sets, choose each item's **Response type**; otherwise items use **Check / X / N/A**. 6. Move sections and items up or down to match field sequence. 7. Remove unused items or sections. Write each item as something the inspector can observe. `Firestopping is complete at rated penetrations` gives a clear pass or fail; `Firestopping` leaves the field guessing what passing meant, and you find out months later that two people guessed differently. > **Pro Tip:** Name sections after the areas or systems your team already talks about — the walk then sequences itself, and the exported PDF reads like the route someone actually took. #### How specific should a checklist item be? Specific enough that two inspectors would agree on the result. If a reasonable person could mark the same condition Passed and another could mark it Failed, split the item or rewrite it. #### What about checks that won't apply on every walk? Leave them in the structure. The inspector can mark them **N/A** in the field, which keeps the checklist consistent from one occurrence to the next. Build it once in the right order and every future run of this inspection inherits that sequence. ### Find and open inspections Open **Inspections** to find a record — a draft you're still writing, tonight's walk, or last month's finished report. The index keeps drafts, active work, and completed inspections apart so you aren't scrolling through history to reach the one that's still open. ![Desktop: The Inspections index separates Draft, Scheduled, Inspecting, and Complete records and summarizes dates, trades, and results.](https://constructable.ai/help-images/inspections/find-and-open.png) Inspection cards show the title, status, date, inspector, and trade context — enough to tell two similar inspections apart without opening either one. If you have draft permission, you can see drafts too. Open a record when you need its overview, sections, item results, attachments, or activity. Once an inspection is complete, its card reports a pass rate, the total item count, the number failed, and the number marked N/A. That's enough to scan a column of finished inspections and see which need follow-up without opening any of them. The rate turns red below 90%. Read that pass rate carefully, because of what sits in the bottom half of it. We divide passed items by every item except the ones marked N/A — which means **items you left blank count against you**. A twenty-item inspection with eighteen passes and two checks nobody ever marked reports 90%, not 100%. Marking a check **Not Applicable** — or choosing a custom response that counts as not applicable — removes it from the math entirely; leaving it blank does not. #### Why don't I see any drafts? Draft visibility is its own permission. Ask your administrator to check **Create new draft inspections**; general inspection view access doesn't include the draft group. #### Does an N/A item count against the pass rate? No. An item marked **Not Applicable** comes out of both halves, so it never lowers the rate. A blank item is different — it stays in the denominator and pulls the rate down as though it had failed. Finish the list before you complete the inspection. Scan the index once and you know which inspections are waiting on you and which finished ones need follow-up. ## Inspect and report ### Schedule and start an inspection Move the record into field work once the checklist, the date, and the responsible inspector are ready. **Scheduled** says the walk is set; **Inspecting** is the status that actually lets you record results, so start it when you're on site. 1. Open the draft. 2. Confirm the inspection date and inspected-by user. 3. Select **Schedule Inspection**. 4. At the field event, select **Start Inspecting**. 5. Work through the checklist in order. Step 2 isn't busywork. The inspected-by user and the inspection date both print on the exported PDF, and a wrong name or date is the most common reason someone has to correct the overview and export a second time. The status menu isn't a one-way ratchet. Any status can be selected from it at any time, so a cancelled walk can go back to **Scheduled** and a completed record can return to **Inspecting** for a correction. That flexibility is deliberate, but it does mean nothing stops you from jumping to **Complete** before results are entered — so don't, or the inspection will report a pass rate it hasn't earned. #### Can I go back to Scheduled after starting? Yes. Any status can be selected from the status menu at any time, so a cancelled walk can return to **Scheduled** without any special handling. #### Pass, Fail, and N/A are greyed out. What's wrong? They're not greyed out — outside **Inspecting** the buttons aren't rendered, so an unstarted checklist looks inert rather than disabled. The inspection has to be in **Inspecting** _and_ you need **Create new inspections, make changes to existing inspections**. Both, not either. Start it this way and the record carries the right date and the right name before the first item is marked. ### Record item results, observations, and attachments This is the walk itself. Record a result for each item and keep the evidence beside the check it supports, so the finished record explains itself to someone who wasn't standing there with you. ![Desktop: Inspection sections keep each checklist item, result, observation, and attachment with the completed record.](https://constructable.ai/help-images/inspections/record-results.png) By default each item carries three icon buttons rather than labels. The check mark is **Passed**, the X is **Failed**, and the third glyph is **Not Applicable**. An item with a custom **Response type** shows that set's answers as labeled buttons instead — Yes and No, say — and each one counts as a pass, a fail, or not applicable behind the scenes. Whichever you tap turns solid, so you can see at a glance which lines are done. - Tap the check, or a response that counts as a pass, when the criterion is met. - Tap the X, or a response that counts as a fail, when it isn't. The notes sheet opens on its own so you can explain the failure. - Tap **N/A**, or a response that counts as not applicable, when the check doesn't apply here. - Add observations, notes, photos, or files to the item. - Leave a result blank only when the check genuinely hasn't been performed yet. A blank result and an **N/A** say different things, and the pass rate treats them differently too. **Not Applicable** comes out of the calculation entirely. A blank stays in it and counts as a miss, so a checklist you never finished reports a worse number than the walk deserved. Spend the extra tap. > **Pro Tip:** Put general inspection attachments in the overview and item-specific evidence on the item. Keeping them separate is what makes the final PDF easy to follow instead of a pile of photos with no home. #### The notes workflow opened by itself. Is that a bug? No. Marking an item **Failed** opens it on purpose, because a failure without an explanation is the one result nobody can act on later. #### I recorded the wrong result. Can I change it? Yes, while the inspection is in **Inspecting** and you have write access. If it's already complete, return it to **Inspecting**, correct the result, and complete it again. Work through the list this way and every result on the record arrives with the evidence that justifies it. ### Create a list item from an inspection item A failed check usually means someone has to go fix something. Turn the inspection item into a list item right from the walk, so the corrective work gets an assignee and a review without you retyping what you just wrote. There are two ways in: - Open the item's **⋯** menu and choose **Create List Item**. - In **Add/Edit Observations** — which opens on its own when you mark an item **Failed** — write your notes and select **Save & Create List Item**. That saves the observations first, then starts the list item. Either way, the list item form opens with the inspection item's title as the title and its observations as the description. **List** starts on the open list you last added an item to on this project, so check it before you save if this belongs on a different one. Fill in the assignee, approver, dates, and anything else the list asks for, then save. The inspection item's photos stay on the inspection, so attach the ones the assignee needs to the list item. Once it's saved, the list item's number and status appear under the inspection item, and selecting the number opens it. On the list item, the Overview shows **From Inspection** with the inspection's name and the item it came from, linked back to the inspection. You need **Create new inspections, make changes to existing inspections** to open the item's menu, **Add new punch list items, make changes to existing punch list items** to create list items, and at least one open list on the project. If **Create List Item** or **Save & Create List Item** is missing, one of those is the reason. #### Does every failed item need its own list item? No — create one only when there's corrective work to track. A failure that was fixed on the spot can live in the observations alone. Now the failure on the inspection and the fix on the list point at each other, so nobody has to ask whether it got closed out. ### Complete, reopen, or correct an inspection Complete the record after you've checked the entire list and decided how each failure will be handled. Completing turns the walk into the record you'll export and hand off, so it's worth one last read-through first. 1. Review every section for blank results. 2. Review failed items and their observations. 3. Confirm overview details and attachments. 4. Select **Complete Inspection**. Step 1 is the one that gets skipped, and it's the one that costs you. Blank results stay in the pass-rate denominator, so completing an inspection with three unmarked items publishes a number lower than the walk earned — and everyone scanning the index sees it. Mark them **Not Applicable** if they didn't apply, or go back and check them. > **Note:** A completed inspection still shows every result you recorded, as **Passed**, **Failed**, and **Not Applicable** badges — or the response's own label for items with a custom response set. The tappable buttons disappear outside **Inspecting**, which is why the list looks different once you complete it. Nothing has been lost, and it isn't a permission problem. Need to fix something? Return the inspection to **Inspecting**, make the change, and complete it again. You can use the activity area to understand later changes, which is exactly why correcting the record beats quietly working around it. #### I completed it before the results were in. What now? Send it back to **Inspecting**, finish the items, and complete it again. Everything you already recorded is still there. #### Can anyone tell the record changed after it was completed? Use the activity area on the inspection — that's where later changes are visible. Complete it deliberately and the exported record matches what actually happened on site. ### Export an inspection PDF When the inspection needs to leave Constructable — for an owner, a subcontractor, or the closeout binder — export it as a PDF. You get a portable record of the overview, checklist, evidence, and results in one file you can share or retain. This works from a phone as well as a desk. 1. Open the inspection. 2. Open the **⋯** menu. 3. Choose **Export to PDF**. 4. Wait for generation and download the file. The PDF includes status, inspected-by user, date, trades, description, overview attachments, sections, item results, observations, and item photos. Items with a custom response set print the chosen response's label, so the record says "No" where the inspector tapped No. That's a substantial slice of the project in a single file. > **Note:** Review the PDF for restricted or sensitive content before you distribute it outside Constructable. #### **Export to PDF** isn't in the menu. Why not? It lives in the inspection's **⋯** menu, so check there first. If it's genuinely absent, confirm you have **View inspections**; if the inspection or its attachments are still syncing, wait and retry. #### The PDF shows the wrong inspector or date. Both come from the inspection overview, along with trades and the description. Correct the overview and export again. Export it and the inspection travels as one file that stands on its own. ### Delete inspection content Deletion comes in three sizes here — one item, one section, or the whole inspection — and the safest habit is to remove the smallest thing that fixes the problem. Save deleting the full record for inspections that should leave active use entirely. - Delete an item to remove one checklist check. - Delete a section to remove that section and every item in it. - Choose **Delete Inspection** from the **⋯** menu to remove the full record. All three confirmations say the same thing, and it's true: the action can't be undone. There's no archive and no recycle bin. Before you delete anything, read the observations and attachments hanging off it — they're often the only place a field condition was ever written down. Export the PDF first if there's any chance you'll want the record back. If the problem is a mistake rather than something that has to disappear, rename the inspection or edit the structure instead. > **Pro Tip:** When the existing record must remain as a reference, duplicate it before making substantial changes and work on the copy. #### I only need to remove one check. Do I have to delete the section? No. Delete the individual item. Deleting a section removes that section and its active items, which is more than you asked for. #### Should I delete an inspection or rename it? Rename or edit when the record is basically right and just mislabeled. Delete only when the entire inspection should leave active use. Remove the smallest thing that fixes the problem and the project keeps the history it will need later. --- # How to use Work Plans in Constructable > Use Work Plans when multi-step field work needs a shared, signed checklist — a pre-pour QA/QC, a mockup review, a critical lift. Build the sections and items, name who signs each one, hold later work until an inspector signs, and download a signed PDF record when it's done. Source: https://constructable.ai/help/work-plans Use Work Plans when multi-step field work needs a shared, signed checklist — a pre-pour QA/QC, a mockup review, a critical lift. Build the sections and items, name who signs each one, hold later work until an inspector signs, and download a signed PDF record when it's done. ## Start here - **I build the plan:** [Create a work plan](#create-a-work-plan) → [Build the outline, sign-offs, and hold points](#build-the-outline-sign-offs-and-hold-points) → [Publish a work plan](#publish-a-work-plan). - **I do or inspect the work:** [Work an item and add proof of work](#work-an-item-and-add-proof-of-work) → [Sign off an item](#sign-off-an-item). - **I authorize or accept the plan:** [Authorize or accept a plan](#authorize-or-accept-a-plan). - **I close out and keep the record:** [Close a plan](#close-a-plan) → [Download the signed PDF](#download-the-signed-pdf). - **I set up plan types for the project:** [Set up work plan types and custom fields](#set-up-work-plan-types-and-custom-fields). - **Something is missing or blocked:** Start with [Troubleshooting Work Plans](#troubleshooting-work-plans). ### Common task recipes - **Set up a pre-pour checklist:** Open **Work Plans**, select **New plan**, enter a **Title**, pick "Quality: Pre-pour" as the **Type**, then **Create draft**. Use **Add section** and **Add item** to build the outline, add people under **Sign-offs** on every item, and select **Publish**. - **Stop the pour until the special inspector signs:** On the inspection item, add the inspector under **Sign-offs**, set **Holds** to **The rest of the plan**, and pick the inspector under **Released when this person signs**. - **Sign your item from the field:** Open the plan from **My Ball-in-Courts** on the project Dashboard, open the item, add your notes under **Proof of work** and photos under **Attachments**, then select **Sign**, type your name, tick the confirmation, and **Sign**. - **Hand the owner a signed record:** After everyone accepts, select **Close plan**, then open the actions menu and select **Download PDF**. ## Understand access and workflow ### Understand how Work Plans work **Work Plans** sits under **Field Tools**, just below **Inspections**. Each plan is a numbered outline: sections group the items people perform, and every item names the people who sign it off against its **Acceptance criteria**. **Draft → Awaiting authorization → In progress → Awaiting acceptance → Closed** - **Draft** is where you build the plan. Sections, items, sign-offs, hold points, and the people under **Authorization** and **Acceptance** can only change while the plan is a draft. - **Awaiting authorization** happens only when someone is listed under **Authorization**. Items stay locked until every authorizer signs. - **In progress** is when the work happens. People change item status, write proof of work, add attachments, and sign their sign-offs. An item closes on its own when its last sign-off is in. - **Awaiting acceptance** starts automatically when every item is closed. People under **Acceptance** sign to accept the completed plan. - **Closed** is the finished record. Someone with write access selects **Close plan** once every acceptor has signed. A plan with nobody under **Authorization** goes straight from **Draft** to **In progress** when you publish. A plan with nobody under **Acceptance** still stops at **Awaiting acceptance** so someone can review it and select **Close plan**. Ball-in-court — whose turn it is to act — follows the stage. While a plan is awaiting authorization, it's in each unsigned authorizer's court. While it's in progress, it's in the court of everyone with an unsigned sign-off on an item that isn't locked by a hold point. While it's awaiting acceptance, it's in each unsigned acceptor's court. Those plans show up in **My Ball-in-Courts** on the project Dashboard and in Global Dashboard's ball-in-court list, typed as **Work Plan**. Every signature is typed: you enter your full name and tick a confirmation statement, and we save the name, the time, and the statement. Signatures can't be edited afterward. ### Permissions, visibility, and platform availability Work Plans needs the Project Management or Financial package. On a Field-package organization the tool doesn't appear under **Field Tools**, and work plans don't appear in ball-in-court lists. Inside the tool, access splits into these permissions: - **View work plans** opens the tool. Its "Level of work plan access" setting is either "All work plans" or only published plans where you or someone at your company authorizes, signs an item, or accepts. - **Work on items: change status, write proof of work, add and remove attachments** covers the work itself. Its "Which items" setting is either "All items" or only items that you or someone at your company signs. - **Create work plans, edit drafts, publish and close plans** covers **New plan**, everything in a draft, **Publish**, and **Close plan**. - **Edit published work plans, which moves them back to Draft and deletes their signatures** shows **Edit plan** on a plan that's already been published. - **Delete work plans** shows **Delete plan**. - **Record signatures on someone else's behalf** turns other people's sign-offs, authorizations, and acceptances into **Record signature** buttons for you. - **Manage work plan types and templates** shows **Work Plan Settings**. Signing your own sign-off, authorization, or acceptance doesn't need any of the permissions beyond **View work plans** — being the named person is what counts. By default, administrators, managers, and employees see all work plans and can create, edit drafts, publish, and close. Administrators and managers can work on every item; employees can work on items that someone at their company signs. Editing published plans, deleting, recording signatures for someone else, and managing types default to administrators and managers. Subcontractor, consultant, and owner roles see only published plans their company is named on, and can work on only the items their company signs. Work Plans runs on desktop web, mobile web, and the native app. - On desktop, the plan opens with the outline on the left and the selected item or overview on the right. - In the app, the outline and each item open as separate screens; tap **Overview** at the top of the outline for the plan details and the **Authorization** and **Acceptance** lists. **New plan** is the plus (+) button in the header, and **Edit plan**, **Download PDF**, and **Delete plan** are in the plan's header actions menu. - **Work Plan Settings** is only in the web Work Plans header. When something happens on a plan you're named on, we notify you through the **Work Plans** channel. You hear about it when a plan you authorize is published, when your items open for work, when a hold point that was locking your item is released, and when a plan you accept is ready for acceptance or closed. The plan manager hears about it when the plan goes to acceptance and when everyone has accepted. Choose how much of that reaches you under **My Account** → **Notification Preferences** → **Channels**; see [Choose notification activity](https://constructable.ai/help/account-and-security#choose-notification-activity). ### Troubleshooting Work Plans Most surprises here come from the stage the plan is in, a hold point, or a missing permission. Find your symptom and work through the checks in order. #### Work Plans is missing from Field Tools Check the package first: Work Plans needs the Project Management or Financial package, so a Field-package organization never shows it. Then ask an administrator to confirm your role has **View work plans** under **Work Plans** in Project Settings → Roles and Permissions. #### I can't see a plan a teammate is talking about If your role sees only plans your company is involved in, you won't see drafts at all, and you'll see a published plan only when you or someone at your company authorizes it, signs an item, or accepts it. Also check the filter at the top of the list — **Open** hides closed plans; use **All**. #### New plan is missing You need **Create work plans, edit drafts, publish and close plans**. View access opens the list but doesn't create plans. #### Publish didn't publish the plan When something is still missing, **Publish** opens **Before you publish** and shows a message that the plan isn't ready instead of publishing. Work through the unchecked rows: every section needs at least one item, every item needs a title, and every item needs at least one person under **Sign-offs**. The rows link straight to the items that need attention. #### I can't sign an item Check these in order: 1. The plan has to be **In progress**. While it's **Awaiting authorization**, your row reads **Opens after authorization**. 2. The item might be locked by a hold point. Your row reads **Locked by hold point**, and the item explains who has to sign first. 3. The sign-off has to be yours. Someone else's row shows whose court it's in unless you have **Record signatures on someone else's behalf**. 4. If every item is already closed, the plan has moved to **Awaiting acceptance** and sign-offs can't be added. Changing an item back to an open status returns the plan to **In progress**. #### Hold point settings are missing on an item **Hold point** appears under **Sign-offs** only after the item has at least one person to sign it, and only while the plan is a draft. Add the inspector or signer first. #### Proof of work or Attachments are read-only You can edit them only while the plan is **In progress**, the item isn't locked by a hold point, and your permission to work on items covers that item — some roles can work only on items someone at their company signs. In a draft, those panels don't appear at all. #### Edit plan deleted our signatures That's what editing a published plan does. Moving it back to **Draft** permanently deletes every authorization, sign-off, and acceptance, reopens the items those sign-offs closed, and everyone has to sign again after you republish. The confirmation tells you how many signatures will be deleted before you continue. #### Work Plan Settings is missing It's on the web Work Plans header, not in the app, and needs **Manage work plan types and templates**. ## Build the plan ### Create a work plan Start a plan as a draft, then build it out before anyone is asked to sign. Only a title is required to get started. 1. Open **Work Plans** under **Field Tools**. 2. Select **New plan** in the header. In the app, tap the plus (+) button. 3. In **New Work Plan**, enter a **Title** — something like "Level 4 Deck Pour: Pre-pour QA/QC". 4. Optionally pick a **Type** and a **Location**. The type decides which custom fields the plan carries. 5. Select **Create draft**. The plan opens as a **Draft** with the next available number. You can change the number later in **Overview**; if another plan already uses it, you'll see **Another plan shares this number**. New projects start with these types: General, Quality: Pre-pour, Quality: Mockup, Quality: Inspection, Quality: Pre-install, Safety: Critical lift, and Commissioning. Your project may have a different list if someone has changed it in **Work Plan Settings** or the project was created from a template. You now have a draft plan ready for its outline. ### Build the outline, sign-offs, and hold points The outline is the plan: what gets done, in what order, what "done" means, and who signs for it. Everything below can only change while the plan is a **Draft**. Start with **Overview** at the top of the outline. That's where you set the **Number**, **Title**, **Type**, **Plan manager**, **Location**, and **Description**. If the type has custom fields, they appear in **Overview** too, right after **Location**, and they save as you go, the same as the fields around them. A required field you leave empty shows an error and isn't saved until you fill it in. Change the **Type** and the fields switch to that type's set. Once the plan is published, the same fields show read-only in **Overview**. Then build the outline itself: 1. In **Outline**, select **Add section** and name it — "Pre-pour preparation," for example. Naming a new, empty section adds its first item for you. 2. Select **Add item** under a section for each step. Items are numbered by section: 1.1, 1.2, 2.1. 3. Open an item to give it a title, write its **Acceptance criteria** — what has to be true before it's signed off — and set a **Due date**. 4. Under **Sign-offs**, use **Add person** to name everyone who does or inspects the work. An item closes when all of them have signed. Use the three dots next to a section to **Rename**, **Add item**, **Move up**, **Move down**, or **Delete section**. Deleting a section that still has items asks **Delete this section?** first. On an item, **Item actions** offers **Move up**, **Move down**, **Duplicate**, and **Delete item**. **Duplicate** copies the title, criteria, due date, sign-offs, and hold point into a new item right below it. **Delete item** removes the item without asking. Add a hold point where later work has to wait. A hold point stops later work from being signed off until one person signs this item — a special inspection before a pour, a mockup approval before production. 1. Open the item and add at least one person under **Sign-offs**. **Hold point** appears below them. 2. Under **Holds**, choose **The rest of this section** or **The rest of the plan**. **Nothing** turns the hold point off. 3. Under **Released when this person signs**, pick the sign-off that releases it. It starts on the first person you added. In the outline, a hold point marker sits under the item so everyone can see where the line is. Last, name who authorizes and accepts. On **Overview**, add people under **Authorization** (they sign before work starts) and **Acceptance** (they sign at the end). Both lists are optional. Leaving **Authorization** empty means items open for work as soon as you publish. You now have a complete outline with signers, criteria, and any hold points in place. #### Who should be under Authorization versus Acceptance? Put the people who approve the plan as written — the project manager, the engineer of record — under **Authorization**. Put the people who accept the finished work — the owner's rep, the quality manager — under **Acceptance**. #### Can I add someone outside our company as a signer? Yes. Sign-offs, authorizers, and acceptors can be anyone on the project team or in your organization, so you can name subcontractor, consultant, or owner contacts on the project. They'll see the plan once it's published. The **Plan manager** comes from your own organization. ### Publish a work plan Publishing locks the outline and opens the plan for signatures. **Before you publish** on the overview tracks what's left. **Before you publish** checks three things: - **Add the items to perform** — at least one item, and no section left empty - **Name every item** — every item has a title - **Assign who signs each item** — every item has at least one sign-off When it reads **Ready to publish**, select the button next to the stage badge. It reads **Publish** when nobody is under **Authorization**, and **Publish for authorization** when someone is. - With no authorizers, the plan moves to **In progress** and the people who can sign first are notified. - With authorizers, the plan moves to **Awaiting authorization** and they're notified. If something is still missing, the button takes you to **Before you publish** with a message instead of publishing. You now have a live plan your team can work and sign. ## Do the work ### Find work plans and what's in your court The Work Plans list shows every plan you can see on the project, with the ones waiting on you a tap away. Open **Work Plans** and pick a filter: **Open**, **My ball in court**, **Closed**, or **All**. Each shows a count. **Open** is the default and hides closed plans. Search with **Search work plans**. The list shows **#**, **Title**, **Status**, **Ball in court**, **Progress**, **Type**, **Location**, **Manager**, and **Last updated**. **Progress** counts closed items against the total. Inside a plan, a button next to the stage badge jumps to the next item waiting on your signature, and **Ball in your court** marks **Overview** when you owe an authorization or acceptance. Plans in your court also appear in **My Ball-in-Courts** on the project Dashboard and in Global Dashboard's ball-in-court list. Their due date is the earliest due date among the items waiting on you. ### Work an item and add proof of work While the plan is **In progress**, record what you did on each item so the signers — and the final PDF — have the evidence. 1. Open the plan and select the item in the outline. 2. Under **Status**, select the status badge and choose the new status: **Open**, **In progress**, **Delayed**, or **Closed**. 3. Under **Proof of work**, describe how the work meets the criteria — what was checked, anything that changed. It saves when you click away. 4. Under **Attachments**, upload files or add photos already in the project. Use **Download** to get every attachment on the item as a ZIP. An item closes on its own when its last sign-off is in, so you rarely need to set **Closed** yourself. If you do close an item while sign-offs are still missing, the outline shows a warning icon beside it and the item shows a "Closed with gaps." notice until those people sign. Those people can still sign while the plan is **In progress**. > **Note:** When the last open item closes, the plan moves to **Awaiting acceptance** and missing sign-offs can't be added anymore. Close an item with gaps only when you mean to accept it that way. If a hold point earlier in the plan hasn't been released, the item shows a lock icon in the outline and a notice naming who has to sign first. You can't change its status, proof of work, or attachments until that person signs. ### Sign off an item Your sign-off is your name on the item: you're confirming it meets its acceptance criteria. You need only view access and to be the person named on the sign-off. 1. Open the item. The next sign-off button in the header, labeled with an item number, jumps to the next one waiting on you. 2. Under **Sign-offs**, select **Sign** on your row. 3. Review the **Acceptance criteria** shown in the dialog. 4. Under **Signature**, type your full name. 5. Tick "I confirm this item meets its acceptance criteria." 6. Select **Sign**. When yours is the last sign-off, the item closes. When you're the person who releases a hold point, your signature unlocks the items behind it and their signers are notified. To sign for someone else, you need **Record signatures on someone else's behalf**. With it, other people's rows show **Record signature**. Type their full name; we save the signature as theirs and record you as the person who captured it. Use this for the inspector who signed a paper form on site. You now have a signed, timestamped sign-off on the item. ### Authorize or accept a plan Authorizers sign before work starts; acceptors sign after every item is closed. If you're named, the button appears in the plan header when it's your turn. 1. Open the plan. Select **Authorize plan** or **Accept plan** next to the stage badge. You can also select **Authorize** or **Accept** on your row in **Overview**. 2. Type your full name under **Signature**. 3. Tick the statement — "I authorize this plan to be performed as written." or "I accept the completed plan." 4. Select **Authorize** or **Accept**. When the last authorizer signs, the plan moves to **In progress** and the first signers are notified. When the last acceptor signs, the plan manager is notified that it's ready to close. Rows read **Opens after the plan is published** or **Opens when every item is closed** until it's that list's turn. #### What happens if someone reopens an item after I accepted? Changing any item's status while the plan is awaiting acceptance sends it back to **In progress** and deletes the acceptance signatures. If anyone has already accepted, the person changing the status sees **Reopen this item?** first. You'll need to accept again once every item is closed. ### Close a plan Close the plan once the work is accepted. It's the last step and makes the record final. **Close plan** appears next to the stage badge when the plan is **Awaiting acceptance** and everyone under **Acceptance** has signed — or right away if nobody is under **Acceptance**. Select it and the plan moves to **Closed**. The acceptors are notified. Closed plans leave the **Open** filter. Find them under **Closed** or **All**. You now have a closed, fully signed plan ready to export. ## Change, export, or remove ### Edit a published plan The outline is locked once a plan is published. To change it, you move the whole plan back to **Draft** — and every signature on it is deleted. 1. Open the plan and select the actions menu next to the stage badge. In the app, it's in the header. 2. Select **Edit plan**. 3. Read **Edit this plan?** — it tells you how many signatures will be deleted. 4. Select **Move to Draft and edit**. The plan is a draft again, with the outline open for changes. Items that were closed by sign-offs reopen. Publish it again when it's ready, and everyone signs again. This works at any stage after **Draft**, including **Closed**. On a draft, **Edit plan** just opens **Overview** and needs only **Create work plans, edit drafts, publish and close plans**. ### Download the signed PDF The PDF is the record you file or send to the owner: every item, every signature, and the history behind them. 1. Open the plan. 2. Select the actions menu next to the stage badge. In the app, it's in the header. 3. Select **Download PDF**. The PDF includes the overview and type details, the **Authorization** and **Acceptance** signatures, every section and item with its status, due date, criteria, proof of work, file names, sign-offs with signing times, and hold points, followed by an activity log. Photos attached to items are added on pages at the end once the plan is published. You can download it at any stage. Unsigned rows read "Not signed," so the PDF also works as a progress snapshot. ### Delete a work plan Delete a plan that shouldn't stay on the project — a duplicate, or one started on the wrong job. 1. Open the plan and select the actions menu next to the stage badge. In the app, it's in the header. 2. Select **Delete plan**. 3. Confirm **Delete this plan?**. The plan leaves the Work Plans list. There's no restore on screen. ## Configure plan types ### Set up work plan types and custom fields Types let each kind of plan capture its own details — a pour's mix design and placement area, a lift's crane and load. Set them up on desktop web. 1. Open **Work Plans**. 2. Select **Work Plan Settings** in the header. The menu lists your **Work Plan Types**. 3. Pick a type to open its settings, or select **Add work plan type**, enter a **Name**, and save. 4. Use **Add Field** or **Add Section** to build the fields plans of that type carry. 5. Use **Rename** to change the type's name. **Archive** removes a type from the **Type** picker for new plans. Plans that already use it keep showing it. Archived types stay in the **Work Plan Settings** menu, where **Unarchive** brings them back. Filling in custom field values on a plan uses **Create work plans, edit drafts, publish and close plans** and happens in the draft's **Overview**. Building the fields uses **Manage work plan types and templates**. A project created from a template copies the template's active work plan types and their custom fields. It doesn't copy work plans. Set your types once and every plan of that kind asks for the same details. --- # How to use Incidents in Constructable > Use this guide to report what happened on site, add injury, near-miss, property-damage, environmental, and security records, close the incident, export it as a PDF, and configure the forms your project captures. It covers desktop web, mobile web, and the native app. Source: https://constructable.ai/help/incidents Use this guide to report what happened on site, add injury, near-miss, property-damage, environmental, and security records, close the incident, export it as a PDF, and configure the forms your project captures. It covers desktop web, mobile web, and the native app. ## Start here - **I report what happened:** [Report an incident](#report-an-incident) → [Review records and attachments](#review-an-incident-and-add-records). - **I close the record:** [Close or reopen an incident](#close-or-reopen-an-incident). - **I send the record to someone outside Constructable:** [Download an incident PDF](#download-an-incident-pdf). - **I set up the forms:** [Configure incident settings](#configure-incident-settings-and-forms). - **Something is missing or blocked:** Start with [Troubleshooting Incidents](#troubleshooting-incidents). ### Common task recipes - **Log a near miss before the end of the shift:** Open **Incidents**, select **New Incident**, fill **Title** and **Occurred**, and select **Create Incident**. On the incident, select **Add Record** and choose **Near Miss**. - **Add a second record later:** Open the incident, select **Add Record**, and choose another type such as **Property Damage**. - **Send the report to the owner or your insurer:** Open the incident, open its actions menu, and choose **Download PDF**. - **Shape the form for this job:** Open **Incident Settings**, pick **Incident details** or a record type under **Forms**, then **Add Field** or **Add Section**. ## Understand access and workflow ### Understand how Incidents work **Incidents** under **Field Tools** is the project's safety log: one incident for the event, then one or more records for what actually happened. It is not the same tool as a list whose type is **Incidents** under **Lists** — that list still uses punch-item assignment and review. See [Understand Lists and list types](https://constructable.ai/help/quality-lists#understand-lists-and-list-types). **Report → records for what happened → attachments and custom fields → Open → Closed** - **Open** is the working record. Anyone with write access can keep editing it. - **Closed** is the finished safety record. Closing needs **Close and reopen incidents**. - **Draft** is only the in-progress create form. Drafts do not appear on the Incidents index. Every project comes with an incident type named **General** and five record types: **Injury/Illness**, **Near Miss**, **Property Damage**, **Environmental**, and **Security**. You report the event first, then add a record for each outcome once the incident exists. The forms come pre-built, too. The incident itself asks for reporting details, an investigation (hazard, contributing conditions and behaviors, root cause), witness statements, and corrective actions — the last two repeat, so you can add one entry per witness or per action. Each record type brings its own details: an injury record asks about the person affected, the injury, and treatment and classification; near-miss, property-damage, and environmental records each have a details section of their own. A security record's details section covers the company affected, the type — theft, vandalism, trespass or unauthorized access, break-in, arson, threat or assault, or other — what was stolen or damaged, whether a police report was filed and its number, and the estimated cost impact. Change any of it in [Incident Settings](#configure-incident-settings-and-forms). ### Permissions, visibility, and platform availability Incidents splits access four ways, and holding some without the others is normal. - **View incidents** opens **Incidents** and the records themselves, and covers **Download PDF**. - **Report incidents, make changes to existing incidents** covers **New Incident**, editing overview fields, adding records, attachments, custom field values, and **Delete**. - **Close and reopen incidents** is what turns the status control into Mark as Closed or Mark as Open. Without it, status is a disabled label. - **Manage incident settings, including incident types** opens **Incident Settings** and the form editor. List custom fields still use **Configure custom field definitions**; incident forms do not. Administrators, managers, and employees receive view and write by default. Close/reopen and settings default to administrators and managers. Subcontractor, consultant, and owner roles do not receive Incidents by default. Incidents is part of the Project Management package, which the Financial package also includes. An organization on the Field package alone doesn't get **Incidents** under **Field Tools**, whatever its roles allow. Once you can view incidents, the index, an open incident, reporting, and PDF export work on desktop web, mobile web, and the app. - On web, **Incident Settings** and **New Incident** sit in the Incidents header. - In the app, **New Incident** is the **+** button in the header. Form setup stays on web under **Incident Settings**. ### Troubleshooting Incidents Most surprises here are a permission, a filter, or mixing this tool up with a Lists **Incidents** list. Find your symptom and work through the checks in order. #### Incidents is missing from Field Tools Check the package first: Incidents needs the Project Management package (or Financial, which includes it). On the Field package alone, the tool doesn't appear for anyone. If your organization has the package, your role needs **View incidents**. Ask an administrator to check **Incidents** in Project Settings → Roles and Permissions. A Lists shortcut named **Incidents** is a punch list, not this tool. #### New Incident is missing Confirm **Report incidents, make changes to existing incidents**. View access opens the log but does not create records. #### Incident Settings is missing That control is on the web Incidents header and needs **Manage incident settings, including incident types**. It is not in the app header. #### An incident I just started isn't in the list The create form saves a **Draft** titled **Draft** until you select **Create Incident**. Drafts stay off the index. Open **New Incident** again and the form resumes your latest draft. #### I can't close an incident Closing needs **Close and reopen incidents**. Write access lets you edit the record; it does not change **Open** / **Closed**. #### Custom fields I expected aren't on the form The **New Incident** form only shows fields from **Incident details**. Fields that belong to a record type appear on the record after you select **Add Record**, not while you're reporting. If a field is missing from either place, open **Incident Settings** and check that form. Fields live there, not on **Lists** → **Custom Fields**. A record type turned **Off** isn't offered under **Add Record**. ## Report and review ### Report an incident Get the event on the log while the facts are still in front of you. The form asks what happened and when; the injury, near-miss, damage, environmental, or security details go on records you add once the incident exists. 1. Open **Incidents** under **Field Tools**. 2. Select **New Incident**. In the app, use the **+** button in the header. 3. Enter a **Title**. That's required. 4. Set **Occurred**. It defaults to now. 5. Optionally pick a **Location**, write a **Description**, and add **Attachments**. You can pull in project photos you've already uploaded. 6. Fill in the incident form's custom fields — reporting, investigation, witness statements, corrective actions, or whatever your project has set up. 7. Select **Create Incident**. **Title** and **Occurred** are the only required built-in fields. Required custom fields also block save — but a required field inside a repeating section, like a witness's name, only matters once you add an entry to that section. While attachments are still uploading, the button reads **Uploading attachments...**. If you already have a draft of your own, **New Incident** reopens it instead of starting a second one. **Cancel** on a draft deletes it and returns you to the index — that draft never becomes an Open incident. You now have an **Open** incident on the log, numbered and ready for its records. #### Where do I record the injury or near-miss details? On a record. Open the incident, select **Add Record**, and choose the type — **Injury/Illness**, **Near Miss**, **Property Damage**, **Environmental**, or **Security**. The record opens with that type's fields. Add as many as the event needs; a fall that hurt someone and damaged a lift gets one of each, and a weekend break-in that wrecked the site office gets **Security** and **Property Damage**. #### Why does New Incident reopen something called Draft? Leaving the form mid-way keeps a draft so you don't lose the attachments you already started. Finish it with **Create Incident**, or **Cancel** to throw the draft away. ### Review an incident and add records Open an incident when you need the overview, the records underneath it, or the activity of who changed what. The index is the place to find it; the incident page is where the story lives. On **Incidents**, filter **Open**, **Closed**, or **All**, and search with **Search by number, title, or location**. The grid shows **Number**, **Title**, **Occurred**, **Location**, **Status**, **Reported By**, and **Records**. Drafts never appear here. Select a row to open the incident. You'll see: - **Overview** — title, occurred time, location, reported-by, and any standalone fields from **Incident details** - **Description** - The sections from **Incident details**, such as reporting, investigation, witness statements, and corrective actions - **Records**, with **Add Record** - **Attachments** - **Activity Log**, including custom field edits To add a record, select **Add Record** in the **Records** block and choose a type that's turned on. The new record opens right away so you can fill in its fields. Empty copy reads **No records yet**. If every record type is turned off, **Add Record** doesn't appear. **Delete** on a record asks **Delete record?** — that record is gone from the incident. Deleting a record needs write access. You now have the event, the records, and the files in one place the safety team can close. #### What's the difference between the incident and a record? The incident is the event — when and where, plus the overall description. A record is one kind of outcome: someone was hurt, a near miss, damaged property, an environmental release, or a security event such as theft or trespass. One incident can hold several. ### Close or reopen an incident Close the incident when the record is complete enough to leave the open list. Reopen it when a fact still needs to change. On web, the status control next to the title shows **Open** or **Closed**. With **Close and reopen incidents**, open it and choose Mark as Closed or Mark as Open. Without that permission, the same control is a disabled button showing the current status. In the app, those same Mark as actions sit in the incident's actions menu. Closing does not lock the fields. Write access can still edit an Open or Closed incident; status is a separate permission from editing. The index **Open** filter hides Closed incidents, which is usually what you want once the record is finished. Use **All** when you need history. ### Download an incident PDF When the owner, your insurer, or the corporate safety team needs the report and doesn't log in to Constructable, export the incident as a PDF. Each incident prints its overview, description, custom fields and sections, and every record with its own fields, followed by its attachments if you include them. For one incident: 1. Open the incident. 2. Open the actions menu — **Actions** next to the status control on web, or the **⋯** button in the app header. 3. Choose **Download PDF**. For several at once, use the Incidents index: 1. Filter **Open**, **Closed**, or **All**, and search or filter until the grid shows exactly the incidents you want. 2. Open **Download** above the grid and choose **Download as PDF**. The PDF covers every incident the grid is showing, so the filters are your selection. Incidents print in number order, one after another, in a single file. If any of the incidents have attachments — files on the incident or in an attachment custom field on the incident or one of its records — the **Export Incident PDF** dialog opens first with an **Attachments** option, already turned on, showing how many there are. Leave it on to append each incident's photos and PDF attachments right after that incident; turn it off for a lighter file with just the report pages. When there are no attachments, the download starts straight away. Either way, you'll see **Exporting PDF...** while the file builds. > **Note:** A PDF has no permissions once it leaves Constructable. Read it through for injured workers' details and other sensitive information before you send it. #### An attachment is missing from the PDF An attachment that can't be read is skipped so the rest of the export still finishes. Open the incident and check that the file opens there, then export again. You now have a single file that tells the whole story of the incident to someone who's never seen the project. ### Delete an incident Delete an incident that should not stay on the log — a duplicate, or a draft you meant to abandon from the incident page rather than **Cancel**. 1. Open the incident. 2. Open the actions menu — **Actions** on web, or **⋯** in the app header — and choose **Delete**. 3. Confirm **Delete incident?**. The incident leaves the Incidents list. There's no restore on this screen. Deleting a draft from the create form with **Cancel** does the same thing before the incident is ever Open, and that delete does not write an activity event. ## Configure forms ### Configure incident settings and forms The built-in title, time, location, and description cover the event, and the default forms cover the usual safety questions. When your process needs something they don't — a permit number, a client's own classification, a repeating list of equipment involved — put those fields on the incident form or on a record type. 1. Open **Incidents**. 2. Select **Incident Settings** in the header. 3. Under **Forms**, choose **Incident details** or a record type in **Records**. 4. Select **Add Field** or **Add Section**. Empty copy reads **Capture the details your team needs**, with **Fields** and **Sections** cards explaining the difference. 5. Enter a **Name** and choose a **Type**: **Text**, **Rich Text**, **Number**, **Date**, **Date and Time**, **Checkbox**, **Single Select**, **Multi Select**, **User**, **Company**, **Cost Code**, **Location**, or **Attachment**. **Cost Code** picks one of the cost codes enabled on the project, and **Location** picks one of the project's locations. 6. Turn on **Required** when the incident or record shouldn't save without a value. 7. For **Single Select** or **Multi Select**, add **Options** — each option on a field needs its own name, ignoring capitalization, or you'll see **An option with this name already exists.** For **User** or **Company**, set **Choose from** to the project team or the directory, and **Allow multiple** when more than one value is allowed. 8. Turn on **Has many entries** on a section when people should fill it out more than once — one entry per injured person, one per material involved. Each record type in **Records** can be turned on or off. **Off** hides it from **Add Record**. **Reorder record type** changes its order in that menu. New projects start with these forms already filled in — the reporting, investigation, witness-statement, and corrective-action sections on **Incident details**, and a details layout on each record type. Edit, remove, or add to them the same way you would a field you created. Filling in the values still uses **Report incidents, make changes to existing incidents**. Building the form uses **Manage incident settings, including incident types**. A project created from a template copies the incident type, which record types are on, and the form layouts. It does not copy incident records. Set the forms once and every report on the project asks for the same details. #### Should this go on Incident details or on a record type? Put facts about the event — weather, shift, who reported it beyond **Reported By** — on **Incident details**. Put facts that belong to one outcome — body part on **Injury/Illness**, substance on **Environmental** — on that record type so they only appear on records of that type. Keep anything you need at the moment of reporting on **Incident details**, since the **New Incident** form shows only those fields. #### Why isn't this the same Custom Fields page as Lists? Lists configure fields per list with **Configure custom field definitions**. Incidents configure fields per incident type and record type here. The editor looks the same; the permission and the page are different. --- # How to use Budget in Constructable > Use this guide to set up a project Budget, record approved changes without rewriting the baseline, read current revenue and cost exposure, update forecasts, and export or investigate Budget activity. Source: https://constructable.ai/help/budget Use this guide to set up a project Budget, record approved changes without rewriting the baseline, read current revenue and cost exposure, update forecasts, and export or investigate Budget activity. ## Start here - **Set up the Budget:** [Set up a project Budget](#set-up-a-project-budget). - **Change an approved Budget:** [Add and manage Budget Modifications](#add-and-manage-budget-modifications). - **Protect approved values:** [Lock or unlock Budget values](#lock-or-unlock-budget-values). - **Review project position, or manage cost without the revenue side:** [Read the Budget](#read-the-budget). - **Include or exclude pending changes:** [Control pending Change Orders in totals](#control-pending-change-orders-in-totals). - **Update a forecast:** [Override Forecast at Completion](#override-forecast-at-completion). - **Trace or export a value:** [Use the activity log and exports](#use-the-activity-log-and-exports). - **Something is missing or blocked:** [Troubleshoot Budget](#troubleshoot-budget). ## Set up and edit ### Set up a project Budget Open **Budget**. If the project has no Budget, select **Setup Budget** and choose: - **Import Budget File** to build items from an existing bid sheet, spreadsheet, or PDF. - **Copy from Prime SoV** to use owner SOV lines as a starting point. - **Add Budget Items** to enter the Budget manually. ![A populated Budget lists Budget Codes, revenue, costs, forecasts, and the Setup Budget action.](https://constructable.ai/help-images/financials/budget-setup.png) The project's Budget Type records that choice as **Imported from CSV**, **Copied from Prime SOV**, or **Manual**. **Not Selected** leaves Budget amounts at zero. **Autofill from Prime SOV (Legacy)** supports existing projects; don't switch away from it without confirming how that project's lines are maintained. Before adding or importing lines, confirm the organization and project coding: - A **Budget Code** combines a cost code and cost type. - Subprojects separate phases or locations when the project uses them. - Revenue codes organize Prime Contract revenue and can map to the cost codes they fund. - When **Require Cost Type on Line Items** is enabled in **Organization Settings** → **Financial Settings**, every imported or manually entered line needs a cost type to roll up correctly. > **Note:** Copying the Prime SOV is a starting point, not a completed cost Budget. Review every code and amount because owner revenue and project cost are different values. ### Add and manage Budget Modifications Keep the **Original Budget** as the baseline. Record later approved changes as Budget Modifications: 1. Open **Budget**. 2. Select **Add Budget Modification**. 3. Enter a **Title** and choose whether the modification starts **Locked**. The switch starts on, so turn it off if the values still need review. 4. Enter the first line's **Cost Code**, **Description**, and **Amount**, plus cost type and subproject when you use them. **Cost Code** lists project-enabled cost codes. Codes already on the budget appear first under **On this budget**. 5. Select **Add another line item** for the next change. The line you just finished collapses into a one-row summary with its cost code, description, and amount. 6. Keep adding with **Add line item**. Select the pencil on a collapsed line to reopen it, the trash can to remove it, or the up chevron on the open line to collapse it. From the second line on, the footer shows the running total and how many lines you've entered. 7. Select **Save and Close**. The open line is saved along with the rest. Opening another line, collapsing, or saving checks the open line first, so a line with a missing cost code, description, or amount stays open until you fix it. A blank line you added and never filled in is simply dropped. Use a negative line in a new modification to reverse an approved amount. This preserves the original value and the correction instead of rewriting history. The source labels explain where a change came from: - **Budget: [title]** is a modification created directly by a user. - Budget Impact #NNN is linked to a Prime Change Order. A Prime Change Order creates or updates its Budget Modification when it reaches its **Billable On** date. That modification locks automatically. ### Lock or unlock Budget values Lock the Original Budget when its coding and amounts are approved. Lock later modifications independently after reviewing their values and related change documents. Use **Actions** → **Edit Budget** to open the Budget editor. Locking uses financial write access. Unlocking a Budget Modification requires **Unlock Budget modifications**. Unlock only to correct a value that was wrong when approved. If the project changed later, add a Budget Modification. Unlocking doesn't delete values, but changing approved history can make the Budget disagree with a related Prime Change Order or accounting record. > **Note:** A modification linked to a Prime Change Order locks when the change reaches **Billable On**. Unlocking it doesn't alter the Change Order. ## Review and forecast ### Read the Budget Three tabs sit at the top of the page, and which one you want depends on the question you're answering. - **Combined Budget** is the full picture — owner revenue and project cost side by side, which is what you need when someone asks whether the job is making money. - **Budget vs Cost** drops the revenue side entirely and puts what you budgeted next to what you've committed and spent. It's the cost-management view: no revenue columns, no revenue-only rows, and the **Commitments** and **Costs** detail already expanded instead of tucked behind a group header. - **WIP Report** is billed vs complete: **Over Billed** and **Under Billed**, then **Revenue** (actual revenue, projected revenue, revenue % complete) and **Costs** (actual costs, forecast at completion, costs % complete). Column letters stay on this tab the way they do on Combined Budget. For the same columns rolled up one row per project, see [Read the Global WIP Report](https://constructable.ai/help/global-reports#read-the-global-wip-report). The tab you were last on is remembered per project, so the view you work in every morning is the one that opens. Projects using revenue codes start on **Budget vs Cost**; everyone else starts on **Combined Budget**. Each tab keeps its own column layout and saved views, so hiding a column on one won't disturb the other. On **Combined Budget** the grid groups records by Budget Code and reads left to right: 1. **Revenue**: Prime SOVs, Prime Change Orders, pending Prime Change Orders, actual revenue, and revenue remaining. 2. **Budget**: Original Expense Budget, Budget Modifications, and Prime Change Order Costs. 3. **Costs**: vendor SOVs, vendor Change Orders, pending vendor Change Orders, Non-Committed Costs, and vendor invoices. 4. Forecast and variance: Remaining Budget, Forecast at Completion, Prime Over/Under, and Expense Budget Over/Under. ![The Budget groups Budget Codes and compares revenue, costs, forecasts, and over-under values.](https://constructable.ai/help-images/financials/full-budget-report.png) **Budget vs Cost** keeps three groups: **Budget** (**Original Budget**, **Budget Modifications**, **Prime Change Order Budget Impact**, **Revised Budget**), **Commitments** (**Vendor Commitments** and **Vendor Invoices**, with the vendor SOV and Change Order detail available but hidden), and **Costs** (**Non-committed Costs**, **Actual Costs**, **Costs % Complete**). It also drops the column letters — the A, B, C prefixes that let you trace the combined view's arithmetic aren't there, because without the revenue columns there's no long formula to trace. Use search, filters, and grouping to narrow the grid. **WIP Report** uses the same **Budget Code** filter as the other tabs. Need a cell's ingredients? Click a money total on **Combined Budget** or **Budget vs Cost**. A breakdown opens titled with the row and column names and lists each **Source**, **Amount**, and **Description**, with **Total** at the bottom. Source names that are records open in a new tab. Percentage-complete, forecast, **Over Billed**, and **Under Billed** cells don't open that breakdown. The Budget is a current calculation, not a signed financial statement. Confirm source records and accounting sync before using it for a contractual decision. ### Control pending Change Orders in totals Open **Actions** and use **Show Pending Change Orders in Totals**: - Selected: pending Prime and vendor Change Orders count in totals. - Cleared: totals use billable or executed changes; pending values remain visible but are excluded. The setting changes the current view and saved grid configuration. It doesn't change, delete, execute, or void a Change Order. When two users report different totals, compare this setting, their permissions, filters, and grouping first. ### Override Forecast at Completion Use the pencil beside **Forecast at Completion** when the project team knows about an expected final cost that source records don't yet show. The sheet splits the number you already know from the number you're still expecting: - **Current estimate** is read-only. For each underlying cost code it's the greater of Revised Budget and Total Cost; a group row adds those leaf values. - **Forecast to Complete** is the cost still expected from today through project completion. Edit it and **Forecast at Complete** follows. - **Forecast at Complete** is the expected final total, including actual cost already recorded. Edit it and **Forecast to Complete** follows. This is the value stored on the override. The Budget grid column is still labeled **Forecast at Completion**. A table of estimate contributors lists **Source**, **Amount**, and **Description**, with **Total** at the footer. Source names that are records open from the sheet. A new override starts **Forecast at Complete** at the current estimate, so **Forecast to Complete** starts at zero. Clear the amount to unset the override. Turn **Active** off to keep the note without applying the number, and add **Notes** explaining the assumption. Use a Commitment, Change Event, Change Order, invoice, or Receipt when a formal source record already exists; don't use an override to conceal a missing transaction. Forecast at Completion estimates final cost, not the timing of cash. ## Audit and export ### Use the activity log and exports ![The Budget Actions menu provides View Log and PDF or CSV downloads.](https://constructable.ai/help-images/financials/budget-activity.png) - Select **Actions** → **View Log** and filter the date range to trace activity from Budget changes, Commitments, Change Orders, and forecast overrides. - Select **Actions** → **Download PDF** for a readable snapshot. - Select **Actions** → **Download as CSV** for spreadsheet analysis or reconciliation. Check filters, grouping, and **Show Pending Change Orders in Totals** before exporting. Exports don't update when project records change; generate a new file for a current view. The activity log supports investigation. Signed contracts, approved invoices, and accounting-system history remain the authoritative records for those transactions. ## Connected setup and troubleshooting ### Use Budget with accounting integrations Accounting behavior depends on the mappings configured for the organization: - Sage Intacct project estimates can create the Original Budget or later Budget Modifications. - A manually built or imported Budget also satisfies workflows that require Budget lines. - Imports create Constructable records from a file; they don't create a live QuickBooks or Sage link. On a Sage-connected project, **Add Change Order** is blocked while the Budget has no line items when the project participates in Sage sync. Add or sync Budget lines first. This restriction doesn't apply when **Exclude from Sage Intacct Sync** is selected in **Project Settings** → **Integrations**. Don't recreate a Budget or accounting record because a sync link is pending or in error. Fix and retry the existing link so the systems remain one-to-one. ### Troubleshoot Budget #### Budget is missing Confirm the organization has the Financial package and the role has **View financial reports**. Financial Tools won't appear when the package isn't available. #### All Budget amounts are zero Open project financial settings and check Budget Type. **Not Selected** leaves the Budget waiting for setup. #### Setup Budget opens the editor immediately The project already has original lines, often from an import, while Budget Type was still **Not Selected**. Constructable completes setup and opens those lines for review. #### A line or modification can't be edited Check whether the Original Budget or modification is locked. Use a new modification for a later change. Unlock only with the required permission and only to correct approved history. #### A PCO can't be created on a Sage project Add at least one Budget line or allow the configured Sage project estimate to sync. Also confirm whether the project is excluded from Sage sync. #### Two users see different totals Compare the tab they're on — **Combined Budget**, **Budget vs Cost**, and **WIP Report** carry different columns and their own saved views — then **Show Pending Change Orders in Totals**, filters, grouping, and access to the source financial records. #### The revenue columns are gone You're on **Budget vs Cost**, which leaves revenue out on purpose. Switch to **Combined Budget** at the top of the page. #### A Budget Code reads differently in Edit Budget On projects using revenue codes, the Budget report labels a line with the revenue code that funds it, while **Edit Budget** shows the underlying cost code and cost type you're actually editing. Both point at the same line. --- # How to use Invoices in Constructable > Use this guide to manage Billing Periods, create and submit subcontractor and Owner invoices, review approval consequences, work with lien waivers, download Payment Applications, record payments, and understand accounting sync. Source: https://constructable.ai/help/invoices Use this guide to manage Billing Periods, create and submit subcontractor and Owner invoices, review approval consequences, work with lien waivers, download Payment Applications, record payments, and understand accounting sync. ## Start here - **Set up a billing cycle:** [Manage Billing Periods](#manage-billing-periods). - **Set sequential approvers:** [Configure subcontractor invoice approvals](#configure-subcontractor-invoice-approvals). - **Submit a subcontractor invoice:** [Create and submit a subcontractor invoice](#create-and-submit-a-subcontractor-invoice). - **Review or approve an invoice:** [Review, approve, or return an invoice](#review-approve-or-return-an-invoice). - **Approve the current workflow step:** [Approve a sequential invoice step](#approve-a-sequential-invoice-step). - **Bill the owner:** [Create an Owner invoice](#create-an-owner-invoice). - **Download the formal package:** [Download a Payment Application](#download-a-payment-application). - **Record cash paid:** [Record payments](#record-payments). - **Something is blocked:** [Troubleshoot invoices](#troubleshoot-invoices). ## Set up and find invoices ### Configure invoice defaults Before the first billing cycle, review **Organization Settings** → **Financial Settings**: - **Track Materials Stored** adds separate stored-material fields to invoice lines. - **Default Retention Percent** supplies the starting rate for new contract lines. - **Hide Budget Codes on Owner Pay Applications** removes internal cost coding from Owner Payment Applications. - **Billing Period Due Date Day** supplies the default due day for new periods. - **Lien Waivers** adds waiver workflows to invoices. Project people such as the Architect can print on the Owner Payment Application cover page. Confirm those assignments in project settings before issuing the first package. For QuickBooks invoices with retainage, an administrator must also set **Retention Receivable Item** and **Retention Payable Item** in the QuickBooks integration settings. ### Manage Billing Periods 1. Open **Invoices**. 2. Select **Billing Periods**. 3. Select **Add Billing Period**. 4. Enter the start date, end date, and due date. 5. Save. Ranges can't overlap. The period containing today's date is current; every other period is closed for creating invoices. Creating an invoice in a closed period requires **Create invoices in closed billing periods**. A Billing Period organizes Constructable billing. It doesn't open or close an accounting period in QuickBooks or Sage Intacct. ### Find Owner and subcontractor invoices Open **Invoices**, then select: - **Subcontractors** for vendor Commitment invoices. - **Owner** for Prime Contract invoices. - **Billing Periods** for period administration. Search or group by company, Billing Period, **Application №**, **Invoice №**, or status. Both invoice tabs carry a **Billing Period** column and a matching **Filters** entry, so you can narrow a long list to the cycle you're closing. Invoices that aren't tied to a period group under **No Billing Period**, which is the fastest way to spot one that was created outside the cycle. The page opens the first tab your permissions allow, so users with different access can land on different tabs and see different records. Invoice tables don't provide bulk approval. Open each invoice to review and act on it. ### Set invoice notifications Open an invoice and select its bell to choose: - **All Activity** - **Only my Mentions/Ball-in-Courts/Assignments** - **Do not notify me** This setting applies to that invoice. Select **Reset to defaults** to return to the inherited project or user setting. The same menu links to **My Default Notification Settings (All Projects)** and **Project Specific Notification Settings**. Status changes remain in the invoice activity even when a user chooses not to receive notifications. ## Subcontractor submission ### Create and submit a subcontractor invoice ![The subcontractor invoice shows its Billing Period, details, SOV progress, and submission controls.](https://constructable.ai/help-images/financials/create-subcontractor-invoice.png) 1. Open **Invoices** → **Subcontractors**, or open the Commitment's **Invoices** block. 2. Select the Commitment and Billing Period, then create the invoice. 3. Enter **Work Completed This Period** for each applicable SOV line. 4. Enter materials stored, retainage held, or retainage released when applicable. 5. Enter the optional vendor **Invoice №** and confirm **Invoiced Date**. 6. Upload backup documents and prepare any required lien waiver. 7. Review **Amount Due**. 8. Select **Submit Invoice**, then confirm. Submission changes the status from **Draft** to **Under Review** and records the submitter and time. It doesn't approve the invoice or send it to accounting. **Application №** is Constructable's sequence for billings on that contract. **Invoice №** is the vendor's optional reference. Keep **Invoice №** to 21 characters or fewer for QuickBooks and Sage compatibility. #### When submission is blocked The control explains the current reason when possible. Common blocks are: - The Commitment has no SOV lines. - The user lacks **Submit invoices for approval** for that company. - An attachment is still uploading; the button reads **Uploading attachments...** until it finishes. - A previous invoice on the Commitment isn't approved. - A newer Billing Period already has an invoice. - The selected period is closed and the user lacks **Create invoices in closed billing periods**. Don't change dates or create a duplicate to bypass a blocked state. Resolve the prior invoice, period, SOV, upload, or permission. #### When you can't create the invoice Invoices on a contract go in order, one Billing Period at a time. Constructable refuses to create a new invoice on a Commitment or Prime Contract when: - The contract already has an invoice that isn't Approved yet. Get that one approved (or delete it, if it's an unused Draft) before you start the next. - A later Billing Period already has an invoice on that contract. Earlier periods aren't offered, so pick the current period or a later one. The same rules apply to the AI invoice import and to **Copy Line Items to Prime**. Copying can add lines to an existing Draft owner invoice in the vendor invoice's Billing Period, but it's refused when the Prime Contract has a different unapproved invoice or an invoice in a later period. ### Import a subcontractor invoice For import runs, open **My Imports** and choose **Invoice Imports**, upload the files, resolve detected conflicts, and verify every created or updated Draft. For one invoice PDF, open **Agent** and select **Use a Skill** → **Import invoice**. Attach the PDF, resolve project, Commitment, and SOV matches, then review the created Draft and attached source PDF before selecting **Submit Invoice**. When the PDF states an application or billing period, the skill matches that Constructable period. Otherwise it picks the period that contains the invoice date, then the current period. It asks instead of creating a Draft if that would put billing on an earlier period than invoices you already have, or if remaining SOV isn't enough. The skill handles both a subcontractor invoice from a vendor and a prime invoice you bill to the owner, matching the company and commitment type to whichever it finds. See [Import an invoice](https://constructable.ai/help/chat#import-an-invoice). Imports don't approve invoices and don't create a live accounting link. ## Review and approval ### Configure subcontractor invoice approvals When more than one person has to sign off on a vendor invoice, put them in order here. **Project Settings** → **Financial** → **Subcontractor Invoice Approvals** is an ordered list. Each person on it has to finish their step before the next one starts. 1. Open **Project Settings** and select the **Financial** tab. 2. Open **Subcontractor Invoice Approvals**. 3. Select **Add an approver** and pick someone who has **Approve invoices**. 4. Repeat to build the sequence. The numbers are the order they'll be asked. 5. Save. The empty state reads **No sequential approvers. Anyone with Approve invoices can approve submitted invoices.** That's the legacy path — no list, and **Approve Invoice** works the way it always did. Prime and Owner invoices skip this list. Only subcontractor Commitment invoices mint steps when you **Submit Invoice**. > **Note:** The panel needs **Manage invoice approval workflows**. Opening Project Settings isn't enough, and **View invoice approval workflows** doesn't show the block by itself. If a person on the list later loses **Approve invoices**, **Submit Invoice** is blocked until you replace them. Don't leave a departed superintendent sitting in step 2. The next submitted vendor invoice will wait on step 1 instead of anyone-with-approve. ### Review, approve, or return an invoice Invoice statuses are **Draft**, **Under Review**, **Approved**, and **Paid**. Before selecting **Approve Invoice**: 1. Confirm the Commitment or Prime Contract and Billing Period. 2. Review prior and current work, materials stored, retainage held, and retainage released on every SOV line. 3. Review attachments and each lien waiver's separate status. 4. Confirm **Invoice №**, **Invoiced Date**, totals, and **Amount Due**. 5. Select **Approve Invoice** and confirm **Approve**. An approver can approve a Draft directly when the project has no sequential workflow. If **Subcontractor Invoice Approvals** has at least one approver, **Approve Invoice** stays off on a Draft — **Submit Invoice** first — and stays off while a step is pending. See [Approve a sequential invoice step](#approve-a-sequential-invoice-step). Approval: - Changes the invoice to **Approved**. - Saves a frozen approved snapshot used by the formal Payment Application. - Makes an in-scope invoice eligible for QuickBooks or Sage sync. - Locks **Invoice №** and the invoiced date. Neither can be edited while the invoice is Approved or Paid. To return an invoice: - **Under Review → Draft** requires **Change an invoice after it has been submitted**. - **Approved or Paid → Draft** is an unapproval and requires **Unapprove invoices**. - Only the latest invoice on the contract can return to Draft. Unapproving discards the approved snapshot. If the invoice had synced, it also retires the Constructable link; the accounting record isn't corrected or deleted. Coordinate the correction with accounting before unapproving. #### Delete an invoice Select **More Actions** → **Delete Invoice** (on a phone, it's in the three-dot menu), then confirm **Delete Invoice**. Deletion can't be undone, and it removes the invoice's attachments, lien waivers, and payment lines along with it. - Deleting a Draft takes **Delete draft invoices**. Deleting an invoice that's Under Review also takes **Change an invoice after it has been submitted**. - Approved and Paid invoices can't be deleted. Unapprove them first if they really need to go. - Normally only the latest invoice on the contract can be deleted. The exception is an empty Draft — no line items, lien waivers, or payment lines — stranded behind a newer invoice. You can delete that one so it stops blocking the contract. A Draft with any of those keeps **Delete Invoice** disabled, and hovering it explains that the invoice can't be deleted after a newer invoice has been created. **Mark Invoice as Paid** changes status only. It doesn't create or allocate a Payment. ### Approve a sequential invoice step Once **Subcontractor Invoice Approvals** has people on it, a submitted vendor invoice grows an **Approval workflow** block. That's where you **Approve** or **Reject** the current step — not **Approve Invoice** on the page. 1. Open the invoice. Status is **Under Review**. 2. Find **Approval workflow**. The current step shows **Pending**. 3. Select **Approve**. The dialog is **Approve invoice step**. Add **Comments** if you want them, then confirm **Approve**. 4. Or select **Reject**. The dialog is **Reject invoice**. Rejecting sends the invoice back to **Draft**. The assigned approver can act with **Approve invoices**. Anyone with **Approve invoices on behalf of others** can act on a step that isn't theirs — Admin has that by default. The last step's **Approve** is what moves the invoice to **Approved** and freezes the Payment Application snapshot. Earlier steps only clear the way. **Previous approval runs** keeps earlier sequences after a reject and resubmit. Each run is numbered, with **Pending**, **Approved**, or **Rejected** on the steps. > **Note:** **Approve Invoice** stays unavailable while a step is pending, and on a Draft when this workflow is configured. That's expected — submit first, then work the steps. #### Why can't I approve a step that isn't assigned to me? You need **Approve invoices on behalf of others** as well as **Approve invoices**. Without it, only the person on that step can **Approve** or **Reject**. The invoice either advanced a step or came back as a Draft you can correct and submit again. ### Enter work, materials stored, and retainage - **Work Completed This Period** is installed work billed this cycle. - **Materials Stored This Period** is delivered but uninstalled material; it appears only when **Track Materials Stored** is enabled. - **Retainage Held This Period** withholds part of current billing. - **Retainage Released This Period** makes previously held money payable. Open a line to enter these amounts in **Edit Invoice Line Item**. Its **Billable Contract Amount** is what the line is worth for this invoice: the SOV amount plus change orders that are billable by the end of the invoice's Billing Period. A change order with a later **Billable On** date doesn't count yet, so the completion percentages and the most you can bill on the line are measured against that period amount, not the line's full revised value. If a line won't accept the work you entered, check whether the change order that adds it is billable in this period. Select **More Actions** → **Release All Retainage** to release held retainage across every invoice line. The action is disabled with the message **No retainage is currently held** when there is nothing to release. It isn't a single-line action. Release still works on a line whose SOV amount was revised down to $0 after it was billed — say a deductive change order took the scope out. The held retainage on that line can be released, up to the amount actually held. New work, materials, or retainage held can't be billed against a $0 line. ### Manage attachments and lien waivers ![An invoice keeps supporting attachments and lien waiver documents together for review.](https://constructable.ai/help-images/financials/invoice-attachments-lien-waivers.png) Upload supporting files before submission. Removing a file after submission requires **Remove attachments from invoices after submission**. When lien waivers are enabled, invoices can carry conditional and unconditional waiver documents. A waiver has its own **Draft → Out for Signing → Fully Executed** lifecycle; invoice approval or payment doesn't complete it. On Owner invoices, the signer must be an active organization member. Select **Create** to generate an Owner waiver. Subcontractor invoice waivers use **Send for Signing**, and eligible external company users can use the self-sign workflow for their own invoices. To get a waiver form generated from the invoice, open **Download Lien Waivers** in the header of the **Lien Waivers** block and pick **Conditional Progress Payment**, **Unconditional Progress Payment**, **Conditional Final Payment**, or **Unconditional Final Payment**. The menu is on both subcontractor and Owner invoices; on an Owner invoice, the **Lien Waivers** block is visible only to people in your organization. Downloading a form doesn't add a waiver to the invoice or start its signing flow. ## Owner billing, PDFs, and payment ### Create an Owner invoice Create an Owner invoice for a Billing Period and enter progress against the Prime SOV. To start from vendor billing: 1. Open a subcontractor invoice. 2. Select **More Actions** → **Copy Line Items to Prime**. 3. Choose the Prime Contract when the project has more than one. 4. Map each vendor line to a Prime SOV line. 5. Save. 6. Open the current Draft Owner invoice and review every copied amount. Unmapped lines don't copy. The action is disabled when the vendor invoice has no line items. Vendor and owner values can differ because contract value, markup, approved scope, and billing timing differ. ### Download a Payment Application ![An approved subcontractor invoice provides Download Payment Application above its line items.](https://constructable.ai/help-images/financials/payment-application.png) From **More Actions**: - **Download Default Payment Application** uses the standard summary and detail sheets. - **Download "[name]" Payment Application** uses a saved layout. Saved layouts belong to your organization, so one set up on any project shows up here on every project. - **Customize Payment Application** configures columns, and **Save Current Layout** saves them under a name. Give each layout a name that's unique across the organization — reuse one and the dialog blocks the save with **A payment application view with this name already exists in your organization.** rather than quietly overwriting the layout a colleague set up on another job. Saving, deleting, and downloading saved layouts all need **View financials** with **Level of financial access** set to **All Financials** on your organization or company role; a project-level role override doesn't count. Deleting a layout from the **Views** menu removes it from every project, and there's no undo. **Name** is a hidden-by-default column that lists the distinct vendor company names on that cost-code line, separated by commas. It appears on the custom PDF when you turn the column on; the default AIA package doesn't include it. - **Download All Subcontractor Pay Applications** on an Owner invoice packages vendor pay apps for the Billing Period; it is disabled when none exist. The download dialog lets you include supported PDF or image attachments and available lien waiver documents. Approved invoices render from the snapshot frozen at approval. Download a fresh file after a correction; an existing PDF never updates. To pull down several subcontractors' pay apps at once, use **Download Pay Applications** on the **Subcontractors** tab, or **Download All Subcontractor Pay Applications** from an Owner invoice's **More Actions** when you only want the one period. Both open **Download Subcontractor Pay Applications**, and the choices under **Include** are the same: - **Attachments & Lien Waivers** comes first, with **Include all attachments** and **Include all lien waivers**. Both start ticked. The lien waiver option is only there when your organization has lien waivers turned on. - **Billing Periods** comes below it, listing each period with how many pay applications it holds. All of them start ticked. This section is skipped when you started from an Owner invoice, because the period is already decided. > **Warning:** Because everything starts ticked, a plain **Download** gives you every period and every attachment and lien waiver on file — which is a large package and, more to the point, more than you probably meant to hand an owner. Untick what this reader doesn't need before you download. If **Download Pay Applications** is disabled, no billing period has a subcontractor pay application yet. On an Owner invoice the tooltip says the same thing for that one period. ### Record payments 1. Open the Commitment. 2. In **Payments**, select **Add Payment**. 3. Enter date, method, reference, and amount. 4. Allocate lines to the correct approved invoices. 5. Save and verify each remaining amount due. Methods are ACH, credit card, check, cash, and other. When allocations cover an invoice's amount due, it moves to **Paid** automatically. Reducing or deleting a Payment can move it out of Paid. Payments change the invoice balance, not the Commitment value. QuickBooks payments and bill payments can import as Constructable Payments. Sage Intacct doesn't sync Payments. ## Accounting and troubleshooting ### Understand invoice accounting sync Configured accounting sync uses approval as the eligibility gate: - Approved or Paid Owner invoices can become QuickBooks Invoices; negative ones become Credit Memos. - Approved or Paid subcontractor invoices can become QuickBooks Bills; negative ones become Vendor Credits. - Sage invoice direction and document mapping depend on the organization's implementation. - Draft and Under Review invoices don't sync outbound. An integration link can be pending, synced, suppressed, retired, or in error. Fix and retry an existing error; don't create a duplicate invoice. For QuickBooks, common blocks are an invalid Customer or Vendor reference, a closed accounting period, or a duplicate document number. ### Troubleshoot invoices #### The expected tab or invoice is missing Confirm the Financial package, the Prime Contract or Commitment read permission, company-level access, project, Billing Period, and status. The page only shows tabs the user can access. #### Submit Invoice is disabled Hover or focus the disabled control. Check SOV lines, prior and newer invoices, closed-period permission, company access, and pending attachment uploads. #### I can't create the next invoice The contract has an invoice that isn't Approved yet, or a later Billing Period already has an invoice on it. Approve the outstanding invoice, or bill in the current or a later period. If the blocker is an empty Draft stranded behind a newer invoice, delete it with **More Actions** → **Delete Invoice** — see [Review, approve, or return an invoice](#review-approve-or-return-an-invoice). #### Approve Invoice is unavailable Confirm the invoice is Draft or Under Review, the user has **Approve invoices**, and no model validation shown by the control is blocking approval. If **Subcontractor Invoice Approvals** has a list, Draft invoices must be submitted first, and Under Review invoices wait on **Approval workflow** — **Approve** or **Reject** the current step there, or use **Approve invoices on behalf of others** when the step isn't yours. #### An approved invoice needs correction Coordinate with accounting first. Returning it to Draft removes the approved snapshot and can retire an accounting link without changing the accounting record. #### A Payment Application shows old values Approved PDFs use the snapshot saved at approval. Correct and reapprove through the authorized workflow, then download a new PDF. #### A lien waiver is still incomplete Invoice and waiver statuses are independent. Open the waiver and finish its signing flow. --- # How to use Prime Contract in Constructable > Use this guide to create the owner contract, build its revenue SOV, prepare contract documents for approval and e-signature, download a PDF, and understand deletion and accounting-sync consequences. Source: https://constructable.ai/help/prime-contract Use this guide to create the owner contract, build its revenue SOV, prepare contract documents for approval and e-signature, download a PDF, and understand deletion and accounting-sync consequences. ## Start here - **Create the owner contract:** [Create a Prime Contract](#create-a-prime-contract). - **Build the billing structure:** [Build and lock the Prime SOV](#build-and-lock-the-prime-sov). - **Set overhead and profit percentages:** [Set up Change Order markup](#set-up-change-order-markup). - **Send the contract for signature:** [Prepare the contract for e-signature](#prepare-the-contract-for-e-signature). - **Bill or change the owner:** [Use the Prime Contract with invoices and changes](#use-the-prime-contract-with-invoices-and-changes). - **Download or delete:** [Use Prime Contract actions](#use-prime-contract-actions). - **Something is blocked:** [Troubleshoot Prime Contract](#troubleshoot-prime-contract). ## Create and administer ### Create a Prime Contract ![The Prime Contract shows contract totals, owner details, status, and Prime Invoices.](https://constructable.ai/help-images/financials/prime-contract.png) 1. Open **Prime Contract**. 2. Select **Add Prime Contract**. 3. Choose the owner company. On a Sage Intacct organization, this list is limited to companies typed as **Owner**. 4. Enter the contract number, title, dates, and other agreement details. 5. Save, then build the Prime SOV. The contract page opens with summary cards and a strip of section tabs: **Contract**, **Scope of Work**, **Schedule of Values**, **Change Orders**, **Invoices**, and **Payments**. Select a tab to jump to that section. The strip stays pinned to the top while you scroll, and the counts on **Change Orders**, **Invoices**, and **Payments** tell you what's there before you get to it. On a narrow screen, swipe the strip or use the arrow at either end to reach the rest. The Prime Contract tracks owner revenue. Vendor and subcontractor costs belong on Commitments or Purchase Orders. A project can have more than one Prime Contract. Use the Prime Contract switcher to select the agreement you intend to review, invoice, change, download, or delete. ### Build and lock the Prime SOV The Prime SOV is the line-item structure used by Owner invoices and Prime Change Orders. Add lines manually or import a CSV or PDF. **Import CSV or PDF** opens **Import SOV Line Items** — upload a CSV or PDF of SOV line items; AIA G703 continuation sheets are supported. Large files can take a few minutes. The grid groups lines by **Revenue Code** when your organization uses revenue codes, or by **Cost Code** otherwise, and each group stays collapsed until you open it. A group holds the contract's own lines plus the lines from every Prime Change Order that isn't void. It opens with **Original Amount**, **Approved COs**, **Pending COs**, and **Revised Amount** showing. **Approved COs** counts Fully Executed Prime Change Orders, **Pending COs** counts the rest, Drafts included, and **Revised Amount** is the original plus approved changes. **Status**, **Sub Project**, **SOV Description**, **Retention**, **Qty**, **Unit**, **Unit Price**, **Change Orders**, **Remaining Amount**, **Progress**, **Budget Impact**, and **Revised Budget Impact** start hidden — turn them on from the column picker when you need them. Confirm for each line: - Description - Revenue code, when enabled - Subproject, when used - **Qty**, **Unit**, and **Unit Price** when the line is unit-priced. **Amount** follows from quantity × unit price; leave those blank and type **Amount** for a lump-sum line. - Retention - **Billing Type** for progress billing or time-and-material billing Revenue codes organize owner revenue. Cost codes and cost types organize vendor cost, so don't use the Prime SOV as if it were a subcontractor Commitment. Lock the SOV after approval. Use **Unlock the SOV for editing on a commitment** only to correct the approved structure. A later owner scope change belongs on a Prime Change Order so its value and history remain separate. A Fully Executed Prime SOV stays editable for the people trusted with it. Adding, editing, deleting, importing, or locking lines on an executed Prime Contract takes **Edit a commitment's schedule of values after it has been executed** on top of **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Admin and Manager have it by default, and so do custom roles built on them. Without it, those controls don't appear once the contract is executed. > **Note:** Once an SOV line has invoice activity, recoding it splits billing history. A line created by a Prime Change Order should be corrected through that change. ### Set up Change Order markup Most owner contracts let you add overhead, profit, insurance, or general conditions on top of the cost of a change. Set those percentages up once on the Prime Contract and every Prime Change Order can pull them in as line items, instead of someone working them out on a calculator. Edit the **Contract** block on the Prime Contract and use **Add Change Order Markup**. Each markup needs a **Name**, a **Percentage**, and a **Cost Code**, plus a **Cost Type** when your organization requires one. Markups apply in the order they appear — drag them to reorder — which matters, because that order decides what each one is calculated on. **Calculation** is the important field: - **Basic** takes the percentage of the change's own line items. Nothing that came before it counts. - **Includes Above** takes the percentage of the change plus every markup already applied. This is straightforward compounding. - **Selective Compounding** takes the percentage of the change plus only the earlier markups you tick under **Include Prior Markups**. That third option exists because contracts are rarely tidy about this. A typical one lets you take profit on overhead but not on the insurance line — with **Selective Compounding** you tick the overhead markup under **Include Prior Markups** and leave insurance unticked, and the arithmetic follows the agreement rather than the other way around. Worked through: on a $100,000 change with 10% overhead as **Basic**, a 5% insurance markup as **Basic**, and 5% profit as **Selective Compounding** including only overhead, you get $10,000 of overhead, $5,000 of insurance, and profit of 5% of $110,000 — $5,500 — rather than 5% of $115,000. **Selective Compounding** only appears on a markup that has something above it to compound. To apply them, open a Draft Prime Change Order that has line items and select **Add Markup Line Items**. Each markup becomes its own line, described with its name and percentage, coded to the cost code you set. Once they're on, the button reads **Markup Line Items Added** — it won't add a second set. **Copy all from Vendor Change Orders** applies the same markups automatically when it creates the Prime Change Order. See [Copy vendor pricing to a Prime Change Order](https://constructable.ai/help/change-events#copy-vendor-pricing-to-a-prime-change-order). > **Note:** A markup with no cost code is skipped when the lines are generated. If a markup you configured doesn't show up on the change order, that's the first thing to check. Set this up before the first change order goes out and the owner sees the same markup structure every time. ### Prepare the contract for e-signature 1. Finish the Draft contract and Prime SOV. 2. Select **Actions** → **Prepare for Esigning**. 3. Upload the contract document. 4. Configure recipients, approvers, signers, and signature fields. 5. Confirm and send. When approvers are configured, they review in order while the contract is **Awaiting Approval**. It then moves to **Out for Signing**, **Ready to Countersign**, and **Fully Executed** as signatures are completed. While an active e-signature flow controls the record, status can't be changed manually. You can correct a Fully Executed Prime Contract without reopening it. Anyone with **Create new commitments, make changes to existing commitments** can select **Edit** on the **Contract** or **Scope of Work** block, and the contract stays Fully Executed. Changing the Prime SOV also takes **Edit a commitment's schedule of values after it has been executed**. Executed Prime Change Orders don't follow that rule — they stay locked until they're moved back to Draft. See [Prepare a Change Order for e-signature](https://constructable.ai/help/change-events#prepare-a-change-order-for-e-signature). To move the contract out of Fully Executed instead — to **Under Revision** or **Draft**, for example — use the status badge on the **Contract** block or the **Status** field in its edit form. Either one takes **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Status stays locked when the contract was signed through Constructable e-signing or the executed contract is linked to an accounting record. An edit or a reopen can require a separate accounting correction, so for a routine change in owner scope, use a Prime Change Order instead. ### Understand approvals, status, and notifications The contract document workflow notifies the configured approver or signer when their action is due. Its normal sequence is: **Draft → Awaiting Approval, when configured → Out for Signing → Ready to Countersign → Fully Executed** **Void** keeps a contract in project history without treating it as active. Use Void instead of deletion when the agreement should remain visible for audit or explanation. Approvals and signatures apply to the contract document flow. They don't approve an Owner invoice or Prime Change Order; each has its own status and actions. ## Connected owner workflows ### Use the Prime Contract with invoices and changes - Owner invoices bill progress against Prime SOV lines. See [How to use Invoices](https://constructable.ai/help/invoices#create-an-owner-invoice). - Prime Change Orders change owner revenue and can add lines to the Prime SOV when executed. See [How to use Change Events](https://constructable.ai/help/change-events#create-vendor-and-prime-change-orders). - A Prime Change Order's **Billable On** date controls when its value counts as billable and when its Budget Modification is created or updated. - **Fully Executed** records the document lifecycle. It is separate from **Billable On**. - The contract's **Prime Change Orders** block, below the SOV, lists every Prime Change Order that isn't void, highest number first, with its **Change Event**, **Status**, **Executed** date, **Schedule Impact (days)**, and **Amount** and a total at the bottom. The block header adds up approved and pending dollars; on a phone, that summary sits above the list. Don't create a new Prime Contract for a monthly billing cycle or scope change. Use an Owner invoice or Prime Change Order against the existing agreement. ### Use Prime Contract actions From **Actions**: - **Prepare for Esigning** appears on a Draft without an active contract signing flow. - **Download PDF** compiles the current contract PDF. - **Delete Prime Contract** opens a destructive confirmation. Deleting a Prime Contract removes its Owner invoices, SOV lines, Change Orders, attachments, and contract documents. The dialog lists the affected records before confirmation. This can't be undone in the app. Correct an erroneous field or use **Void** when history should remain. Delete only when the entire record and every dependent owner-financial record should be removed. ## Accounting and troubleshooting ### Understand Prime Contract accounting sync Sage Intacct can exchange Prime Contracts, SOV lines, Prime Change Orders, and owner invoices according to the organization's configured mappings. Some outbound flows create the accounting document but don't send later edits. Confirm the configured direction before changing an executed record. QuickBooks owner billing is invoice-driven: an eligible Approved or Paid Owner invoice can become a QuickBooks Invoice, while a negative one can become a Credit Memo. An integration icon or status describes the link to accounting. Fix and retry an existing failed link; don't recreate the Prime Contract or invoice. ### Troubleshoot Prime Contract #### Prime Contract is missing Confirm the Financial package and **View prime contracts**. Also confirm the intended project and, when several Prime Contracts exist, select the correct record in the switcher. #### Add Prime Contract is missing The user needs **Create new commitments, make changes to existing commitments**. #### An SOV line is read-only Check whether the SOV is locked, the line came from a Prime Change Order, or invoice activity exists. On a Fully Executed contract, SOV changes also need **Edit a commitment's schedule of values after it has been executed**. A line revised by a Prime Change Order that's out for signing or executed shows **This line item is used by a change order that is out for signing or executed, so it cannot be changed.** Correct the source record instead of rewriting established billing history. #### Prepare for Esigning is missing The contract must be Draft, the user needs financial write access, and no active contract signing flow can already exist. #### Status can't be changed An active e-signature flow controls status. Complete or resolve that flow rather than forcing the contract ahead manually. On a Fully Executed contract, change status from the badge on the **Contract** block or the **Status** field in its edit form. Both need **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Status stays locked when the contract was signed through e-signing or is linked to an accounting record. #### Delete would remove owner billing history Cancel the deletion. Correct the contract or use Void unless every listed dependent record should be removed. --- # How to use Commitments in Constructable > Use this guide to create a subcontract or Purchase Order, build and protect its SOV, prepare contract documents for approval and e-signature, manage invoices and payments, download a PDF, and understand accounting consequences. Source: https://constructable.ai/help/commitments Use this guide to create a subcontract or Purchase Order, build and protect its SOV, prepare contract documents for approval and e-signature, manage invoices and payments, download a PDF, and understand accounting consequences. ## Start here - **Create a subcontract or PO:** [Create a Commitment or Purchase Order](#create-a-commitment-or-purchase-order). - **Start from an awarded bid:** [Create Commitments from bids](#create-commitments-from-bids). - **Build the billing lines:** [Build, import, and lock the SOV](#build-import-and-lock-the-sov). - **Send for approval and signature:** [Prepare a Commitment for e-signature](#prepare-a-commitment-for-e-signature). - Process billing: [Use invoices and payments](#use-invoices-and-payments). - **Download, void, or delete:** [Use Commitment actions](#use-commitment-actions). - **Something is blocked:** [Troubleshoot Commitments](#troubleshoot-commitments). ## Create and structure ### Create a Commitment or Purchase Order ![Choose the vendor and contract title to create the initial Commitment.](https://constructable.ai/help-images/financials/creating-commitments-and-purchase-orders-form.png) 1. Open **Commitments**. 2. Select **Add Commitment**, or open its dropdown and select **Add Purchase Order**. 3. Choose the vendor company. On a Sage Intacct organization, this list is limited to companies typed as **Subcontractor** or **Vendor**. 4. Enter the contract number, title, dates, and scope. 5. Save, then build the SOV and confirm retention. 6. Add attachments or prepare the formal contract document. A Commitment opens with its summary cards on top and a strip of section tabs below them: **Contract**, **Scope of Work**, **Schedule of Values**, **Change Orders**, **Invoices**, and **Payments**. Select a tab to jump to that part of the page. The strip stays pinned to the top as you scroll, and the highlighted tab follows where you are. **Change Orders**, **Invoices**, and **Payments** carry a count of what's on the contract. When the strip is wider than your screen, which is common on a phone, swipe it sideways or use the arrow at either end. Use a Commitment for subcontracted scope that needs contract administration, an SOV, retention, changes, and progress invoices. Use a Purchase Order for purchased goods or a simpler vendor agreement. A Purchase Order is stored with Commitments and starts at zero retention. Search by company, title, number, or type. A Purchase Order can't serve as the Prime Contract. Back on the index, a total row pinned to the bottom of the list adds up the money columns for whatever you're currently looking at. Filter to one trade or group by vendor and you get that subtotal without exporting anything, which is the quickest way to answer how much scope you've actually bought out. ### Create Commitments from bids 1. Open the received bid package. 2. Select the awarded bids. 3. Open **Bulk Actions** and select **Create N Commitment(s)**. 4. Review the companies and amounts. 5. Confirm. 6. Open each new Commitment and complete scope, coding, retention, signers, SOV lines, and documents. Constructable skips a company that already has a Commitment on the project and identifies it in the dialog. Review the existing contract before creating another one for the same scope. A Commitment created from a bid is a Draft starting point, not an executed agreement. ### Build, import, and lock the SOV ![A Commitment SOV lists coding, sources, statuses, retention, progress, and contract amounts.](https://constructable.ai/help-images/financials/commitment-sov.png) Add SOV lines manually or import a CSV or PDF. **Import CSV or PDF** opens **Import SOV Line Items** — upload a CSV or PDF of SOV line items; AIA G703 continuation sheets are supported. Large files can take a few minutes. The grid groups lines by cost code, and each group stays collapsed until you open it. A group holds the contract's own SOV lines plus the lines from every Change Order on the Commitment that isn't void, so you can see everything that's happened to a code in one place. It opens with **Original Amount**, **Approved COs**, **Pending COs**, and **Revised Amount** showing. **Approved COs** counts Fully Executed Change Orders, **Pending COs** counts the rest, Drafts included, and **Revised Amount** is the original plus approved changes. **Status**, **Sub Project**, **SOV Description**, **Retention**, **Qty**, **Unit**, **Unit Price**, **Change Orders**, **Remaining Amount**, and **Progress** start hidden — turn them on from the column picker when you need them. Confirm: - Description - Cost code and cost type - Subproject, when used - **Qty**, **Unit**, and **Unit Price** when the line is unit-priced. **Amount** follows from quantity × unit price; leave those blank and type **Amount** for a lump-sum line. - Retention Lock the SOV after the contract structure is approved. Unlocking requires **Unlock the SOV for editing on a commitment** and should correct the SOV itself. New scope after approval belongs on a Change Order. A Fully Executed Commitment's SOV stays editable for the people trusted with it. Adding, editing, deleting, importing, or locking lines on an executed Commitment takes **Edit a commitment's schedule of values after it has been executed** on top of **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Admin and Manager have it by default, and so do custom roles built on them. Without it, the add, import, lock, and edit controls don't appear on an executed Commitment's SOV. SOV lines can be read-only because the SOV is locked, the Commitment is executed and you don't have that permission, a Change Order created the line, or invoice activity exists. A line revised by a Change Order that's out for signing or executed is locked too, with **This line item is used by a change order that is out for signing or executed, so it cannot be changed.** That lock lifts if the Change Order is voided. Use the disabled control's explanation before changing history. > **Note:** Recoding a line after billing begins splits invoice history. Correct a Change Order-created line through its Change Order. ### Set retention and contract details The organization's **Default Retention Percent** supplies the starting rate for new contract lines. A Purchase Order starts at zero retention. Authorized users can set a different rate on individual lines while status and invoice history allow it. Keep the contract's scope, dates, attachments, insurance requirement, and SOV together. These values appear in contract administration, Change Orders, invoices, Payment Applications, and reports. ## Approval and status ### Prepare a Commitment for e-signature 1. Finish the Draft Commitment and SOV. 2. Select **Actions** → **Prepare for Esigning**. 3. Upload the contract document. 4. Configure approvers, signers, recipients, and signature fields. Generated signature blocks include Name and Title lines, filled from **Signer Name** and **Signer Job Title** when those values are on the signer. Every signer still needs at least one signature field before you can send. 5. Optionally require the subcontractor to provide insurance before signing. When a **Review prompt** is set in Organization Settings, that upload is checked before the outside signer reaches the signature page — see [Manage contract attachments and insurance requests](https://constructable.ai/help/contracts-and-esigning#manage-contract-attachments-and-insurance-requests). 6. Confirm and send. Configured approvers act in order while the contract is **Awaiting Approval**. It then moves through **Out for Signing**, **Ready to Countersign**, and **Fully Executed**. Notifications follow the configured approval and signing order. Which side signs first comes from **Vendor Contract Signing Order** in **Organization Settings** → **Document Signing Settings** — subcontracts, purchase orders, and vendor change orders all follow that setting, separately from the owner-facing **Prime Contract Signing Order**. While the e-signature flow is active, status can't be changed manually. An insurance requirement applies to the subcontractor signing on the other end, not to whoever signs for your organization. Commitments can also be **Under Revision** or **Void**. You can correct a Fully Executed Commitment without reopening it. Anyone with **Create new commitments, make changes to existing commitments** can select **Edit** on the **Contract** or **Scope of Work** block, and the Commitment stays Fully Executed. Changing its SOV also takes **Edit a commitment's schedule of values after it has been executed** — see [Build, import, and lock the SOV](#build-import-and-lock-the-sov). Change Orders on the Commitment work differently: once a Change Order is executed, it stays locked until it's moved back to Draft. See [Prepare a Change Order for e-signature](https://constructable.ai/help/change-events#prepare-a-change-order-for-e-signature). To move the Commitment out of Fully Executed instead — usually to **Under Revision** — use the status badge on the **Contract** block or the **Status** field in its edit form. Either one takes **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Status stays locked when the Commitment was signed through Constructable e-signing or the executed Commitment is linked to an accounting record. An edit or a reopen may not update an accounting document already created from the execution. ### Understand status consequences - **Draft**: contract details and SOV are being prepared. - **Awaiting Approval**: configured approvers are reviewing in sequence. - **Out for Signing**: a signer owes the next action. - **Ready to Countersign**: the other party signed and the countersigner is next. - **Fully Executed**: the contract document flow is complete. - **Under Revision**: the agreement is being revised. - **Void**: the record remains in history but isn't active. Use a Change Order for approved scope or value added after execution. Don't unlock the SOV or edit the executed contract merely to make new scope fit. Once a Commitment is **Fully Executed** and was signed through Constructable, you can ask questions of the contract itself. Open the command palette on the Commitment and select **Chat with the Contract** — answers come only from the signed PDF, so you get the terms as executed rather than as remembered. See [Chat with an executed contract](https://constructable.ai/help/chat#chat-with-an-executed-contract). ## Billing, documents, and connected work ### Use invoices and payments The **Invoices** block shows progress billing against the Commitment SOV. The prior invoice normally must be Approved before the next can be created. See [How to use Invoices](https://constructable.ai/help/invoices#create-and-submit-a-subcontractor-invoice) for submission, blocked states, approval, lien waivers, and Payment Applications. The **Payments** block records cash allocated to Approved invoices: 1. Select **Add Payment**. 2. Enter date, method, reference, and amount. 3. Allocate payment lines to invoices. 4. Save and verify remaining amounts due. Allocations that cover an invoice move it to **Paid**. Reducing or deleting a Payment can reverse that status. Payment does not change the Commitment value. ### Create and review Commitment Change Orders Create vendor Change Orders inside a Change Event and select the affected Commitment. Add cost-coded lines, retention, subproject, amount, and supporting documents. When a Change Order becomes **Fully Executed**, its lines become available on the Commitment SOV for billing. **Billable On** separately controls when its amount counts in billable reporting. See [How to use Change Events](https://constructable.ai/help/change-events#create-vendor-and-prime-change-orders). The Commitment's **Change Orders** block, just below the SOV, lists every Change Order on it that isn't void, highest number first. Each row links to the Change Order and shows its **Change Event**, **Status**, **Executed** date, **Schedule Impact (days)**, and **Amount**, with a total at the bottom. The block header adds up approved and pending dollars; on a phone, that summary sits above the list instead. A Commitment with none shows **No change orders on this contract yet**. ### Use Commitment actions From **Actions**: - **Prepare for Esigning** appears for a Draft without an active signing flow. - **Download PDF** compiles the Commitment or Purchase Order PDF. - **Delete Commitment** opens a destructive confirmation. Use **Void** when the agreement should remain in project history but stop being active. Before deleting, review the confirmation and dependent financial records. Deletion is not the normal correction workflow for an executed or invoiced agreement. ## Accounting and troubleshooting ### Understand Commitment accounting sync Sage Intacct can exchange Commitments, Purchase Orders, Change Orders, SOV lines, and invoices according to configured document types and mappings. Executing a Commitment can create the corresponding Sage purchasing document. Some outbound Sage flows create the document but don't send later edits. An executed Commitment linked to an accounting record keeps its status locked in Constructable. You can still edit its details here, but a flow that only creates the document won't carry those edits to Sage, so make the matching correction in Sage and record new scope on a Change Order. QuickBooks cost sync is generally invoice- and cost-driven rather than contract-driven. Approved vendor invoices can become Bills or Vendor Credits according to the configuration. Use the integration control to inspect the existing link. Fix and retry a failed link instead of creating a duplicate contract or invoice. Procore financial migration is a one-time implementation transfer, not a live sync. It can bring Commitments, SOV lines, Change Orders, Billing Periods, invoice submissions and lines, invoice attachments, and payment-related lines from a Procore export. Review the migration validation report before relying on imported balances. The transfer skips: - Change Orders tied to more than one Change Event - Void or terminated Commitments and Change Orders - Rejected Change Orders - Zero-dollar lines Purchase Orders arrive as Commitments, and projects where one vendor has several Commitments aren't supported. Work entered later in Procore doesn't continue to Constructable. ### Troubleshoot Commitments #### Commitment is missing Confirm the Financial package, **View commitments and purchase orders**, company-level access, project, search, and type filters. #### An awarded company was skipped It already has a Commitment on the project. Review that contract before creating another. #### An SOV line can't be edited Check lock, Change Order source, and invoice activity. On a Fully Executed Commitment, the add, import, lock, and edit controls only appear for roles with **Edit a commitment's schedule of values after it has been executed** as well as **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Use a Change Order for later scope. #### Prepare for Esigning is missing The Commitment must be Draft, no active signing flow can exist, and the user needs financial write access. #### Status can't be changed An active e-signature flow controls it. Complete or resolve the approval and signing sequence. On a Fully Executed Commitment, change status from the badge on the **Contract** block or the **Status** field in its edit form. Both need **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Status stays locked when the Commitment was signed through e-signing or is linked to an accounting record. #### A subcontractor can't create the next invoice Check for SOV lines, the prior invoice's approval, a newer invoice, Billing Period access, and the user's company-level **Submit invoices for approval** permission. --- # How to use Change Events in Constructable > Use this guide to group a scope change, create vendor and Prime Change Orders, copy vendor pricing to the owner side, control when values affect SOVs and reports, prepare change documents for signature, and export change exposure. Source: https://constructable.ai/help/change-events Use this guide to group a scope change, create vendor and Prime Change Orders, copy vendor pricing to the owner side, control when values affect SOVs and reports, prepare change documents for signature, and export change exposure. ## Start here - **Record a scope change:** [Create a Change Event](#create-a-change-event). - **Price cost and revenue:** [Create vendor and Prime Change Orders](#create-vendor-and-prime-change-orders). - **Start owner pricing from vendor cost:** [Copy vendor pricing to a Prime Change Order](#copy-vendor-pricing-to-a-prime-change-order). - **Understand when values count:** [Understand change status and financial timing](#understand-change-status-and-financial-timing). - **Approve and sign a change:** [Prepare a Change Order for e-signature](#prepare-a-change-order-for-e-signature). - **Report or export:** [Find, group, and export changes](#find-group-and-export-changes). - **Something is blocked:** [Troubleshoot Change Events](#troubleshoot-change-events). ## Create and price changes ### Create a Change Event A Change Event is the folder for one scope issue: vendor cost on one side, owner revenue on the other. Create it as soon as the issue is real, even if nobody has a price yet — that's how the rest of the project sees the exposure. ![The Change Events page uses Change Events, Prime Change Orders, and Vendor Change Orders tabs, with rows or table layouts for the events list.](https://constructable.ai/help-images/financials/change-events.png) 1. Open **Change Events**. 2. Select **Add Change Event**. On a phone, that's the plus button in the header. 3. Enter a specific **Title**. 4. Save. Constructable opens the new event so you can add a **Description**, **Schedule Impact**, line items, and the related Change Orders. Create the event as soon as the issue is real, even if nobody has a price yet. An unpriced change still represents exposure; add line items when pricing arrives. ### Create vendor and Prime Change Orders Vendor and Prime Change Orders are how you price a Change Event: cost against a Commitment, revenue against the owner. Each side has its own panel on the event — **Vendor Change Orders** and **Prime Change Orders** — with one menu that starts a new Change Order or adds lines to one you've already drafted. ![A Draft vendor Change Order shows company, overview, amount, and cost-coded lines.](https://constructable.ai/help-images/financials/change-order-form.png) To start a new Change Order inside the Change Event: 1. On the **Vendor Change Orders** panel, open **Add Vendor Change Order** in the panel header and select **New Vendor Change Order**. For the owner side, open **Add Prime Change Order** on **Prime Change Orders** and select **New Prime Change Order**. 2. Pick the commitment — a subcontract or Purchase Order on the vendor side, the Prime Contract on the owner side. 3. Fill in the first line. Vendor lines take cost code, cost type, **Qty**, **Unit**, **Unit Price**, **Amount**, retention, and subproject. Prime lines take revenue coding, **Qty**, **Unit**, **Unit Price**, owner **Amount**, markup, and Budget impact. The description placeholder asks _What is this line for?_ 4. Select **Add another line item** to start the next line. The line you just finished collapses into a one-row summary showing its cost code, description, and amount, so the sheet stays short no matter how many lines you enter. 5. Keep adding with **Add line item**. Select the pencil on a collapsed line to reopen it, the trash can to remove it, or the up chevron on the open line to collapse it. From the second line on, the footer shows the running total and how many lines you've entered. 6. Select **Save and Close**. The Change Order and every line are created together, so cancelling before you save leaves nothing behind. 7. Attach supporting documents, then review each side independently before approval or signing. Opening another line, collapsing, or saving checks the open line first, so a line with a missing cost code or amount stays open until you fix it. A blank line you added and never filled in is simply dropped. To add lines to a Change Order that's already on the event, open the same **Add Vendor Change Order** or **Add Prime Change Order** menu. Below the new-order option, it lists every Draft Change Order on that side by company, with its CO or PCO number and status. Pick one to open **Add Change Order Line Items** and enter lines the same collapsing way. Change Orders that are out for signing, executed, or void aren't listed, because their lines are locked. When you pick a vendor commitment for a new Change Order, the sheet warns you about two situations. Neither blocks the save: - **This commitment is not fully executed** — _You can still add this change order. Work against an unsigned subcontract can stack up uncommitted._ - **This vendor has an unsigned change order** — _There is already a change order on this commitment that is not fully executed. You can still add another._ Prime Change Orders don't show those warnings. Vendor and Prime amounts don't have to match. Margin, allowances, and costs not billed to the owner legitimately separate them. On a vendor Change Order, the cost-code picker groups codes already on that commitment's SOV under **On this commitment**, so the codes you're already using float to the top. **Qty**, **Unit**, and **Unit Price** are optional. When you enter quantity and unit price, **Amount** follows from that product. Leave them blank for a lump-sum line and type the amount directly. Line items can be added, edited, or removed only while the Change Order is **Draft**. Once it's out for signing, ready to countersign, Fully Executed, or void, the edit pencil disappears from its lines, and a line-item sheet left open shows **Line items can only be changed on draft change orders** in place of a working save. To change the lines, move the Change Order back to Draft first — see [Prepare a Change Order for e-signature](#prepare-a-change-order-for-e-signature). Open **Overview** to change the Change Order **Number**. It has to be a positive whole number; two Change Orders can share a number. On a Fully Executed Change Order the overview, **Billable On**, and executed date are locked for everyone. The two sides take different access, and they're independent of **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. **Create/edit change events** and **Create/edit vendor change orders** let a project engineer run the subcontract side. **Create/edit prime change orders** is what opens the owner side. Keep **Manage financials like change orders, contracts, receipts (excluding financial reporting)** for **Prepare for Esigning** and the rest of the contract workflow. On a Sage-connected project that isn't excluded from sync, **New Prime Change Order** is disabled until the Sage Intacct project estimate has synced into the Budget. The tooltip reads **Prime change orders cannot be created until the Sage Intacct project estimate has synced into the budget.** ### Copy vendor pricing to a Prime Change Order When revenue codes are disabled: 1. On the Change Event's Prime side, select **Copy all from Vendor Change Orders**. 2. Choose the **Prime Commitment**. 3. Select **Copy All**. 4. Review the new Prime Change Order. 5. Review the new Prime Change Order. Constructable copies every vendor line — including **Qty**, **Unit**, and **Unit Price** — and then applies the Prime Contract's Change Order markups the same way **Add Markup Line Items** does. Markups without a cost code are skipped, and it won't add a second set if markup cost codes are already on the order. 6. Adjust revenue coding, descriptions, **Markup Rate**, owner amounts, and Budget impact. The action copies every line from every vendor Change Order on the event; individual-line selection isn't available. Treat the result as a Draft owner-pricing proposal. **Copy all from Vendor Change Orders** doesn't appear when revenue codes are enabled. Build Prime lines directly in that configuration. When you add or edit a Prime Change Order line, **Markup %** is on the form. Progress-bill lines default to 0%; T&M lines pick up the rate from the SOV line. A non-zero markup hides quantity and unit pricing and drives **Amount** and **Budget Impact** from the markup instead. This action copies change pricing, not invoice progress. To seed an Owner invoice from vendor billing, use **Copy Line Items to Prime** on the vendor invoice. ## Status, approvals, and consequences ### Understand change status and financial timing Change document status and financial timing are separate: - **Pending**: the Change Order isn't executed and has no **Billable On** date. - **Billable On**: the date its value begins counting in billable reporting. - **Fully Executed**: the approval and signature lifecycle is complete. - **Void**: the record remains in history but isn't active. When a Change Order becomes Fully Executed, its lines become available on the contract SOV for invoicing. When a Prime Change Order reaches **Billable On**, Constructable creates or updates its Budget Modification and locks it. A change can be executed before it is billable or billable before the final signature. Don't execute a change merely to include it in totals. Use **Billable On** or the Budget's **Show Pending Change Orders in Totals** according to the project's policy. When you execute a Change Order by hand — **Actions** → **Mark as Fully Executed**, or the status badge — a dialog asks for both dates before anything changes. **Executed On** starts at the Change Order's existing executed date or today. **Billable On** starts at its existing billable date, or follows **Executed On** until you edit it. Select **Execute** to mark it Fully Executed with those dates. Pick them carefully: once it's executed, neither date can be edited. ### Prepare a Change Order for e-signature Finish the Draft lines and supporting documents, then use **Actions** → **Prepare for Esigning** to configure approvers, signers, and fields. That action needs **Manage financials like change orders, contracts, receipts (excluding financial reporting)** — Change Order write access is not enough. The document proceeds through **Draft**, **Awaiting Approval** when approvers are configured, **Out for Signing**, **Ready to Countersign**, and **Fully Executed**. Notifications go to each configured participant when their action is due. While the signing flow controls status, don't force a manual status change. A Fully Executed Change Order is locked for every role: its line items, overview, **Billable On**, and executed date can't be changed in place. To correct one, take it out of Fully Executed first: 1. Open the Change Order and select **Actions**. 2. Select **Mark as Draft** to reopen it for edits, or **Mark as Void** to retire it. 3. Make your corrections on the Draft, then execute it again or send it back through e-signing. Moving it takes the same access as executing it: **Create/edit vendor change orders** for a vendor Change Order, **Create/edit prime change orders** for a Prime one. From Fully Executed it can only go to Draft or Void — the signing statuses are disabled with **An executed change order can only move to draft or void.** Two things keep it executed no matter who you are: - It was signed through Constructable e-signing. Status changes are disabled with **This change order is managed by the esigning workflow.** - It's billable and has already been invoiced against. Status changes are disabled with **This change order has already been invoiced against.** Reopening it in Constructable may not update an accounting document already created from the original execution, so coordinate with accounting before you change an executed Change Order. **Download PDF** on a Fully Executed Change Order uses the values from that execution. **Mark as Draft** or **Mark as Void** clears the frozen copy. The next time you mark it **Fully Executed**, **Download PDF** uses the new values. On vendor and Prime Change Order PDFs, **Qty**, **Unit**, and **Unit Price** are omitted when no line has a value, and that width goes to the description. When revenue codes are enabled, a Prime Change Order PDF rolls matching lines up by revenue code; the in-app line items stay at cost-code detail. ### Understand Budget, SOV, invoice, and sync effects - Vendor Change Orders add cost exposure and, once executed, billable SOV lines on the selected Commitment. - Prime Change Orders add owner revenue and, once executed, Prime SOV lines. - A Prime Change Order reaching **Billable On** creates or updates a locked Budget Modification labeled Budget Impact #NNN. - While a Change Order is out for signing, ready to countersign, or Fully Executed, a contract SOV line it revises is locked on the Commitment or Prime Contract. The line shows **This line item is used by a change order that is out for signing or executed, so it cannot be changed.** A void Change Order doesn't hold that lock. - Invoice progress can be entered only against SOV lines available to that contract. - The Budget can include or exclude pending Change Orders from totals without changing their records. Sage Intacct can create purchasing and project-contract change documents from executed Constructable Change Orders according to configured mappings. Some flows create only and don't send later edits. Coordinate corrections with accounting. Fix and retry a failed integration link. Don't create a duplicate Change Order to work around a sync error. ## Find and report ### Find, group, and export changes The Change Events page is three lists — **Change Events**, **Prime Change Orders**, and **Vendor Change Orders** — so you can work one side at a time. You only see the tabs your role can read. From **Change Events**: - On **Change Events**, desktop can switch **Rows view** and **Table view**. Phones stay on rows. The two Change Order tabs always use the table. On a narrow layout the Change Order tabs shorten to **Prime COs** and **Vendor COs**. - In **Rows view**, filter with **Filter change events by title...**. Each row shows **Created**, **Prime**, **Budget**, **Expenses**, and **Days** of schedule impact, and **View Change Event** opens the record. - In **Table view**, search with **Search by change event title, change order title, or company...**. Group by **Change Event**, **Company**, or **Status**, and filter by company and status. - Add the **Created Date** column from the column controls when you need to see how long a change has been sitting. It's hidden until you turn it on; on a row grouped by Change Event it shows the event's own created date. - Export the current table to PDF. - Open **Change Orders Report** for progress, retention, and invoiced-to-date details. **Description** is the line-item description, not the Change Order overview narrative. Group header rows leave that column blank. The empty-state card — **No change events have been created yet.** — appears only when the project has no Change Events and no Change Orders. If Change Orders exist without an event, they still show on the Prime and Vendor tabs. Check filters and access before exporting. Some roles see only **Non-draft or billable** Change Orders, or only those **Related to my company**, so users can report different totals from the same project. The Budget provides separate PDF and CSV exports and a **Show Pending Change Orders in Totals** option. An exported file is a snapshot and doesn't update. ## Troubleshooting ### Troubleshoot Change Events #### Change Events or one side of the event is missing Confirm the Financial package and the matching read permission: **Read change events**, **Read vendor change orders**, or **Read prime change orders**. A tab you can't read doesn't appear. Company restrictions (**Related to my company**) and **Status access** of **Non-draft or billable** can further limit results. If you have none of those read permissions, the page shows **Access denied. You don't have permission to view change events or change orders.** #### Pricing isn't known yet Create the Change Event anyway and add pricing when it arrives so the event remains visible as exposure. #### New Prime Change Order is blocked on a Sage project The participating Sage project has no Budget lines from the Sage Intacct project estimate. Sync the estimate, or confirm whether **Exclude from Sage Intacct Sync** should apply. The disabled tooltip is **Prime change orders cannot be created until the Sage Intacct project estimate has synced into the budget.** #### Copy all from Vendor Change Orders is missing Revenue codes are enabled. Build the Prime Change Order lines directly. #### Copied Prime totals are higher than vendor totals Review **Markup Rate** and each owner amount. Copied values are a starting point, not a required match. #### No cost codes appear for a Prime line When the project's revenue codes aren't mapped to cost codes, the line-item picker shows **No cost codes are mapped to this revenue code on this project.** instead of an empty list. Add the mapping under **Project Settings** → **Revenue Code Mappings**, then return to the line. #### I can't edit, add, or delete lines on a Change Order Line items change only on a **Draft**. If the Change Order is Fully Executed, use **Actions** → **Mark as Draft** first. If that option is disabled, hover it: the Change Order was signed through e-signing, or it's billable and already invoiced against, and either one keeps it executed. Record the correction on a new Change Order instead. #### Change lines aren't available for invoicing Confirm the Change Order is Fully Executed and its lines were added to the intended contract SOV. #### I can add vendor Change Orders but not a Prime Change Order That's the expected result of having **Create/edit vendor change orders** without **Create/edit prime change orders**. The owner side is a separate permission. **Prepare for Esigning** still needs **Manage financials like change orders, contracts, receipts (excluding financial reporting)** even when you can create both sides. #### Download PDF doesn't match the Change Order I just edited If the Change Order is Fully Executed, **Download PDF** is the frozen copy from execution. Mark it **Draft**, finish the edits, and mark it **Fully Executed** again when the PDF should reflect the new values. #### A colleague sees more Change Orders Compare vendor and Prime read permissions, **Related to my company**, **Status access**, filters, and whether the view includes only billable changes. --- # How to use Non-Committed Costs in Constructable > Use this guide to record Receipts for project costs that don't belong to a Commitment, import receipt documents, verify Budget and report effects, export the log, and understand QuickBooks or Sage links. Source: https://constructable.ai/help/non-committed-costs Use this guide to record Receipts for project costs that don't belong to a Commitment, import receipt documents, verify Budget and report effects, export the log, and understand QuickBooks or Sage links. ## Start here - **Record one cost:** [Add a Receipt](#add-a-receipt). - **Import receipt documents:** [Import Receipts](#import-receipts). - **Find or export costs:** [Review and export the Receipts log](#review-and-export-the-receipts-log). - **Understand financial impact:** [Use Receipts in budgets and reports](#use-receipts-in-budgets-and-reports). - **Open the accounting record:** [Understand accounting sync](#understand-accounting-sync). - **Something is missing or locked:** [Troubleshoot Non-Committed Costs](#troubleshoot-non-committed-costs). ## Record and import costs ### Add a Receipt Use a Receipt when the cost isn't progress billing against a Commitment SOV. Examples include fuel, payroll, expenses, and one-off vendor bills. 1. Open **Non-Committed Costs**. 2. Select **Add Receipt**. 3. Enter the vendor, date, reference, and expense type. 4. Add one or more cost lines. 5. Select the Budget Code and subproject for each line. 6. Enter the amount, description, and memo. 7. Attach the source document when available. 8. Save and verify the cost under the intended Budget Code. Don't create a Receipt for a subcontractor invoice that should track progress, retention, and approval against a Commitment. Use [How to use Invoices](https://constructable.ai/help/invoices#create-and-submit-a-subcontractor-invoice). ### Edit or delete a Receipt line Use the pencil action on a line to edit it and the trash action to delete it. Confirm the source document, coding, and accounting link before changing an existing cost. A lock icon means the line can't be edited. Its message instructs you to add negative line items to reduce the Budget instead of rewriting the locked value. Preserve the original line and record the correction separately. If the cost already has an accounting counterpart, coordinate the correction with accounting. Changing or deleting the Constructable record doesn't guarantee the accounting transaction changes. ### Import Receipts To import line items: 1. Open **Non-Committed Costs**. 2. Select **Import CSV**. 3. Upload the receipt file. 4. Review detected values and conflicts. 5. Confirm the import. 6. Open the resulting Receipt lines and verify vendor, date, Budget Code, subproject, amount, description, and memo. You can also review Receipt import runs under **My Imports**. Upload completion is not final verification; check the run status and at least one created or updated record. Imports create or update Constructable records from files. They don't establish a live QuickBooks or Sage link. ## Review, report, and export ### Review and export the Receipts log The Non-Committed Costs grid shows Receipt, Cost Code, Vendor, Sub Project when enabled, Date, Amount, Description, and Memo. Use: - Search and filters to narrow by Receipt, Cost Code, Vendor, Sub Project, or Date. - Grouping by Receipt, Cost Code, Vendor, or Sub Project. - The grid PDF export for a current **Receipts Log** snapshot. Check filters and grouping before exporting. A PDF doesn't update after a Receipt changes. The **Integrations** column appears when QuickBooks Online or Sage Intacct is enabled. Its control is separate from the PDF export. ### Use Receipts in budgets and reports Saved Receipt lines affect project cost under their Budget Codes: - The Budget includes them in **Non-Committed Costs** and Actual Costs. - **Projected Costs Report** includes expected project costs from Commitments, Change Orders, and Receipts. - **Actual Costs Report** includes recorded Receipt costs with invoice activity. - **Reports** → **Non-Committed Costs** compares Original Budget, Modifications, Budget, Actual Cost, Cost Remaining, Forecast at Completion, and Over/Under by Budget Code. The **Actual Costs Report** groups by **Billing Month** — the month the cost was billed in, taken from the invoice's billing period, rather than the month somebody happened to enter it. That's the number that reconciles against what you sent the owner. A receipt uses its receipt date. Filter reports to the same Budget Codes, subprojects, and dates before comparing totals. Payroll costs from time cards land here too. When a time card line has a project, a cost code, and an hourly cost rate for that employee, and your organization has **Automatically Sync Time Cards to Non-Committed Costs** enabled, the labor cost appears as a payroll cost against that budget code without anyone re-entering it. See [Time Cards](https://constructable.ai/help/time-cards#send-time-card-hours-to-non-committed-costs). If the required Budget value is locked, don't unlock approved history merely to fit the cost. Add the appropriate Budget Modification and keep the Receipt coded to the correct current Budget Code. ## Accounting and troubleshooting ### Understand accounting sync When a Receipt has an active accounting link, select the service control in **Integrations** to open the linked accounting record in a new browser tab. Configured sources can include: - QuickBooks Bills and Purchases imported as Receipts. - Sage Bills or general-ledger cost imported as Receipts. No service control means the integration isn't enabled for the organization or no active link exists for that Receipt or line. Accounting links can be pending, synced, suppressed, retired, or in error. Fix the source problem and retry the existing link. Don't create a second Receipt while a link is pending or failed. Project-level **Exclude from QuickBooks Online Sync** or **Exclude from Sage Intacct Sync** settings can intentionally prevent records from participating. ### Troubleshoot Non-Committed Costs #### Non-Committed Costs is missing Confirm the organization has the Financial package and the user has **View receipts**. Financial Tools don't appear without the package. #### Add Receipt or edit actions are missing The user needs **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Mobile places actions in the compact header. #### A line shows a lock Don't overwrite it. Add a negative correction line or the appropriate Budget Modification so the original cost remains visible. #### The accounting control is missing Confirm QuickBooks or Sage is enabled, the project participates in sync, and the Receipt or its line has an active integration link. #### The Receipt is absent from a report Check its Budget Code, subproject, date, report filters, access, and whether the report is showing projected cost, actual cost, or the combined Budget view. #### An imported Receipt looks incomplete Open the import run, review conflicts and status, then inspect the created or updated Receipt lines. File upload alone doesn't verify the result. --- # How to manage bids in Constructable > Use this guide to create Bid Packages, build bidder lists, send invitations, compare responses, and close or award a solicitation. If you are responding to an invitation, use How to bid in Constructable. Source: https://constructable.ai/help/bid-management Use this guide to create Bid Packages, build bidder lists, send invitations, compare responses, and close or award a solicitation. If you are responding to an invitation, use [How to bid in Constructable](https://constructable.ai/help/bidding). ## Start here - **Create and issue a package:** [Create a Bid Package](#create-a-bid-package), [select bidders](#select-bidders), then [send and track invitations](#send-and-track-invitations). - Review pricing: [Review received bids](#review-received-bids). - **Enter a proposal received by PDF:** [Import a bid with Chat](#import-a-bid-with-chat). - **Finish the solicitation:** [Create a Commitment or close the package](#create-a-commitment-or-close-the-package). - **Something is missing or blocked:** [Troubleshoot Bid Management](#troubleshoot-bid-management). ## Create and distribute ### Create a Bid Package Create one Bid Package for each procurement effort. 1. Open Preconstruction → **Bid Management**. 2. Select **Add Bid Package**. 3. Enter the package name and save. 4. On **Bid Package**, add the manager, due date, project description, instructions, and attachments. 5. Add bid scopes when bidders need to price separate portions of work. Without scopes, each bidder enters one amount and a Scope narrative. With scopes, each assigned scope has its own amount and notes. Settle the scopes before inviting bidders; the bulk scope controls in **Distribution** are unavailable when the package has no scopes. Use **Actions** → **Rename Bid Package** to correct the title without creating another package. ### Select bidders **Select Bidders** uses subcontractor companies already in the organization directory. 1. Open the package and select **Select Bidders**. 2. Search, filter, or group by company, trade, or tag. 3. Select the companies to invite. 4. Select **Add Selected to Bid List**. 5. Assign scopes when the package uses them. The bid uses each company's designated bidding contacts. A company is absent when it is not a subcontractor, is not in the directory, or is already on this package's bid list. Tags help find groups of companies; scopes tell bidders what to price. ### Send and track invitations ![Desktop: Bid Distribution lists invited companies with bid statuses, scopes, contact history, and bulk invitation actions.](https://constructable.ai/help-images/preconstruction/bid-invitations.png) 1. Open **Distribution**. 2. Filter or group by company, scopes, trades, or tags. 3. Select the intended bidders. 4. Select **Send bid invite(s)...**. 5. Review the recipients and message, then send. Use **Send message** for follow-up without issuing another invitation. **Bid Package Sent** is the earliest invitation delivery; it stays blank until you've invited that company. Select **Last Contacted** to open that company's bid on the **Correspondences** tab, which lists every message sent to its contacts. Filter by recipient or sent date, and select a message to read the email that went out. If nothing has gone out yet, it reads **No messages have been sent to any contacts at this company.** Statuses progress through **New**, **Sent**, **Will Bid**, **Will Not Bid**, and **Received**. Select rows and use **Export Emails**. The label includes how many rows you selected. The file is an Excel sheet of company, contact name, email, and phone numbers. The bell on one bid changes your own notification level for that bid. It does not change bidder access, delivery, or status. Removing a company from the bid list removes that bid record, so review any submitted information first. ## Review and award ### Review received bids ![Desktop: Received Bids compares bidder companies, submitted amounts, scopes, and bid-review actions.](https://constructable.ai/help-images/preconstruction/review-bids.png) 1. Open **Received Bids**. 2. Filter or group by company, scope, or trade. 3. Open a company. The **Overview** tab holds its amounts, notes, attachments, contacts, comments, and activity; **Correspondences** holds the messages you've sent that company. 4. Select **Download PDF** when you need a review copy. Bidder PDF and image attachments are included behind cover sheets in the download. Open other file types from the bid itself. **Will Bid** records intent; only **Submit Bid** changes the status to **Received**. ### Import a bid with Chat Use the **Import bid** skill when a proposal PDF should land on an existing bid. Package managers with bid write access can import a subcontractor's PDF; invited bidders with **Respond bid requests sent to me** can import their own. 1. Create the Bid Package and add the subcontractor to its bid list — or, as a bidder, open the invitation that already lists you. 2. Open **Agent**. 3. Select **Use a Skill** → **Import bid**. 4. Attach the proposal PDF and ask Agent to import it. 5. Answer questions when the project, company, package, bid, or scope match is ambiguous. 6. Open the updated bid and verify every amount, note, attachment, and the **Received** status against the PDF. The skill description reads **Import a bid PDF into the matching bid.** It updates an existing bid; it does not create the package, company, or bid record. The selected skill remains active in that Chat until you select **Remove active skill**. See [Import a bid](https://constructable.ai/help/chat#import-a-bid). ### Create a Commitment or close the package If your organization has the Financial package and you have Commitment permissions, select eligible bids in **Received Bids**, then select **Create Commitment**. A received bid does not create a Commitment automatically, and bids already linked to one cannot be selected again. Use the package actions for the solicitation itself: - **Close Bid Package** stops new or changed responses while preserving details and bid history. - **Open Bid Package** restores responses and access for active bidding contacts. - **Rename Bid Package** changes only the title. - **Delete Package** permanently removes the package and its invitation and response history. Closing revokes project access from a bidder whose only open invitation was this package. Access remains when the bidder has another open package or a non-Bidder project role. Close rather than delete when you need to preserve the procurement record. ## Access and platforms - **View bids** controls access and can be limited to **All Bids** or **Only bids I'm invited to**. - **Invite new bidders, add and change bid packages, message bidders** controls package management. - Bid Management is available when the organization has Project Management enabled. - Creating a Commitment additionally requires the Financial package and Commitment permissions. - Web and native layouts are available. Use desktop web for dense grids, bulk selection, filters, and PDF review. ## Troubleshoot Bid Management ### Bid Management is missing Confirm the project, the Project Management package, **View bids**, and the bid-management permission. ### A company is missing from Select Bidders Confirm the company exists in the organization directory, is a subcontractor, has the intended bidding contacts, and is not already on the package. ### An invitation cannot be sent Select at least one bidder in **Distribution**, verify its bidding contact address, and inspect **Last Contacted** delivery history before resending. ### A bid is missing from Received Bids Confirm the bidder selected **Submit Bid**. **Will Bid** alone does not submit pricing. ### Create Commitment is missing Confirm the Financial package, your Commitment permissions, and that the selected bid is not already linked to a Commitment. ### A bidder lost access after closing The closed package was their last open invitation and they had only the Bidder role. Reopen it or add them to another open package when they still need bidder access. --- # How to bid in Constructable > Use this guide when a general contractor invites your company to a Bid Package. It covers reviewing the request, recording intent, submitting pricing, updating a response, and bidder access. Source: https://constructable.ai/help/bidding Use this guide when a general contractor invites your company to a Bid Package. It covers reviewing the request, recording intent, submitting pricing, updating a response, and bidder access. ## Start here - **Review an invitation:** [Open the Bidder Portal](#open-the-bidder-portal). - **Tell the general contractor whether you will bid:** [Respond to the invitation](#respond-to-the-invitation). - **Send pricing and attachments:** [Submit or update a bid](#submit-or-update-a-bid). - **The invitation or controls are missing:** [Troubleshoot bidding](#troubleshoot-bidding). ## Review and respond ### Open the Bidder Portal 1. Open Preconstruction → **Bidder Portal**. 2. Select an invitation assigned to your company. 3. Review the package overview, due date, instructions, assigned scopes, and **Bidding Resources**. **Bidding Resources** is how you get the bid package without leaving the invitation. **View Drawings**, **View Specs**, **View Documents**, and **View Photos** open those tools in Constructable. **Download All** builds a ZIP titled **Bidding Resources** with drawings, specs, documents, and photos. While it runs you'll see **Starting download...** and then `N of M items`. When it's ready, **Download** saves the archive; **Generated at** and **Regenerate export** let you refresh it. **Download All** needs **Generate closeout packages**, which every default role has. The Bidder Portal shows your company's invitations without exposing the general contractor's Bid Management workspace. It appears when your company is on a bid list for the project and your role can view invited bids. ### Respond to the invitation Select: - **Will Bid** to record your intent and open the submission form. - **Will Not Bid** to decline and stop follow-up email for that package. You can change either choice while the Bid Package is open. A closed package remains viewable, but its response controls are disabled. > **Note:** **Will Bid** does not submit pricing. The general contractor sees the bid as **Received** only after you select **Submit Bid**. ### Submit or update a bid 1. Open the invitation and select **Will Bid**. 2. Enter the required amount and notes. 3. If scopes are assigned, complete the amount and notes for each scope. 4. Add supporting attachments. 5. Select **Submit Bid**. 6. Review the confirmation and submitted values. Submission changes the status to **Received**. While the package remains open, select **Update Bid** to correct amounts, notes, or attachments. Emailing a proposal to the package manager does not submit it in Constructable. Use **Submit Bid** so the response appears in **Received Bids**. You can also open **Agent** and select **Use a Skill** → **Import bid** to load your own proposal PDF into that bid — you need **Respond bid requests sent to me**. If the manager imports your PDF, confirm the values they recorded before relying on the bid. ## Access, notifications, and platforms - **View bids** may be limited to **Only bids I'm invited to**. - **Respond bid requests sent to me** enables intent and submission controls. - Your company must be on the package's bid list. Any active user linked to that company on the project can open and respond to the package, not only a named bidding contact. - Bidder Portal has web and native layouts. Desktop web is easiest for reviewing large attachments; mobile and native layouts support reviewing and responding. - Invitations and follow-up messages are sent to the bidding contact address. Your account notification preferences do not change whether your company is on the bid list. Closing a package prevents submissions and updates. If it was your only open invitation and you have only the Bidder project role, closing can also remove your project access. Reopening the package or receiving another open invitation restores bidder access. ## Troubleshoot bidding ### Bidder Portal is missing Confirm you are in the intended project, your company is on at least one Bid Package, and your role has **View bids**. You do not have to be a named bidding contact if your user is linked to the bidding company. ### The invitation is missing Ask the package manager to confirm your company is on that package. Any active user linked to that company on the project can see it, even if they were not named as a bidding contact. ### The response controls are disabled The package is probably closed. Contact the package manager if you need it reopened. ### My bid is not marked Received Open the response and select **Submit Bid**. Choosing **Will Bid** or emailing a proposal does not complete submission. ### I found an error after submitting Select **Update Bid** while the package is open. If it is closed, contact the package manager before the correction deadline. ### I chose Will Not Bid by mistake Open the invitation and change your intent while the package remains open. --- # How to create Takeoffs in Constructable > Use this guide to organize an estimate, measure or count from project drawings, review totals and costs, and export the result. Source: https://constructable.ai/help/takeoffs Use this guide to organize an estimate, measure or count from project drawings, review totals and costs, and export the result. ## Start here - **Build an estimate:** [Create a Takeoff Set](#create-a-takeoff-set). - **Measure or count:** [Place Takeoff marks](#place-takeoff-marks). - **Share the result:** [Review and export](#review-and-export). - **A set or total is wrong:** [Troubleshoot Takeoffs](#troubleshoot-takeoffs). ## Set up and measure ### Create a Takeoff Set 1. Open Preconstruction → **Takeoffs**. 2. Select **New Takeoff Set** and enter a specific name. 3. Open the set in the drawing viewer. 4. Add categories for major groups of work. 5. Add items under each category. 6. For each item, choose **Linear Feet**, **Area**, or **Quantity**. 7. Set its color and, when needed, a multiplier and unit cost. Area items use square feet or square yards. Quantity items use circle, square, or cross markers. A multiplier converts a linear or area total into a multiplied unit. An item's unit cannot be changed after creation. Duplicate the item when you need a similar setup with another unit, and choose whether to copy its existing measurements. ### Place Takeoff marks 1. Open the Takeoff Set and select the intended item. 2. Navigate to the correct published sheet and revision. 3. For **Quantity**, place a marker at every counted location. 4. For **Linear Feet** or **Area**, verify or calibrate the scale, then trace the work. 5. Finish each multi-point measurement before changing tools or sheets. 6. Review the current, sheet, and drawing totals as you work. Every mark belongs to the item and drawing revision active when it was placed. Marks are not carried automatically to a new revision. Counts do not use scale; linear and area measurements do. For calibration, viewer controls, and revision behavior, see [Measuring and calibrating drawings](https://constructable.ai/help/drawings#measuring-and-calibrating-drawings). ## Review and export ### Review and export Review the selected categories, items, sheets, revisions, units, multipliers, unit costs, and totals before sharing. - Export a category or full set to **CSV** for category, item, total, unit, multiplier, multiplied total, unit cost, and total cost. - Export to **PDF** when the recipient needs marked locations on the selected sheets. - Include the Takeoff legend when the PDF must explain item colors and symbols. See [Creating and exporting drawing takeoffs](https://constructable.ai/help/drawings#creating-and-exporting-drawing-takeoffs) for detailed PDF selection behavior. Rename a set when only its label is wrong. Deleting a Takeoff Set permanently removes its categories, items, and drawing markup. ## Access and platforms - **View takeoffs** allows review. - **Add new takeoffs, make changes to existing takeoffs, share takeoffs** controls creation, editing, and sharing. - Takeoffs are available when the organization's Project Management package is enabled. - A set can be created before drawings exist, but useful drawing work requires published drawing pages and drawing access. - Web and native layouts are available. Desktop web is best for detailed plan work and broad exports. ## Troubleshoot Takeoffs ### Takeoffs is missing Confirm the intended project, the Project Management package, and the Takeoffs read or write permission. ### A Takeoff Set will not open Confirm the project has a published drawing page, that you can view the drawings, and that you have Takeoffs write access. ### A total looks wrong Check the active item, unit, multiplier, sheet revision, and scale. Counts ignore scale; linear and area totals depend on it. ### Marks disappeared after a drawing revision Switch back to the revision where the marks were created. Measure affected work again on the new revision. ### I chose the wrong unit Duplicate the item with the correct unit and decide whether its measurements should also be copied. ### An export contains the wrong work Review the selected sheets and items before exporting. Takeoff exports can include incomplete or private estimating work. --- # How to set up a project in Constructable > Use this guide to create a project, define its identity and structure, configure project-specific tools and integrations, add project participants, export records, and hide completed work. Shared catalogs and defaults belong in Organization Settings. Source: https://constructable.ai/help/project-setup Use this guide to create a project, define its identity and structure, configure project-specific tools and integrations, add project participants, export records, and hide completed work. Shared catalogs and defaults belong in [Organization Settings](https://constructable.ai/help/organization-settings). ## Start here - **Create a project:** [Create and identify the project](#create-and-identify-the-project). - **Reuse a job as a starting point:** [Use a project as a template](#use-a-project-as-a-template). - **Organize drawings and work:** [Configure Drawing Areas and Sub Projects](#configure-drawing-areas-and-sub-projects). - **Add locations and the team:** [Configure locations and people](#configure-locations-and-people). - **Set project-specific tools:** [Configure project tools and integrations](#configure-project-tools-and-integrations). - **Finish or archive setup:** [Export records](#export-project-records) or [hide the project](#hide-or-unhide-a-project). - **Remove a project created by mistake:** [Delete a project](#delete-a-project). - **A control is missing:** [Troubleshoot project setup](#troubleshoot-project-setup). ## Create and identify ### Create and identify the project 1. Open **All Projects**. 2. On web, select **New Project**. To start a template instead, open **New Project Options** next to that button and select **New Template Project**. On mobile or native, open the actions menu and select **Add Project** or **Add Template Project**. 3. Enter the required **Project Name** and optional **Project Number**. 4. When you're creating a regular project and the organization already has at least one template, optionally choose a **Template**. The placeholder is **None**. Creating a template project hides that picker — templates don't copy from other templates. 5. If an accounting integration is connected, choose whether to **Exclude from [integration name] Sync**. 6. Save. Constructable opens the new project automatically. 7. Open **Project Settings** → **General** → **General Project Settings** → **Edit**. 8. Confirm **Name**, **Project Number**, and **Project Cover Image**, then select **Save Project Settings**. 9. On **Project Info**, edit the address card and add **Stage**, **Address 1**, **Address 2**, **City**, **State**, and **Postal Code** as needed. **Stage** picks from [Organization Settings → Project Stages](https://constructable.ai/help/organization-settings#maintain-project-stages). If your role has **Update organization-level settings**, you can add a stage from that picker and it lands in the organization catalog. 10. Edit the date cards separately — **Start**, **Completion**, and **Warranty** — and save each with **Save Project Info**. - **Start:** **Estimated Start Date**, **Actual Start Date** - **Completion:** **Estimated Completion**, **Actual Completion**, **Substantial Completion** - **Warranty:** **Warranty Start**, **Warranty End** Only Project Name is required. The name-and-number combination must be unique in the organization. The cover image accepts JPEG or PNG and recommends 1920 × 1080 pixels. On **All Projects** table view, those dates can appear as optional columns under **Project Status**: **Start Date**, **Actual Completion Date**, **Substantial Completion Date**, **Warranty Start Date**, and **Warranty End Date**. They start hidden; turn them on from the column picker. A new project starts with default project Cost Codes enabled and no selected Budget Type, unless you copied those choices from a template. Financial setup is a separate task after that. Card view on **All Projects** groups work into **Recent**, **Active**, **Templates**, and **Hidden**. Each card shows the cover photo, the project's stage when one is set, the name with your unread notification count, the project number, and the city and state — or **No address set**. A template card carries a **Template** badge. When your organization has project management tools, the bottom of the card counts **Open RFIs** and **Open submittals** so you can see which job needs attention before you open it. **Recent** on this page skips templates; if you just visited one, look under **Templates**. ### Use a project as a template A template is a real project you keep around so the next job doesn't start empty. Mark one when the cost codes, folders, lists, meetings, and approval paths are the shape you want every similar job to inherit — then create new projects from it instead of rebuilding that setup by hand. To turn an existing project into a template: 1. Open **Project Settings** → **General** → **General Project Settings**. 2. Enable **This is a template project**. The toast reads **This project is now a template.** 3. The project moves to the **Templates** section on **All Projects**. Turn the toggle off when it should be a live job again. The toast reads **This project is no longer a template.** To start a live job from a template, create a regular project and pick that template in **Template**. The new project is not itself a template, and it keeps **Budget Type** at none even when the source had a budget. What copies into the new project: - Enabled project cost codes - Bid packages and scopes, reset to open, without bids - Meeting structure, without finished-meeting notes - Inspection structure, without inspection results - Lists (the list itself, not the items), plus any custom field layouts on those lists - Incident types, which record types are on, and the form layouts on those types — not the incident records - Active work plan types and their custom field layouts — not the work plans themselves - Folders and documents you can access, following the same sharing rules as importing folders - Current Project Team memberships, people settings, locations, and drawing tags - Financial settings, invoice approval workflow, RFI settings, Daily Log settings, and Submittal settings including approval templates - The Daily Log setup: hidden sections and fields, custom fields with their options, and custom sections — not the Daily Logs themselves What does not copy: list items, bids, inaccessible or private folders, archived or deleted source rows, and budget line amounts. Creating either kind of project still needs **Create new projects** with **Level of project access** → **All Projects**. Marking a project as a template needs **Update existing projects, hide projects**. You now have a reusable starting point, and the next project inherits the structure instead of a blank setup. ### Choose Organization or Project Settings Use **Project Settings** for the open project's cover image, address, Sub Projects, locations, people, Cost Codes, financial choices, integration inclusion, exports, and visibility. The left nav groups the pages: - **General:** **General Project Settings**, **Project Info**, **People**, **Locations**, **Drawing Tags**, **RFI Settings**, **Daily Log Settings**, **Submittal Settings**, **Closeouts** - **Financial:** **Financial Settings**, **Subcontractor Invoice Approvals**, **Cost Codes**, **Revenue Code Mappings** - **Advanced:** **Integrations**, **Visibility**, **Delete Project** You only see the pages your role can open; if none are available the nav reads **You do not have access to any project settings.** **RFI Settings** appears when the project-management package is on and your role has **Update existing projects, hide projects**. **Submittal Settings** needs **Create new submittals, make changes to existing submittals, distribute and redistribute**. **Daily Log Settings** needs **View daily logs** — that's the project's **Default distribution recipients** and its **Custom fields** layout, not the organization-wide section toggles. Changing the layout needs **Manage daily log settings, including custom fields**. Organization **Daily Log Settings** lives under **Organization Settings** → **Field**. The same RFI and Submittal pages remain reachable from **RFIs Menu** → **RFI Settings** and **Submittals Menu** → **Submittals Settings**; those links open the Project Settings leaf when you can get there. Use **Organization Settings** for shared Cost Codes, Cost Types, Equipment, Trades, Bid Tags, Project Stages, Financial Settings, Document Signing Settings, email sign-off, dashboard presentation, API Access, and organization integrations. Shared catalogs are not the same as project selection. Adding an organization Cost Code does not necessarily make the project use it; configure the project's **Cost Codes** separately. ## Build the project structure ### Configure Drawing Areas and Sub Projects ![Desktop: Project Settings shows the General Project Settings summary and configured project Locations.](https://constructable.ai/help-images/project-setup/drawing-areas-subprojects.png) Drawing Areas separate plan collections. Sub Projects group the project work. You set them up in different places. #### Drawing Areas Drawing Areas are managed on the Drawings page, not in Project Settings, and need drawing-management access. 1. Open **Drawings** and select **Drawings Menu**. In the native app, tap the **⋯** button. 2. Under **Drawing areas**, select **Add drawing area**. 3. Enter an **Area name** and select **Create area**. Once the project has more than one area, **Edit drawing areas** in the same menu lets you rename, reorder, or remove areas. At least one Drawing Area is required, and an area with published sheets can't be removed. See [Organizing drawing areas, disciplines, and sheets](https://constructable.ai/help/drawings#organizing-drawing-areas-disciplines-and-sheets). #### Sub Projects 1. Edit **General Project Settings**. 2. Enable **This project has Sub Projects** for phases or other project groupings. 3. Enter a unique **Sub Project Name** and use **Add Sub Project** for more. 4. Select **Save Project Settings**. Once the project has Sub Projects, the checkbox locks and cannot turn that structure off. Existing Sub Projects remain fixed; newly entered rows can be removed before saving. ### Configure locations and people Use **Locations** to build the job's place hierarchy, such as building, floor, area, and room. While editing, use a location's three-dot menu → **Rename** to change its label without moving it in the hierarchy. When the Financial package is enabled, **People** assigns the project's **Architect** and **Prime Change Order Third Signer**. The Architect name and address appear on the Payment Application cover page. **People** does not add project participants. Open **Management Tools** → **Team** to add companies and users from the organization directory. See [Team](https://constructable.ai/help/team). ## Configure project tools ### Configure project tools and integrations Review the pages available to your package and permissions. Some leaves appear only with the matching package or permission. - **Drawing Tags** maintains tags for project drawings. - **RFI Settings** sets the project's default RFI manager and subscribers. The same page is **RFIs Menu** → **RFI Settings**. - **Daily Log Settings** sets **Default distribution recipients** for this project's Daily Log distributions, and under **Custom fields** hides sections and fields, adds custom fields, and builds custom sections for this project's logs. See [Customize Daily Logs for one project](https://constructable.ai/help/daily-logs#customize-daily-logs-for-one-project). - **Submittal Settings** sets numbering, approval templates, packages, and defaults. The same page is **Submittals Menu** → **Submittals Settings**. - **Closeouts** generates project handoff packages. - **Integrations** includes or **Exclude from [integration name] Sync** for an organization integration. - **Revenue Code Mappings** appears when Revenue Codes are enabled. The organization integration must be connected in **Organization Settings** before project inclusion can work. Excluding one project does not disable synchronization for the organization. Tool-specific permissions still apply. Project write access does not grant Financials, Drawings, RFIs, Submittals, Daily Logs, or integration access. ### Configure Cost Codes and Financial Settings ![Desktop: Project Settings shows the project's Budget Type in Financial Settings with Cost Codes below.](https://constructable.ai/help-images/project-setup/financial-settings.png) 1. Open **Project Settings** and select **Financial**. 2. Use **Cost Codes** to configure the current project's selection from the organization catalog. 3. Use **Financial Settings** for project-specific financial choices. 4. Under **Subcontractor Invoice Approvals**, add sequential approvers when vendor invoices should wait on named people in order. The empty copy is **No sequential approvers. Anyone with Approve invoices can approve submitted invoices.** See [Configure subcontractor invoice approvals](https://constructable.ai/help/invoices#configure-subcontractor-invoice-approvals). 5. Use **Revenue Code Mappings** when available. 6. Save each section before moving on. Financial changes require **Manage financials like change orders, contracts, receipts (excluding financial reporting)** in addition to project settings access. Configuring the approval list needs **Manage invoice approval workflows**. See [Budget](https://constructable.ai/help/budget). ## Maintain and close out ### Export project records Project record exports run through Closeout, which builds a ZIP in the background instead of asking you to sit and wait with a tab open. 1. Select **Closeouts** in Project Settings. 2. Select **Open Closeouts**. 3. Select **Generate Closeout**, tick the sections you need, and generate. You'll get an email when the archive is ready, and the tile on the Closeout page carries the download. Each section you can tick depends on your read access to that tool, so the person producing a turnover package needs source access as well as Closeout access. For the full workflow — planning a package, tracking generation, reviewing the ZIP, and exporting a single tool from its own page — see [Closeout](https://constructable.ai/help/closeout). ### Delete a project Deleting a project takes it out of Constructable for everyone, along with everything filed under it. It's an Admin-only action for exactly that reason, and it's almost never the one you want — if the job is simply finished, [hide it](#hide-or-unhide-a-project) instead. 1. Open **Project Settings** and expand **Delete Project**. 2. Select **Delete Project**. 3. Read the confirmation, which names the project: "Delete Project "Riverside Tower"?" 4. Select **Delete Project** again to confirm. We return you to the organization's project list, and the project disappears from **All Projects**, the project switcher, search, and reporting. > **Warning:** There's no in-app undo and no hidden-projects style recovery view. Once a project is deleted, restoring it means contacting Constructable support — so use **Hide This Project** for finished work and save deletion for projects created by mistake. #### What's the difference between hiding and deleting? Hiding tidies a project out of the lists while leaving everything reachable; you can bring it back yourself with **Show Hidden Projects**. Deleting removes the project and its records from the product, and you can't reverse it on your own. #### Why don't I see the Delete Project panel? Only roles with **Delete projects** see it, and by default that's Admin alone. Project write access lets you hide a project but not delete one. ### Hide or unhide a project To hide: 1. Open **Project Settings** → **Visibility**. 2. Select **Hide This Project** and confirm. To restore: 1. Open **All Projects** in card view. 2. Open the actions menu and select **Show Hidden Projects**. 3. Open the project. 4. Select **Project Settings** → **Visibility** → **Unhide This Project** and confirm. Hiding removes the project from normal project lists and the switcher. It does not delete its RFIs, drawings, invoices, or other records. Hidden projects are also left out of Global Reports, including WIP and All Lists. ## Access and platforms - **Create new projects** controls **New Project** / **Add Project** and **New Template Project** / **Add Template Project**. Creating a project also requires **Level of project access** → **All Projects**. **Only projects I belong to** hides the creation action. - **Update existing projects, hide projects** controls Project Settings and the **This is a template project** toggle. - **Add people to the project team** is independent of project write and controls staffing a Project Team. - **Delete projects** is nested under project write and Admin-only by default. Project write access does not include it. - Built-in Admin, Manager, and Employee roles receive project write access by default, but organizations can customize editable permissions. - Web labels the action **New Project**, with **New Template Project** under **New Project Options**; mobile and native use **Add Project** and **Add Template Project** in the actions menu. - Tool settings, exports, and package-specific blocks require their own access. - **People** requires the Financial package. **Revenue Code Mappings** requires Revenue Codes. ## Troubleshoot project setup ### New Project or Add Project is missing Confirm **Create new projects** and **Level of project access** → **All Projects**. **Only projects I belong to** hides the creation action. On mobile or native, use the **All Projects** actions menu. ### The Template picker is missing The **Template** field appears only when you are creating a regular project and the organization already has at least one non-hidden template. **New Template Project** / **Add Template Project** creates a template, not a copy of one. ### A project name is rejected Another project has the same name-and-number combination. Change either value. ### A Drawing Area cannot be removed Drawing Areas are removed from **Drawings Menu** → **Edit drawing areas** on the Drawings page. An area can't be removed while it contains published sheets — move or unpublish them first — and the project's last remaining area can't be removed at all. ### Drawing Areas or Sub Projects cannot be turned off Drawing Areas have no on/off setting. Every project has at least one, and you can remove extra areas from **Edit drawing areas** on the Drawings page. Sub Projects can't be turned off once the project uses them: the **This project has Sub Projects** checkbox locks, and you can add new Sub Projects but not remove existing ones. ### A settings section is missing Check project settings access, the tool's own permission, package availability, organization feature settings, integration connection, and browser support. ### People is missing The organization does not have the Financial package, or your access does not expose that section. ### A connected integration is not syncing this project Confirm the organization integration is enabled and has no **Auth Error**, then clear **Exclude from [integration name] Sync** in this project's **Integrations** section. ### A hidden project is missing Open **All Projects** in card view and select **Show Hidden Projects** from the actions menu. A hidden project also does not appear in Global Reports until you unhide it. --- # How to use Global Directory in Constructable > Use this guide to maintain the organization-wide companies and people that can be added to projects. Global Directory is the shared contact pool; adding someone here does not add them to a Project Team or grant project access. Source: https://constructable.ai/help/global-directory Use this guide to maintain the organization-wide companies and people that can be added to projects. Global Directory is the shared contact pool; adding someone here does not add them to a Project Team or grant project access. ## Start here - **Find an existing contact:** [Find companies and people](#find-companies-and-people). - **Add an outside business:** [Add and maintain companies](#add-and-maintain-companies). - **Record a company's insurance:** [Review insurance policies](#review-insurance-policies). - **Combine two records for the same vendor:** [Merge duplicate companies](#merge-duplicate-companies). - **Add an employee or outside contact:** [Add a person](#add-a-person). - **Help someone sign in again:** [Reset a password and reinvite](#reset-a-password-and-reinvite). - **Invite a whole company's people:** [Send invites to several people at once](#send-invites-to-several-people-at-once). - **Put someone on a job:** [Add or remove someone's projects from their profile](#add-or-remove-someones-projects-from-their-profile). - **Update access or offboard someone:** [Change a role or deactivate a person](#change-a-role-or-deactivate-a-person). - **Something is missing:** [Troubleshoot Global Directory](#troubleshoot-global-directory). ### Common task recipes - **Add an employee:** Open **Global Directory** → **People** → **Add Person**, add them to your organization, choose a **Permission Level**, and optionally send the invitation. - **Add a subcontractor contact:** Create or open the company under **Companies**, then add the person to that company. - **Reinvite someone who cannot sign in:** Open their profile and select **Actions** → **Reset password and reinvite**. - **Remove someone who left a company:** Open their directory profile and use **Deactivate user**. ## Find and add directory records ### Find companies and people Search before creating a record so one company or person does not acquire duplicate histories. To find a company, open **Global Directory** → **Companies**, search by name, filter by **Type**, and open the company profile. The grid includes **Name**, **Trades**, **Type**, **Active Members**, and **Date Added**. To find a person, open **Global Directory** → **People** and search by name, email, or job title. Filter by **Role** when you need everyone with the same permission level. The grid includes **Name**, **Email**, **Role**, **Job Title**, **Company**, and **Status**. Contact details require the separate **View contact information like email address and phone number** permission. Inside a company profile, **Projects** sits under the identity block and lists every project that company is on. Empty copy is **No projects associated with this company.** Use **Show Hidden Projects** / **Hide Hidden Projects** when hidden jobs should appear. Project names open the job. The **People** panel shows the count in the heading and gives you two ways to read the roster. **Card view** puts each person on a card with their contact details, which suits a short list. **Grid view** turns it into a sortable table of **Name**, **Role**, **Email**, **Phone**, **Job Title**, **Bidding Contact**, and **Invoice Contact**, which is what you want on a large subcontractor and what you'd export to PDF. Constructable opens large rosters in **Grid view** and remembers whichever you last chose for that company. Both views share the same search — **Search by name, email, or job title...** — and the same **Add Person** action. **Add Person** includes optional **Contact Designation(s)** — **Bidding** and **Invoice** — which become the **Bidding Contact** and **Invoice Contact** columns. ### Add and maintain companies 1. Open **Global Directory** → **Companies**. 2. Select **Add Company**. 3. Enter the required **Name**. 4. Add **Type** and **Website** when known. 5. Review similar-company suggestions and duplicate-name warnings. 6. Select **Add Company**. 7. Open the profile to add details, trades, logo, compliance information, **Insurance Policies**, notes, and people. If a company has no type when it is first added to a project, the selected Project Team category supplies its type. ### Review insurance policies Insurance lives on the company, and the certificates you attach there are what subcontract signing and **Contractor Insurance Expiration** read. Open a company in **Global Directory**, then **Insurance Policies**, and select **Add Policy**. On a project company profile the same block splits into **This Project's Policies** and a company-wide list titled with that company's name, so a job-specific certificate doesn't overwrite the directory policies. Each attached PDF shows **Under Review**, **Passed Review**, or **Failed Review** after upload when the company is enrolled in Certificate of Insurance review. Hover the badge for the reviewer's note. Those labels come from the **Review prompt** in [Organization Settings](https://constructable.ai/help/organization-settings#configure-certificate-of-insurance). A blank prompt, or a company that isn't in review, leaves the attachment without a badge. > **Note:** Only PDF certificates are reviewed. Other file types still attach. You now have the policy on the company, with a review badge the rest of the project can see. ### Merge duplicate companies The same subcontractor gets added twice — once as "Ace Mechanical" and once as "Ace Mechanical Inc." — and now their commitments sit under one record and their insurance under the other. Merging folds the two into a single company and brings the history with it. 1. Open **Global Directory** → **Companies** and open the profile of the company you want to get rid of. 2. Open **Actions** and select **Merge Company**. 3. Pick the company you're keeping, then select **Merge Companies**. Direction matters, and it's easy to get backwards: you start from the company that's going away, and the one you pick in the dialog is the one that survives. People, profile, trades, logos, aliases, commitments, payments, project associations, and related records move onto the company you keep. > **Warning:** After merging, the company you started from is removed from the directory. This merge cannot be undone from this screen. Confirm you're on the right profile — the dialog names it in both the heading sentence and the red warning above the buttons. **Merge Company** is Admin-only by default, under **Merge companies in the organization global directory** in [Roles and Permissions](https://constructable.ai/help/roles-and-permissions). It's separate from adding companies, so someone who can create a company won't necessarily be able to merge one. #### Why is my merge rejected? **Merge Company** is disabled — and the reason reads **Companies cannot be merged while an accounting integration is enabled** — whenever the organization has an accounting integration turned on, even if these two companies aren't linked to a vendor. Duplicate vendors on a connected organization have to be resolved with Constructable support. A company that's already an alias of another one is also blocked. #### Can I undo a merge? No. The dialog warns that this merge cannot be undone from this screen, so read it before you confirm. #### Why does the merge stop because someone already belongs elsewhere? A person can't have an active organization membership and an active company membership in the same organization, and they can't belong to two companies at once. If moving people onto the surviving company would create that overlap, Constructable stops the merge and names the emails that already belong to another company or this organization. Resolve those memberships first, then try again. ### Add a person 1. Open **Global Directory** → **People**. 2. Select **Add Person**. 3. Choose whether the person belongs to your organization or an outside company. 4. Enter **First Name**, **Last Name**, and **Email Address**. 5. Add phone numbers and **Job Title** when known. 6. Choose the required **Permission Level**. 7. Leave **Send Email Invitation** selected to invite now, or clear it to create the membership without email. 8. When inviting, select **Next Step**, review the email, keep the invitation-link field, and select **Add and Send**. If the email already belongs to a Constructable account, the account's existing name and phone number are retained. A previously inactive membership can be reactivated through this flow. > **Note:** A person cannot have an active organization membership and an active company membership in the same organization. Deactivate the existing membership before moving them. ## Maintain people and access ### Reset a password and reinvite 1. Open **Global Directory** → **People**. 2. Open the person's profile. 3. Select **Actions** → **Reset password and reinvite**. In the native app, tap the **⋯** button in the profile header instead of **Actions**. 4. Review and send the invitation. This action resets the password, clears last-login state, disables MFA, re-enables email delivery, and sends a new invitation. Use it only when the person needs a fresh sign-in path. Project access remains separate. ### Send invites to several people at once You've loaded a subcontractor's whole crew into the directory and none of them have signed in yet. Rather than opening each profile, send the invitation to everyone from the company's **People** panel in one pass — without touching anyone's password. 1. Open the company profile. Your own organization's profile works the same way. 2. In the **People** panel, switch to **Grid view**. 3. Tick the people you want to invite. A counter above the grid shows how many you've selected, with **Clear** to start over. 4. Open **Actions** and select **Send Invite** under **Bulk Actions**. The item carries the selected count. 5. Review the recipients, subject, and message. The message has to keep the **Invitation Link** merge field. 6. Select the send button, which names how many people the invite goes to. Each person gets an email with a link to set their password and sign in. Unlike **Reset password and reinvite**, their current password, MFA, and account settings stay the same. If anyone you picked has already signed in, the dialog says so — they'll still get the email unless you select **Remove this person** or **Remove them**. > **Note:** **Send Invite** stays disabled until you select at least one row, and the whole **Bulk Actions** group is hidden unless your role can reset passwords and re-invite people. Everyone you selected now has an invitation waiting in their inbox. ### Add or remove someone's projects from their profile Staffing usually starts from a project and works outward. Sometimes it runs the other way — someone new starts Monday and you need them on four jobs, or someone moves off one and you're not sure which ones they're still on. Their directory profile answers both from one page. Open the person's profile and look at the **Projects** panel. It lists every project they're on with the **Role** they hold there, and marks anyone who hasn't been invited yet with **(not invited)**. To add them to a job: 1. Select **Add to project**. 2. Choose the **Project**. 3. Pick the **Project access** they should get: - **Associate with project without granting access** puts them on the roster without granting access, which is what you want when you're building a team ahead of a kickoff. - **Grant access without sending an email invite** lets them in without emailing them. - **Grant access and send email invite** does both and sends the invitation now. 4. Save. To take them off one, select the remove icon on that project's row and confirm. That removes them from the single project and leaves their directory membership and every other project alone — which is the difference between reassigning somebody and offboarding them. To do the latter, use **Deactivate user**. > **Note:** **Add to project** is only offered for active people. Reactivate a deactivated person before staffing them. You now have one place to see and change everywhere a person is working. ### Change a role or deactivate a person Change an internal person's organization role or an external person's **Company Role** on their directory profile. Changing an external company role also updates that person's role on active projects. To deactivate: 1. Open the person's profile. 2. Select **Actions** → **Deactivate user**. In the native app, the same menu is the **⋯** button in the profile header. 3. Confirm. Deactivation stops sign-in and removes the person from every project, while preserving their comments, records, and history. Removing someone from only one job belongs on that project's Team page. ## Troubleshooting ### Troubleshoot Global Directory #### Global Directory is missing Your role needs **Access the global directory, view people and company profiles**. #### Email or phone information is hidden Your role also needs **View contact information like email address and phone number**. #### Add Company or Add Person is missing **Add Company** requires company-directory write permission. **Add Person** appears only when you can add at least one eligible internal, external, or Admin role. #### A duplicate-company warning appears Compare the suggested company's name and website. Use the existing record when it represents the same business. #### A person is already a member elsewhere Open their current organization or company membership and deactivate it before adding them to the new place. #### Someone accepted an invitation but cannot see a project Directory membership and sign-in do not grant project access. Add the person from **Management Tools** → **Team** in the intended project, or from **Add to project** on their directory profile. --- # How to use Global Dashboard in Constructable > Use this guide to review project stages, overdue work, assignments, notifications, and signatures across your organization. Global Dashboard identifies exceptions; open the project record when you need details or an action. Source: https://constructable.ai/help/global-dashboard Use this guide to review project stages, overdue work, assignments, notifications, and signatures across your organization. Global Dashboard identifies exceptions; open the project record when you need details or an action. ## Start here - **Review the organization portfolio:** [Use Global Dashboard](#use-global-dashboard). - **Work cross-project assignments:** [Review widgets and Ball-in-Court](#review-widgets-and-ball-in-court). - **Something is missing or surprising:** [Troubleshoot Global Dashboard](#troubleshoot-global-dashboard). ### Common task recipes - **Run a morning portfolio check:** Scan active project stages, open and overdue RFIs and Submittals, then work through Global Ball-in-Court. - **Investigate a cross-project count:** Select **All RFIs** or **All Submittals**, identify the project and record, then confirm the current state there. - **Follow a signature item:** Open it from Global Dashboard and act only when the source document and your role allow it. ## Review the portfolio ### Use Global Dashboard ![Desktop: The Global Dashboard summarizes active projects, RFIs, Submittals, Ball-in-Court, and notifications.](https://constructable.ai/help-images/dashboards-and-reports/global-dashboard.png) Open **Global Dashboard** from the organization navigation. Depending on access, it can show: - **Most Recent**, up to five projects you've visited - Active Projects by Preconstruction, Course of Construction, and Warranty stage - Open and overdue RFIs across projects - Open and overdue Submittals across projects - Global Ball-in-Court - Organization notifications - Documents waiting for signature Select a summary or item to open the related list, project, or record. Use the record itself as the current source before taking action or quoting a count. **Most Recent** lists the projects you opened lately, including a template you visited. It stays hidden until you have organization-level **View all projects in your organization** and at least one project that still resolves. ### Review widgets and Ball-in-Court 1. Scan active-project stages and open or overdue totals. 2. Select **All RFIs** or **All Submittals** to review individual records. 3. Review Global Ball-in-Court for work assigned to you across projects. 4. Open organization notifications to reach their project records. 5. Review signature items and open the source document before acting. Each document is labeled with its project number (when the project has one), project name, and document name — for example, "2611 - Gym Refresh › Commitment: ELECTRICAL" — and the label links to the source record when Constructable can resolve it. Each signature item names its **Next Signer**. If that's you, select **Review & Sign**. Otherwise, with **Manage financials like change orders, contracts, receipts (excluding financial reporting)**, you can select **Send Reminder**. A line under the button, such as "Last sent Oct 14, 3:05 PM", shows when we last emailed that signer the request, whether it was the first send or a reminder, so you can tell a fresh request from one that's been sitting for a week. Global Ball-in-Court includes accessible open RFIs, Submittals, Work Plans, list items, and invoices under review currently requiring your attention. A Work Plan appears while you owe its authorization, an item sign-off that isn't locked by a hold point, or its acceptance. Each row shows the project name with the record and links to it. Closed records and projects you cannot access are excluded, and Work Plans don't appear on a Field-package organization. ## Access and troubleshooting ### Check Global Dashboard access **Global Dashboard** appears in organization navigation for every default role. Individual widgets still follow organization-level access to their underlying tools and projects. A user can see Active Projects without seeing RFI or Submittal widgets. Some widgets still need **View non-financial reports**. Panels stack on smaller screens and appear side by side on extra-wide screens. ### Troubleshoot Global Dashboard #### Only Active Projects is visible Ask an administrator to verify organization-level access to RFIs, Submittals, and the other underlying tools. #### Global Ball-in-Court is empty Confirm you are currently responsible for an accessible open RFI, Submittal, Work Plan, list item, or invoice under review in at least one project. A Work Plan counts only while it's waiting on your signature — an item locked by a hold point isn't in your court yet. #### A count differs from a project view or Global Report Compare project access, record status, revisions, filters, and update timing. Dashboard widgets often count open or overdue exceptions rather than every record. #### A notification or signature item looks out of date Open the project record or source document. Global Dashboard reflects an event or summary; the record is the current source. --- # How to use Global Reports in Constructable > Use this guide to review available records across projects in filterable, exportable tables. Global Reports answer organization-wide questions while preserving project and record access restrictions. Source: https://constructable.ai/help/global-reports Use this guide to review available records across projects in filterable, exportable tables. Global Reports answer organization-wide questions while preserving project and record access restrictions. ## Start here - **Choose a cross-project Report:** [Open a Global Report](#open-a-global-report). - **Review operations or compliance:** [Use cross-project and compliance Reports](#use-cross-project-and-compliance-reports). - **Narrow and distribute results:** [Filter, group, and export](#filter-group-and-export). - **A Report is missing or empty:** [Troubleshoot Global Reports](#troubleshoot-global-reports). ### Common task recipes - **Review RFIs across projects:** Open **Global Reports** → **All RFIs**, filter by project, status, due state, or participant, then open individual records. - **Compare field activity:** Choose the relevant Daily Logs Report, keep the project field visible, and filter by date and project. - **Verify a system email:** Open **Email Activity** and filter by date range, status, sender, or recipients. - **Review expiring insurance:** Open **Contractor Insurance Expiration**. Use **Actions** → **Download All** when you need the certificate PDFs in one file. - **Compare billed vs complete across jobs:** Open **WIP Report** under **Financial Reports**. Each row is a project; a totals row at the bottom sums the numeric columns. ## Choose and review ### Open a Global Report 1. Leave the individual project's navigation. 2. Open **Global Reports**. 3. Choose an available Report. Non-financial reports can include: - **All RFIs**, **All Submittals**, **All Lists**, and **Email Activity** - **Daily Logs**, **Personnel**, and **Time Cards** - **Equipment**, **Deliveries**, **Dumpsters**, **Inspections**, and **Materials** - **Contractor Insurance Expiration** The visible list follows organization packages, permissions, and enabled Daily Log sections. **All RFIs**, **All Submittals**, and **Email Activity** need the Project Management package. **All Lists**, the Daily Logs Reports, and **Contractor Insurance Expiration** are there on the Field package too, so a field-only organization can still report across every project's lists. **All Invoices** and **WIP Report** are financial Reports and need the Financial package. **WIP Report** is covered below; **All Invoices** is covered in the Invoices guide. Hidden projects do not appear in these reports. ### Use cross-project and compliance Reports - Use **All RFIs** and **All Submittals** to compare status, due work, and responsibility across projects. - Use **All Lists** to see every list item on every project, with grouping and filtering by project, list name, status, assignee, trade, and location. It needs **View punch list items** on top of report access, and it doesn't need the Project Management package. Built-in fields a list hides stay blank for that list's items. - Use the Daily Logs Reports to review field activity by project, date, company, equipment, delivery, dumpster, inspection, material, or phone call. **Phone Calls** appears when **Phone Calls Section** is enabled. - Use **Time Cards** to review your own employees' hours across projects. It reads time cards, so it needs **View time cards**, and it appears when **Time Cards Section** is enabled for the organization. - Use **Email Activity** to review system-sent emails by date range, status, sender, and recipients. It requires **View the Email Activity report**. - Use **Contractor Insurance Expiration** to review insurance and compliance expiration information from Global Directory. **Actions** includes **Download All** for the certificate PDFs on the filtered rows, plus **Download as PDF** and **Download as CSV** for the grid itself. **Download All** merges readable PDFs into one file, skips files it can't read, and follows the filters you have on. It needs the same **View non-financial reports** access as the report. Keep the project column or filter in a cross-project result. Similar record numbers can exist in different projects. **Email Activity** also supports saved views, so a filter set you rebuild every month can be saved once and reopened from **Views**. Views saved on an organization report are shared with everyone who can open that report — the save dialog says so, and deleting one removes it for everybody. Name them for what they show rather than for yourself, and expect **A saved view with this title already exists.** if you reuse a name someone has taken; pick a different one rather than assuming the save went through. ### Read the Global WIP Report Project Budget already has a **WIP Report** tab by cost code. This Global Report is the same math one row per project — billed versus complete across the organization. 1. Open **Global Reports**. 2. Under **Financial Reports**, select **WIP Report**. 3. Search with **Search by project...** when the list is long. 4. Open a project name to jump to that project's Budget. Each row is a project. Columns are **Project**, **Over Billed**, **Under Billed**, then **Revenue** (**Actual Revenue**, **Projected Revenue**, **Revenue % Complete**) and **Costs** (**Actual Costs**, **Forecast at Completion**, **Costs % Complete**). There are no column letters on this report. A totals row at the bottom sums the numeric columns across the list. **Actions** includes **Show Pending Change Orders in Totals**, on by default. Use **Download as PDF** and **Download as CSV** for the grid. The empty list reads **No projects found.** > **Note:** You need **View financial reports** and the Financial package. This is not the project Budget tab — that one stays on the job, by cost code. You can see which projects are over- or under-billed without opening each Budget. ## Refine and distribute ### Filter, group, and export ![Desktop: The All RFIs report shows a filtered cross-project table with a Download action.](https://constructable.ai/help-images/dashboards-and-reports/export-sharing.png) 1. Clear stale search or filters when the list looks unexpectedly narrow. 2. Search by available number, title, name, or text. 3. Filter by project, date, status, people, companies, or other available fields. 4. Group by an available field such as project, date, or company. 5. Confirm the visible records, totals, and project context. 6. Select the export action and choose an available format. 7. Review the generated file before sharing. Totals reflect active filters and grouping. Exported files are point-in-time snapshots and do not grant recipients Constructable access. ## Access and troubleshooting ### Check Global Reports access Global Reports requires organization-level **View non-financial reports** access. Report cards also follow package availability, enabled Daily Log sections, and access to underlying project records. Global Reports does not bypass project restrictions. **Email Activity** has a separate permission. Financial Reports use **View financial reports** instead. ### Troubleshoot Global Reports #### A Report is missing Confirm **View non-financial reports**, the required package, access to the underlying tool, and any enabled Daily Log section. **All RFIs**, **All Submittals**, and **Email Activity** need Project Management; **All Lists** doesn't. For **Email Activity**, confirm its separate permission. #### A Report has no rows Clear search and saved filters, confirm the date range and grouping, and compare with the source project tools. Project restrictions still apply. Hidden projects are left out of every Global Report, including **WIP Report** and **All Lists** — unhide the project from **All Projects** if it should be in the numbers. #### Two people see different totals Compare organization and project permissions first, then compare active filters and grouping. #### An export does not match the intended view Review the Report title, project context, active filters, grouping, visible columns, and rows, then export again. #### **Download All** is disabled on Contractor Insurance Expiration The filtered rows have no mergeable PDF certificates. Clear filters that hide the policies, or attach PDF certificates on the company in Global Directory. Grid **Download as PDF** and **Download as CSV** still export the table. --- # How to manage Roles and Permissions > Use this guide to review what each role can do, change editable permissions and access levels, export the matrix, and understand why a user may still see only some records. Source: https://constructable.ai/help/roles-and-permissions Use this guide to review what each role can do, change editable permissions and access levels, export the matrix, and understand why a user may still see only some records. Learn how roles combine with project membership, record sharing, and status in [Permissions and Data Visibility](https://constructable.ai/help/concepts/permissions-and-data-visibility). ## Start here - Audit access: [Review the permission matrix](#review-the-permission-matrix). - **Change a role:** [Edit permissions and access levels](#edit-permissions-and-access-levels). - **Add, rename, archive, or restore a role:** [Request role-structure changes](#request-role-structure-changes). - **A tool or record is still missing:** [Understand permission consequences](#understand-permission-consequences). - **A control is unavailable:** [Troubleshoot Roles and Permissions](#troubleshoot-roles-and-permissions). ## Review and edit access ### Review the permission matrix ![Desktop: The Roles and Permissions matrix compares enabled actions and access levels across organization roles.](https://constructable.ai/help-images/organization-administration/roles-and-permissions.png) 1. Open **Roles and Permissions**. 2. Review the **Internal**, **External**, and, when shown, **Archived** role groups. 3. Search with **Search permissions...**. 4. Expand permission groups. 5. Review each role cell: - **OFF** means the action is disabled. - **ON** means it is enabled. - **ON** with a summary underneath means it is enabled with an access limit. 6. Use **Actions** → **Download as PDF** or **Download as CSV** for an offline review. Built-in roles are Admin, Manager, Employee, Subcontractor, Consultant, Owner, and Bidder. Names are not proof of current access because organizations can customize editable permissions. Use the matrix for the current result. ### Edit permissions and access levels ![Desktop: The role-permission editor provides an on-off control and available access levels.](https://constructable.ai/help-images/organization-administration/edit-permissions.png) 1. Find the permission row and role column. 2. Open the cell. 3. Turn the permission on or off. 4. If offered, select its access level. 5. Save. 6. Review dependent child permissions. Access levels use exact product labels, including: - **All Projects** or **Only projects I belong to** - **All RFIs** or **Only non-draft RFIs and my drafts** - **All Meetings** or **Only meetings I'm a participant in** - **All documents and folders** or **Only documents and folders I created** - **All time cards** or **Only my time cards** - **All Change Events** or **Related to my company** - **All statuses** or **Non-draft or billable** Other tools have equivalent limits. An enabled but limited permission still allows the action, but only for matching records. Some child permissions require a parent permission and cannot be enabled first. ### Request role-structure changes **Add Role**, **Modify**, **Archive**, **Unarchive**, and **Reset All Permissions to Default** are visible but limited to Constructable super users. Email `support@constructable.ai` with the requested change. For a new custom role, provide its display name and the internal or external role it should copy. Bidder cannot be copied. The custom role begins with that role's current permissions; later manual edits to the original do not propagate, while newly released permissions follow the source role's default. When archiving a role, specify its replacement. Current users move to that role. Admin and Bidder cannot be archived. Restoring an archived role preserves its permission configuration. > **Warning:** **Reset All Permissions to Default** removes all manual permission changes across every role and rebuilds custom roles from their source roles. It cannot be undone. ## Understand permission consequences Access is the combination of several controls: - A role permission decides whether the user can reach a tool or action. - Its access level limits which projects or records qualify. - Organization and project membership determine where the role applies. - Record sharing can narrow the audience for an individual record. - Status can move a record out of an active view. - Package and feature availability can hide an entire section. - Notification settings decide only whether activity is delivered; they never grant access. Turning off a permission can remove a tool or action from every member of that role. Narrowing an access level leaves the action enabled but can immediately hide unrelated projects, drafts, meetings, RFIs, Submittals, or other records. Review affected users and dependent child permissions before saving. Role changes do not set anyone's email, desktop, or mobile notification preferences. Each user configures delivery under **My Account**. A few permissions are worth checking deliberately, because their default breadth surprises people: - **Delete projects** is Admin-only by default and nested under project write. It removes a project and its records without an in-app undo, so leave it with the smallest group that can be accountable for it. - **View closeout packages** and **Generate closeout packages** are on for every role by default, including subcontractors, consultants, owners, and bidders. Each person still only sees the export sections their own read permissions cover, and only the packages they generated themselves — but if a role shouldn't be assembling handoffs at all, turn Closeout off for it explicitly. - **Respond to submittals** hides the **Respond** button rather than disabling it, so an approver missing it sees a stage waiting on them with nothing to select. Check it first whenever someone reports that they "can't respond." - **Delete documents and folders** is its own permission, separate from **Add, rename, move, and change sharing for documents**. A role can be allowed to upload, rename, move, and reshare files while never being able to remove them. Its **Level of document deletion access** narrows that further to **Only documents and folders I created**. - **Create/edit change events**, **Create/edit vendor change orders**, and **Create/edit prime change orders** are independent of **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. Grant the first two without the third to let a project engineer price the subcontract side without touching owner billing. **Prepare for Esigning** still needs the financials permission even when a role can create both sides. Read access is split the same way (**Read change events**, **Read vendor change orders**, **Read prime change orders**), and Change Order read can be limited to **Related to my company** and **Non-draft or billable**. - **Edit a commitment's schedule of values after it has been executed** sits under Financials and defaults to Admin and Manager, along with custom roles built on them. It's needed, on top of **Manage financials like change orders, contracts, receipts (excluding financial reporting)**, to add, edit, delete, import, or lock SOV lines on a Fully Executed Commitment or Prime Contract. It doesn't gate the contract details or scope of work, which follow **Create new commitments, make changes to existing commitments** at any status, and it never opens an executed Change Order — those stay locked until moved back to Draft. Unlocking a locked SOV is separate: **Unlock the SOV for editing on a commitment** is Admin-only by default. - **View time cards** and **Create, update, and delete time cards** each carry a level. Employees get **Only my time cards** by default, which is why a foreman may be able to log their own hours but not their crew's. - **Update existing projects, hide projects** is project write: editing and hiding projects, including **This is a template project**. Creating a project is a nested permission, **Create new projects**, so write does not automatically include **New Project**. - **Add people to the project team** is independent of project write. Staffing a Project Team and sending invitation emails — from **Team** or from a person's Global Directory profile — uses this permission, not write. A coordinator who needs to staff jobs needs this permission, not a directory permission. Custom roles that already had project write when this split shipped received **Add people to the project team** automatically; a role created after that has to be granted it on its own. - **Open organization settings** is what puts **Organization Settings** in the nav. **Sync core organization data** makes org-wide catalogs available in project and financial tools, but it does not open the page. Company roles can have catalog sync without Open. - **Add, edit, and archive equipment and other material assets** is editable in the matrix. It still needs **Open organization settings** to reach **Equipment**. Creating equipment from a Daily Log picker uses this same permission. - **Limited Daily Log Entry** is default-off and assignable to Subcontractor, Consultant, and Owner. Turn it on when those companies should log their own **Personnel** rows without the rest of the Daily Log. See [Record personnel with limited Daily Log entry](https://constructable.ai/help/daily-logs#record-personnel-with-limited-daily-log-entry). - **Manage daily log settings, including custom fields** defaults to Admin and Manager. It's what lets someone hide Daily Log sections and fields on a project, add custom fields, and build custom sections in **Project Settings** → **Daily Log Settings**. Filling those fields in on a log still uses **Create new daily logs, make changes to existing daily logs**. See [Customize Daily Logs for one project](https://constructable.ai/help/daily-logs#customize-daily-logs-for-one-project). - **Configure custom field definitions** is Admin-only by default. It is what opens **Custom Fields** on a list; filling in those fields on an item still uses **Add new punch list items, make changes to existing punch list items**. See [Configure custom fields on a list](https://constructable.ai/help/quality-lists#configure-custom-fields-on-a-list). Incident and record forms are configured from **Incident Settings** with **Manage incident settings, including incident types**. See [Configure incident settings and forms](https://constructable.ai/help/incidents#configure-incident-settings-and-forms). - **View incidents**, **Report incidents, make changes to existing incidents**, **Close and reopen incidents**, and **Manage incident settings, including incident types** are the Incidents policy. View and write default to Admin, Manager, and Employee. Close/reopen and settings default to Admin and Manager. See [Incidents](https://constructable.ai/help/incidents). - **View work plans** carries **Level of work plan access**. Admin, Manager, and Employee see **All work plans**; Subcontractor, Consultant, and Owner see only published plans their company authorizes, signs, or accepts. **Work on items: change status, write proof of work, add and remove attachments** has its own **Which items** level — Admin and Manager get **All items**, everyone else gets **Only items that I or anyone at my company signs**. **Create work plans, edit drafts, publish and close plans** defaults to Admin, Manager, and Employee. **Edit published work plans, which moves them back to Draft and deletes their signatures**, **Delete work plans**, **Record signatures on someone else's behalf**, and **Manage work plan types and templates** default to Admin and Manager. Signing your own sign-off needs only view access and being the named signer. See [Work Plans](https://constructable.ai/help/work-plans). - **Create and use skills** is nested under **Create, update, and delete AI chats**. **Level of skill access** is **Organization skills** or **Only my skills**. Admin, Manager, and Employee default to organization; Subcontractor, Consultant, Owner, and Bidder default to personal. Personal-access roles see and run only their own skills, not organization-shared ones. See [Create and share a custom skill](https://constructable.ai/help/chat#create-and-share-a-custom-skill). - **Merge companies in the organization global directory** is Admin-only by default and separate from creating companies. The dialog warns that the merge cannot be undone from this screen, so keep it narrow. - **Submit invoices for approval** is editable, including **Level of invoice submission access**. Admin and Manager default to **All Commitments**; Subcontractor defaults to **Only companies I belong to**. If a custom role should submit billing, turn this on rather than granting full financial write. - **Approve invoices** is who can approve a vendor invoice. **Approve invoices on behalf of others** lets someone complete another person's sequential step; Admin has it by default. **View invoice approval workflows** and **Manage invoice approval workflows** control the **Subcontractor Invoice Approvals** list in Project Settings — the settings panel itself is gated by Manage. - **Invite new bidders, add and change bid packages, message bidders**, **View bids**, and **Respond bid requests sent to me** are editable in the matrix like any other cell. If your organization sends bid invitations from a role other than Admin or Manager, that's the group to edit. ## Access and platforms - **View permissions for all user roles** opens the matrix and its PDF and CSV exports. Admin receives it by default, and it is editable, so you can grant a role access to audit the matrix without changing it. - **Edit permissions for all user roles** is nested under View. Admin receives it by default and it is not editable. - Use the permission matrix to review roles and export PDF or CSV copies across desktop web, mobile web, and the native app. - Role-structure and full-reset actions require Constructable support even when you can edit normal cells. ## Troubleshoot Roles and Permissions ### Roles and Permissions is missing Confirm **View permissions for all user roles**. The built-in Admin role has it by default. Granting it to another role is how someone can open the matrix without receiving **Edit permissions for all user roles**. ### Add Role, Modify, Archive, Unarchive, or Reset is disabled These actions require a Constructable super user. Email `support@constructable.ai`; this is not a missing customer permission. ### A child permission cannot be enabled Enable its required parent permission first. Review the disabled reason shown in the matrix. ### A role can open the tool but sees only some records Open the role cell and inspect its access level, then check project membership, record sharing, and status. ### A teammate still cannot see a newly enabled tool Confirm the changed role is actually assigned to that user in the relevant organization or project, the feature is in the organization's package, and any required parent permission is enabled. ### Changing notifications did not fix access Notification settings do not control visibility. Check the role permission, access level, project membership, and record sharing. --- # How to configure Organization Settings > Use this guide to maintain the shared lists, defaults, presentation, and integrations used across projects. Use Roles and Permissions for access, and Project Setup for one project's choices. Source: https://constructable.ai/help/organization-settings Use this guide to maintain the shared lists, defaults, presentation, and integrations used across projects. Use [Roles and Permissions](https://constructable.ai/help/roles-and-permissions) for access, and [Project Setup](https://constructable.ai/help/project-setup) for one project's choices. ## Start here - **Maintain shared codes and classifications:** [Configure operational lists](#configure-operational-lists). - **Add, rename, or remove a trade:** [Maintain the Trades catalog](#maintain-the-trades-catalog). - **Add or archive a project stage:** [Maintain project stages](#maintain-project-stages). - **Set field reporting defaults:** [Configure Daily Logs and Equipment](#configure-daily-logs-and-equipment) and [Stamp captions on new photos](#stamp-captions-on-new-photos). - **Share inspection checklists and answer choices across projects:** [Build organization inspection templates](https://constructable.ai/help/inspections#build-organization-inspection-templates) and [Create custom inspection responses](https://constructable.ai/help/inspections#create-custom-inspection-responses). - **Review uploaded certificates:** [Configure Certificate of Insurance](#configure-certificate-of-insurance). - **Set financial and signing defaults:** [Configure financial settings](#configure-financial-settings). - **Update email or dashboard presentation:** [Configure organization presentation](#configure-organization-presentation). - Connect accounting: [Configure integrations](#configure-integrations). - **Connect QuickBooks Desktop:** [Connect QuickBooks Desktop](#connect-quickbooks-desktop). - **Connect an external integration:** [Create an API client](#create-an-api-client). - **A section is missing:** [Troubleshoot Organization Settings](#troubleshoot-organization-settings). ## Choose the correct settings page Use **Organization Settings** for values shared across projects. The left nav groups the pages: - **Financial:** **Cost Codes**, **Cost Types**, **Revenue Codes**, **Hourly Cost Rates**, **Financial Settings** - **Field:** **Daily Log Settings**, **Photo Settings**, **Inspection Responses**, **Inspection Templates**, **Equipment** - **Workspace:** **Configure Global Dashboard**, **Emails**, **Document Signing Settings**, **Trades**, **Project Stages**, **Bid Tags**, **Certificate of Insurance** - **Platform:** **Integrations**, **API Access** Select a page in the list. You only see the pages your role can open; if none are available the nav reads **You do not have access to any organization settings.** Use **Project Settings** for one project's identity, Sub Projects, locations, people, project cost-code selection, financial choices, integration inclusion, exports, and visibility. Changing an organization catalog does not necessarily select every value on every project. For example, maintain the shared Cost Code catalog here, then configure the current project's Cost Codes in **Project Settings**. ## Configure shared standards ### Configure operational lists In **Organization Settings**, maintain: - **Cost Codes**, including **Add Subcode** and export. - **Revenue Codes**, when enabled for the organization. - **Cost Types**. - **Trades** used by companies and project tools. See [Maintain the Trades catalog](#maintain-the-trades-catalog). - **Project Stages** used on **Project Info**. See [Maintain project stages](#maintain-project-stages). - **Bid Tags** used by company profiles and Bid Management. Archive an item to remove it from future choices without breaking records that already use it. Enable **Show Archived** and select **Unarchive** to restore it. When a parent Cost Code is archived, its subcode actions remain unavailable until the parent is restored. ### Maintain the Trades catalog Trades are the shared vocabulary your organization uses to say what kind of work a company does — Electrical, Concrete, Fire Protection. They tag companies in the Global Directory and then show up as choices on list items, inspections, and bid packages, so a trade nobody maintains turns into a filter nobody can use. Select **Trades** in **Organization Settings** to see the catalog, sorted by **Trade Name** with **Created** and **Last Updated** beside it. - To add one, open **Actions** and select **Add Trade**. Type the name in the **Add Trade** dialog and select **Add Trade** to save. - To rename one, select the pencil at the start of its row. The **Edit Trade** dialog opens on the current name; change it and select **Save Changes**. - To remove one, select the trash icon at the end of its row and confirm in the **Delete Trade** dialog, which names the trade it's about to remove. A trade name is required and can run to 256 characters. > **Note:** Renaming a trade renames it everywhere it's already in use, which is usually what you want — fixing a typo shouldn't mean re-tagging forty companies. Deleting one takes it out of future choices instead of rewriting history. #### Why isn't the trade I need on a list item? Trades come from this catalog rather than from the item, so someone has to add it here first. Anyone with **Update organization-level settings** can, and it's available immediately on every project. Keep the catalog tidy and the trade filters across the product stay worth using. ### Maintain project stages Project stages start from the built-in names Preconstruction, Course of Construction, and Warranty, plus any names your organization adds. **Project Info** on each job picks from this catalog. 1. Open **Organization Settings** and select **Project Stages**. 2. Select **Add Stage**. The dialog is **Add Project Stage**. 3. Enter the name and save. To rename one, open it (**Edit Project Stage**) and select **Save Changes**. To take one out of future choices, select **Archive Project Stage**. Projects already on that stage keep it. Enable **Show Archived** and **Unarchive Project Stage** to bring a name back. A name is required, 256 characters or fewer, and has to be unique in the catalog. > **Note:** Archiving doesn't move projects off the stage. It only hides the name from new picks. Anyone creating a project can still type a new stage in **Project Info** when their role has **Update organization-level settings** — that write goes to this catalog. The Stage picker on every project now has the names your organization actually uses. ### Configure Daily Logs and Equipment ![Desktop: Organization Settings shows enabled Daily Log sections with Equipment and Hourly Cost Rates sections below.](https://constructable.ai/help-images/organization-administration/daily-log-settings.png) 1. Edit **Daily Log Settings** and save the sections and defaults used across projects. 2. Open **Equipment** to add or edit shared assets. 3. Archive retired equipment; existing Daily Logs retain their entries. 4. Use the archived view and **Unarchive** to restore equipment. 5. Open **Hourly Cost Rates** when your role includes its separate permissions. **Time Cards Section** in **Daily Log Settings** controls whether crews can log employee hours from inside the day's Daily Log. Leave it off and hours are entered only from the organization's **Time Cards** page. **Safety Section** in the same block gives each Daily Log a **Safety** area for notes and attachments — toolbox talks, near misses, corrective actions — and adds a **Safety Photos** group to the Daily Log PDF and distribution options. It starts enabled. Turn it off and the block disappears from new and existing logs and the section is left out of the PDF; nothing already written is deleted. See [Daily Logs](https://constructable.ai/help/daily-logs#configure-daily-log-sections). **Phone Calls Section** in the same block puts **Phone Calls** on each Daily Log — inbound and outbound calls, a summary, and an optional audio recording that's transcribed automatically. It starts enabled. Turn it off and the block disappears from new and existing logs and phone calls are left out of the PDF; nothing already logged is deleted. The organization **Phone Calls** report follows the same toggle. These toggles set the ceiling for every project. A project can hide a section that's on here, add its own fields, or add custom sections from **Project Settings** → **Daily Log Settings**, but it can't show a section you've turned off. See [Customize Daily Logs for one project](https://constructable.ai/help/daily-logs#customize-daily-logs-for-one-project). Opening Organization Settings does not grant equipment or hourly-rate access. Equipment editing needs **Add, edit, and archive equipment and other material assets**, which is editable in the role matrix. Hourly rates need **View hourly cost rates for employees** as well as **Update organization-level settings** — the rates section doesn't appear without both. Equipment is the one section that works the other way around. Someone whose role has **Add, edit, and archive equipment and other material assets** but not **Update organization-level settings** can open Organization Settings and will find **Equipment** waiting there on its own — a warehouse or yard manager doesn't need the cost codes and financial defaults to keep the asset list current. ### Stamp captions on new photos When photos leave Constructable — into a claim, a report, an owner's inbox — the proof of when and where they were taken usually leaves with the file, not the app. **Photo Settings** solves that by burning the capture date, time, and location into each image as it's uploaded. 1. Open **Organization Settings** and select **Photo Settings**. 2. Select **Edit**. 3. Turn **Date, Time, and Location Captions** on or off. 4. Save. The panel reads **Enabled** or **Disabled** so you can confirm the current state at a glance. The setting covers both project photos and Daily Log photos across every project in the organization, and the caption carries the capture timestamp with its time zone, the resolved address, and GPS coordinates when the photo recorded them. > **Note:** Captions are applied at upload. Turning the setting on doesn't caption photos already in your projects, and turning it off hides captions rather than destroying the images — switch it back on and the previously captioned photos show their captions again. #### Will this caption our existing photo library? No. Only photos uploaded while the setting is on get a caption. Re-uploading is the only way to caption older media. #### Why did one photo come through without a caption? We need a capture time to build the caption, so files that don't carry one — screenshots, scans, some exported images — are left alone. Turn it on once and every field photo carries its own timestamp wherever it ends up. ### Configure Certificate of Insurance When a certificate PDF lands on a company or on a subcontract signing request, you want someone to know — and you want a first pass against the coverage you actually require. **Certificate of Insurance** is where you set both. 1. Open **Organization Settings** and select **Certificate of Insurance**. 2. Select **Edit**. Changing the block needs **Update organization-level settings**; opening it needs **Sync core organization data**. 3. Enter a **Review prompt** that describes what a passing certificate must show, or leave it blank to skip AI review. 4. Under **Notify organization users**, pick who should get the upload email. People at the insured company are never on this list. 5. Save. Leave the prompt empty and the block reads **No review prompt**. Uploads then skip AI entirely — they still email the people you selected, and certificates on companies that aren't in review stay without a badge until a prompt exists and a review completes. Review only looks at PDF certificates. A photo or Word file is stored, but it isn't reviewed. After an upload, each PDF on **Insurance Policies** shows **Under Review**, **Passed Review**, or **Failed Review**. Hover a badge to read the reviewer's note when one exists. Selected organization users get an email that a certificate was uploaded, with the company, the project when it's a project policy, and the review result. That email doesn't ask them to approve anything. A Commitment that requires insurance can hold the outside signer's signing page on **Reviewing your insurance** until this review finishes. See [Manage contract attachments and insurance requests](https://constructable.ai/help/contracts-and-esigning#manage-contract-attachments-and-insurance-requests). #### Does a blank Review prompt mean certificates aren't stored? No. The PDF still attaches to the policy. Blank only skips the AI check. #### Who receives the upload email? Only the organization users you picked under **Notify organization users**. People at the insured company are not included. Set the prompt and the recipient list once, and every later certificate upload follows them. ### Configure financial settings ![Desktop: Organization Financial Settings lists shared billing, retention, budget-code, cost-type, and lien-waiver options.](https://constructable.ai/help-images/organization-administration/financial-settings.png) Under **Financial Settings**, select **Edit**, review the following, then save: - **Track Materials Stored** - **Default Retention Percent** - **Hide Budget Codes on Owner Pay Applications** - **Billing Period Due Date Day** - **Require Cost Type on Line Items** - **Hide First Level Cost Codes** - **Lien Waivers** - **Automatically Sync Time Cards to Non-Committed Costs** Default retention is used for new Commitments and then their new line items. Billing Period Due Date Day accepts 1 through 31 for automatically created Billing Periods. **Automatically Sync Time Cards to Non-Committed Costs** starts **Enabled**. While it's on, any time card line that carries a project, a cost code, and an hourly cost rate for that employee creates and maintains a payroll cost in Non-Committed Costs. Turning it off doesn't only stop new costs — it removes the ones time cards had already created, so switch it off only if labor cost reaches your projects another way. See [Time Cards](https://constructable.ai/help/time-cards#send-time-card-hours-to-non-committed-costs). Under **Document Signing Settings**, signing-order cards sit above the legal-language cards. Select **Set** or **Add language** on a card, **Show full** or **Show less** to expand a long clause, and **Manage Templates** for the templates themselves. Cards with nothing saved read **No language set**. Configure: - **Vendor Contract Signing Order**: **Other Party** or **My Organization** - **Prime Contract Signing Order**: **Other Party** or **My Organization** - **Prime Contract Legal Language** - **Vendor Commitment Legal Language** - **Purchase Order Legal Language** - **Prime CO Legal Language** - **Vendor CO Legal Language** Signing order is set separately for the two sides of your business, because they rarely work the same way. **Vendor Contract Signing Order** governs subcontracts, purchase orders, and vendor change orders; **Prime Contract Signing Order** governs the owner contract and prime change orders. Both default to **Other Party**, meaning the other side signs first. Legal-language changes affect future documents, not documents already created. Use **Manage Templates** to edit document templates. See [Contracts and e-signing](https://constructable.ai/help/contracts-and-esigning#configuring-document-signing-settings-and-templates). Both of these sections take two kinds of access, which is the usual reason an administrator can open Organization Settings and still not find them: your role needs **Update organization-level settings** as well as **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. ## Configure communication and integrations ### Configure organization presentation For system email: 1. Open **Organization Settings** → **Emails**. 2. Select **Edit**, update the organization email sign-off, and save. The sign-off applies to supported system templates. It does not control which notifications a person receives. For the dashboard: 1. Open **Configure Global Dashboard**. 2. Select **Edit**. 3. Add or replace **Organization Image** with a JPEG or PNG. 4. Save. The dashboard image is separate from square and rectangle logos on the organization's Global Directory profile. ### Configure integrations ![Desktop: The Integrations section in Organization Settings shows QuickBooks with a Connect action.](https://constructable.ai/help-images/organization-administration/integrations.png) 1. Open **Organization Settings** → **Integrations**. 2. Select the available accounting integration. 3. Complete its connection or authorization steps. 4. Review its state: - **Enabled** means the organization integration is active. - **Disabled** means it is connected but not syncing. - **Auth Error** means authorization must be renewed. 5. Confirm project scope, directions, dates, and mappings with Constructable. Detailed **Configure** controls are limited to Constructable implementation staff. Use each project's **Project Settings** → **Integrations** to include or **Exclude from [integration name] Sync** without disabling the organization connection. An integration appears only when available to the organization and your role has the required integration access. QuickBooks Desktop uses Intuit's Web Connector instead of the **Connect** flow on this page. See [Connect QuickBooks Desktop](#connect-quickbooks-desktop). When QuickBooks Online Time Cards mappings are configured, QuickBooks time activities sync into Constructable **Time Cards**. See [Time Cards](https://constructable.ai/help/time-cards#add-a-time-card). ### Connect QuickBooks Desktop QuickBooks Desktop reaches Constructable through Intuit's Web Connector, a Windows program that signs in with a `.qwc` file plus a username and password. Add that file so the connector can authenticate with Constructable. 1. Install **QuickBooks Web Connector** on the Windows machine that runs QuickBooks Desktop, if it isn't already there. 2. Save the Constructable `.qwc` file you were given, and keep the username and password with it. The password is shown only once when the file is created. 3. Open Web Connector and select **Add an application**. 4. Choose the `.qwc` file. 5. Enter the password when Web Connector asks for it. 6. Confirm **Constructable** appears in the application list. 7. Select **Update Selected** to run the connection. Web Connector should sign in and finish without pulling or pushing QuickBooks records. If you need a new password, ask Constructable for a replacement `.qwc` file — the previous password stops working when it's rotated. #### Why did Web Connector reject the username or password? The username or password didn't match. Request a new file and password, then add that file instead of retrying the old one. ### Create an API client **API Access** is how another application calls Constructable as an authorized user. This page creates the client you hand that application; it isn't a developer reference for endpoints. 1. Open **Organization Settings** and select **API Access**. 2. Select **Create client**. The dialog is **Create API client**. 3. Enter **Name** and **Redirect URI**. 4. Save. Copy **Client ID** and **Client secret** from **Save your client secret**. The secret is shown once. 5. Store the secret in the integration before you close the dialog. The empty list reads **No API clients yet. Create one to connect an external integration.** Access tokens expire after two hours; the page says so. To stop a client, select **Revoke**. The dialog is **Revoke API client**. Existing access tokens stop working immediately. When someone connects that client, they see **Authorize API access** and confirm with **Authorize**. They have to be signed in and have access to the organization. > **Note:** You need **Update organization-level settings**. This page is not the same as **Integrations** (QuickBooks, Sage Intacct). The other software can now request access as a user in this organization. ## Access and consequences - **Open organization settings** is what puts **Organization Settings** in the nav and lets you open the page. Admin, Manager, and Employee receive it by default; company roles such as Subcontractor do not, even when they can still read shared catalogs. - **Sync core organization data** makes org-wide catalogs available in project and financial tools. Most default roles have it, and it's editable in the matrix if a role shouldn't receive that data. It does not open Organization Settings by itself. - **Update organization-level settings** is what actually changes those values. Admin receives it by default, and it is not editable in the role matrix — a role that can open the page without Update will find the sections read-only. - **Add, edit, and archive equipment and other material assets** still needs **Open organization settings**, and then shows only **Equipment**. - **Financial Settings** and **Document Signing Settings** additionally require **Manage financials like change orders, contracts, receipts (excluding financial reporting)**. - **Hourly Cost Rates** additionally requires **View hourly cost rates for employees**, and **Integrations** additionally requires **View available integrations**. - Revenue Codes and integration-specific sections appear only when those features are enabled. Changes here can affect shared choices and defaults across projects. They do not change project membership, role permissions, record sharing, or anyone's personal notification delivery preferences. ## Troubleshoot Organization Settings ### Organization Settings is missing Confirm **Open organization settings**. Changing values still needs **Update organization-level settings**. Admin, Manager, and Employee have Open by default; only Admin has Update by default. **Sync core organization data** does not open the page. ### A section is missing or read-only Check its specific permission, organization feature, package, and required integration. Opening the page does not grant every section's access. The common cases: **Financial Settings** and **Document Signing Settings** need financial write on top of settings write, **Hourly Cost Rates** needs **View hourly cost rates for employees**, and **Integrations** needs **View available integrations**. ### Only the Equipment section is showing That's the equipment-manager view. **Open organization settings** plus **Add, edit, and archive equipment and other material assets** opens Organization Settings on **Equipment**, and everything else waits on **Update organization-level settings**. ### Revenue Codes is missing Revenue Codes must be enabled for the organization. ### An archived item disappeared Enable **Show Archived**, then select **Unarchive**. If it is a subcode, restore its parent Cost Code first. ### A project is not using a new organization Cost Code Open that project's **Project Settings** → **Cost Codes** and update its selection. ### API Access is missing Confirm **Update organization-level settings**. The page is under **Platform**, next to **Integrations**. ### Project Stages is missing Confirm **Sync core organization data**. Changing names still needs **Update organization-level settings**. ### An accounting integration shows Auth Error Renew its authorization. If the organization connection is healthy but one project is absent, inspect that project's **Exclude from [integration name] Sync** setting. ### Certificate of Insurance is missing Confirm **Sync core organization data**. The block is always on Organization Settings — it isn't tied to the Financial package. Changing **Review prompt** or **Notify organization users** still needs **Update organization-level settings**. --- # How to manage your account, security, and notifications > Use this guide to sign in, protect and personalize your account, and choose which activity reaches you by email, desktop, or mobile. My Account applies only to you; administrators manage roles and project access elsewhere. Source: https://constructable.ai/help/account-and-security Use this guide to sign in, protect and personalize your account, and choose which activity reaches you by email, desktop, or mobile. **My Account** applies only to you; administrators manage roles and project access elsewhere. Learn how account access differs from roles and record sharing in [Permissions and Data Visibility](https://constructable.ai/help/concepts/permissions-and-data-visibility). ## Start here - **Accept an invitation:** [Sign in for the first time](#sign-in-for-the-first-time). - **Sign in without a password:** [Use a magic link](#use-a-magic-link). - **Change account security:** [Update email or password](#update-email-or-password) and [configure MFA](#configure-mfa). - **Adjust app preferences:** [Update personal preferences](#update-personal-preferences). - Control notifications: [Choose notification activity](#choose-notification-activity), then configure [email](#configure-email-delivery), [desktop](#configure-desktop-delivery), or [mobile](#configure-mobile-delivery). - **Replace a phone:** [Manage registered devices](#manage-registered-devices). - **Sign-in or delivery failed:** [Troubleshoot account and notifications](#troubleshoot-account-and-notifications). ## Sign in and secure your account ### Sign in for the first time 1. Open the invitation email. Project invitations use **Join the project "Project Name" from Company Name**; organization invitations use **Join Company Name on Constructable**. 2. Select **Accept Invitation**. 3. On **Welcome! Let's set up your account.**, choose a password. 4. Select **Register my account and sign in**. Invitations expire after seven days. If the link is missing or expired: 1. Select **Forgot your password?** on the sign-in page. 2. Enter the exact invited email address. 3. Select **Send password reset email**. 4. Open the email, choose a password, and select **Save new password and sign in**. The account exists when someone adds you, so this recovery route does not require another invitation. Check spam and quarantine or ask an administrator which address was invited when email does not arrive. ### Use a magic link 1. Select **Get a magic sign-in link**. 2. Enter your email on **Sign in to your account with a magic link**. 3. Select **Send me a magic sign-in link**. 4. Open the email and select **Sign in to Constructable**. Use **Resend magic link** when needed. Links expire and do not change your password. MFA still requires its six-digit code after a magic-link sign-in. ### Update email or password To change email: 1. Open **My Account** → **Account Settings**. 2. Select **Change Email**. 3. Enter the new address in **Update Email** and submit. The new address becomes your sign-in and account-email address, including notification delivery. To change password: 1. Select **Reset Password**. 2. Wait for **Reset password email sent**. 3. Open the email and follow its reset link. If you cannot receive mail at the current address, contact an organization administrator or `support@constructable.ai`. ### Configure MFA ![Desktop: Account Settings shows the Setup MFA action beside the multi-factor authentication setting.](https://constructable.ai/help-images/account-and-security/mfa.png) To enable MFA: 1. Select **Setup MFA** under **Multi-factor authentication (MFA)**. 2. Scan the QR code with an authenticator app, or enter the shown secret. 3. Enter the current six-digit code. 4. Select **Activate MFA**. To turn it off, select **Deactivate MFA**. This removes the second sign-in factor. If the authenticator is lost, ask an Admin to reset your password and reinvite you; that also disables MFA. ### Update personal preferences - Select **Change Avatar** and upload a JPEG or PNG. - Set **My Timezone** for time display and notification schedules. - Set **Temperature** to Fahrenheit or Celsius. - Set **Language** to **English** or **Spanish**. The same choice is on the sidebar language control. It changes only how Constructable is labelled for you. - Under **User Preferences**, choose **System**, **Light**, or **Dark**. - Choose whether **Scrollwheel zooms the drawing viewer**. New accounts start with this on; if you've already signed in, your previous choice is kept. - Set **Default global page** to **All Projects** or **Global Dashboard**. That's where the organization logo takes you when you leave a project. New accounts start on **All Projects**. With drawing scrollwheel zoom enabled, hold Space or Control—Command on Mac—to pan vertically. These settings affect only your account. ### Sign out Open **My Account**, select **Sign Out of Constructable**, and wait for the sign-in page. Sign-out removes the local session and cached app data. On native, it also deregisters that device from mobile push. ## Configure notification preferences Notification activity and delivery are separate. **Channels** decides what qualifies; Email, Desktop, and Mobile settings decide where it arrives. Both must allow an event. Notification settings never change record access. An alert can point to a record you later cannot open because role, membership, sharing, or status changed. ### Choose notification activity ![Desktop: Notification Preferences lists channel subscription levels for project activity types.](https://constructable.ai/help-images/account-and-security/choose-channels.png) 1. Open **My Account** → **Notification Preferences** → **Channels**. 2. Review Comments, RFIs, Submittals, Meetings, Daily Logs, Project, financial records, and other available channels. 3. Choose for each: - **All Activity** - **Only my Mentions/Ball-in-Courts/Assignments** - **Do not notify me** These are your defaults across projects unless you override a project or record. Changing a Channel affects notifications only; it does not hide records or change anyone else's subscriptions. ### Configure email delivery ![Desktop: Email Notifications shows the digest switch, frequency choices, delivery times, and test action.](https://constructable.ai/help-images/account-and-security/email-notifications.png) 1. Open **Email Notifications**. 2. Enable **Enable Notification Digest Email(s)**. 3. Under **Notification Frequency**, choose **Once a day**, **Twice a day**, or **Three times a day**. 4. Select each delivery hour from 6 AM through 8 PM in **My Timezone**. 5. Select **Send Test Notification**. The digest arrives with the subject "Get Caught Up on Your Projects" and includes qualifying notifications since the prior digest, including ones already dismissed in the app. When someone @mentions you or puts an RFI, submittal, or list item ball-in-court with you — makes it your turn to act — we group those notifications for up to fifteen minutes and send an immediate email with an actionable subject instead of holding them for the next digest; they can also appear in the next digest. For a list item, that's when it's assigned to you while it's open or sent back to **Open**, or when you're its approver and it moves to **In Review** or **Rejected**. Inside, activity is grouped by project and then by the record it happened to, so you read one RFI's morning rather than a chronological jumble. A few things are worth knowing about how it reads: - Each RFI or submittal carries its current status in parentheses beside its title — **(Open)**, **(Closed)**, and so on. That's the status right now, not when the activity happened, which is what tells you whether something still needs you. - Anything that also triggered an immediate email is listed first under its record, so the urgent items are at the top rather than wherever they fell in the day. - Identical activity on the same record is combined with a count, like **(2x)**, instead of repeating the line. - Busier records get a short written summary underneath the list, so you can decide whether to open it without reading every line. > **Note:** The summary is generated for you and won't always be there. Treat it as a way to triage, and open the record before acting on anything consequential. Turning off the email master setting stops digest and immediate email without disabling desktop or mobile delivery. Using the **unsubscribe** link in an email footer is a different thing again: it stops us delivering notification email to you at all, while your in-app notifications carry on as normal. Two kinds of mail are deliberately exempt, because missing them would lock you out of work rather than just quieten it: - Project invitations, so you can still be added to a new project. - Contract and eSigning email — signature requests, approvals, and executed copies. Everything else respects the unsubscribe — digests, immediate emails, and the distribution mail that goes out when an RFI is closed or a Submittal is closed and distributed. If a recipient on one of those lists reports never getting the email, check whether they unsubscribed before you go looking at the distribution list. Many mail apps also show their own unsubscribe button next to the sender details on our emails. It's the same unsubscribe as the footer link, with one difference: it takes effect the moment you click it, without the confirmation page the footer link opens. Changed your mind? Contact team@constructable.ai to resubscribe, or ask a directory administrator to use **Reset password and reinvite** on your profile, which turns email delivery back on along with resetting your sign-in. > **Note:** Unsubscribing isn't the same as turning the digest off. Turning off **Enable Notification Digest Email(s)** stops the notification emails from being created; unsubscribing stops them being delivered. If you want fewer emails rather than none, adjust **Channels** and the digest frequency instead. ### Configure desktop delivery ![Desktop: Desktop Notifications shows the master setting and browser-push switches for each channel.](https://constructable.ai/help-images/account-and-security/desktop-notifications.png) 1. Open **Desktop Notifications**. 2. Enable **Desktop notifications**. 3. Approve the browser permission prompt when shown. 4. Enable browser-push channels. 5. Select **Send Test Notification**. The master switch controls in-app blue unread dots. Channel switches control browser push by record type. Browser push also requires site and operating-system permission plus a qualifying **Channels** level. ### Configure mobile delivery 1. In the Constructable native app, open **Mobile Notifications**. 2. Enable **Mobile notifications** and approve the operating-system prompt. 3. Enable mobile-push channels. 4. Confirm the corresponding **Channels** levels. 5. Select **Send Test Notification**. 6. Lock or background the phone while waiting; iOS does not show the normal banner while the app is foregrounded. If permission was previously denied, enable Constructable notifications in the device settings. To register a phone or tablet for push notifications, open the native app on that device and grant notification permission. ### Manage registered devices 1. Open **Mobile Notifications**. 2. Review **Registered devices** and last-active information. 3. Select **Remove** for an old device. 4. Select **Click again to confirm**. To register a device again, open the native app on it and grant notification permission. The list covers all devices registered to your account. ### Reset notification preferences Select **Reset to Default**, review the confirmation, then select **Reset to Default** again. Reset: - Sets every Channel to **Only my Mentions/Ball-in-Courts/Assignments**. - Enables digest email once a day at 6 AM. - Enables desktop and mobile with their default delivery channels. - Clears project and record overrides to **Only my Mentions/Ball-in-Courts/Assignments**. The reset cannot be undone and affects only your account. If one project is noisy, adjust that project's override instead. ## Access and platform differences - Every standard role can manage its own account; an administrator cannot set another person's delivery preferences. - Desktop browser push requires a supported browser and browser or operating-system permission. - Register mobile push and grant operating-system notification permission in the native app. - Review registered devices from any layout; register each phone or tablet through the native app on that device. - Time-based delivery uses **My Timezone**. - Roles and Permissions control what you can open; notification settings only control delivery. ## Troubleshoot account and notifications ### I cannot sign in Confirm the exact invited email, use the expired-invitation password-reset route, then try a magic link. If MFA is blocking access and the authenticator is lost, ask an Admin to reset and reinvite you. ### An email says sent but never arrives Confirm the account address, check spam and quarantine, and ask the mail administrator whether Constructable mail is blocked. Security flows show neutral confirmations and do not confirm whether an account exists. ### An MFA code is rejected Use the current code, verify the authenticator entry came from the displayed QR code or secret, wait for a fresh code, and confirm the authenticator device clock is accurate. ### Browser push is unavailable Use browser site settings to allow notifications, then return to **Desktop Notifications**. In-app blue dots can still work when browser push is unavailable. ### Mobile push does not arrive Check, in order: native-app permission, **Registered devices**, the mobile master switch, its delivery channel, the matching **Channels** level, and **Send Test Notification**. Background or lock iOS for the test. ### Email digest omits expected activity Check the matching **Channels** level, event time relative to the last digest, current record access, and the account email address. Use the test action to separate delivery from project activity. ### A dismissed notification appears in the digest This is expected. Dismissing clears the in-app item; the digest still includes qualifying activity since its previous delivery. ### A notification opens an access error The notification did not grant access. Ask an administrator to inspect your role, project membership, access level, record sharing, and the record's current status. --- # How to use Contracts and eSigning in Constructable > Getting a contract executed usually means emailing PDFs around and hoping the version that comes back is the one you sent. eSigning keeps that whole process attached to the Commitment or Change Order it belongs to: you prepare the document, route it to approvers and signers, w... Source: https://constructable.ai/help/contracts-and-esigning Getting a contract executed usually means emailing PDFs around and hoping the version that comes back is the one you sent. eSigning keeps that whole process attached to the Commitment or Change Order it belongs to: you prepare the document, route it to approvers and signers, watch who still owes you an action, and end up with a signed PDF on the record. For contract amounts, SOVs, and retention, use the [Commitments guide](https://constructable.ai/help/commitments). ## Start here - **I prepare contracts:** [Configure signing defaults](#configuring-document-signing-settings-and-templates) → [Prepare a document](#prepare-contract-documents-and-recipients) → [Place fields and send](#place-fields-preview-and-send). - **I approve a contract:** [Understand approvals and signing order](#choose-approvers-signers-and-copy-recipients) → [Review and approve or reject](#approve-sign-or-reject-a-contract). - **I sign a contract:** [Open the signing request](#approve-sign-or-reject-a-contract) → [Complete assigned fields](#approve-sign-or-reject-a-contract). - **I monitor execution:** [Track status](#track-contract-status-and-send-reminders) → [Retrieve the signed document](#retrieve-the-completed-signed-document). - **Something is missing or blocked:** Start with [Troubleshooting contracts and eSigning](#troubleshoot-contracts-and-esigning). ### Common task recipes - **Send a Commitment for signature:** Open the Commitment, start **Prepare for Esigning**, upload or generate the PDF, choose two signers, place fields, preview, and select **Send for Signing**. - **Add internal review before signing:** Add users under **Approvers** in Step 1. All approvers must approve before signer routing continues. - **Send a signed copy to stakeholders:** Add **Copy Recipients**. They receive the completed contract after signing. - **Chase an outstanding action:** In **Contract Status**, select **Send Reminder** beside the pending recipient. - **Stop an incorrect envelope:** Select **Actions** → **Cancel eSigning**. The source contract returns to Draft and existing signing access stops. ## Set up and prepare ### Configuring document-signing settings and templates If you're about to send more than one contract, spend a few minutes in Organization Settings first. Signing order, email wording, and reusable templates all come from there, so setting them once saves you correcting the same details on every contract. Review these before you start preparing contracts: - **Document Signing Settings** - **Vendor Contract Signing Order** and **Prime Contract Signing Order**: whether **Other Party** or **My Organization** signs first - The default wording of the approval-request and signing-request emails - Contract templates Signing order is set separately for the two directions your paper travels, because most contractors don't work the same way in both. **Vendor Contract Signing Order** governs subcontracts, purchase orders, and vendor change orders — the ones you issue. **Prime Contract Signing Order** governs the owner contract and prime change orders — the ones you receive. Both start on **Other Party**, so the other side signs first unless you change it. You'll need **Update organization-level settings** as well as **Manage financials like change orders, contracts, receipts (excluding financial reporting)** to see this section at all. Templates can save real time by providing reusable document content, fields, approvers, copy-recipient defaults, and approval-request email wording. In **Configure Contract**, use **Add Template** on **Contract Documents**. Each pick appends that template's PDFs in order; the last template you add sets insurance, copy recipients, and approvers from that template. User-uploaded PDFs stay. If no templates exist, **Add Template** is disabled with **There are no templates set up.**, and **Manage templates** opens the organization template library. > **Note:** Treat a template as a starting point, not a finished contract. Verify the actual PDF, project users, recipients, fields, and email content every time. > **Pro Tip:** Set organization defaults before preparing many contracts. Updating defaults doesn't rewrite an active signing request, so anything already in flight keeps going the way it was sent. #### We changed our signing order. Does that affect contracts already out? Updating defaults doesn't rewrite an active signing request. That's why it's worth getting the defaults right before a batch of contracts goes out. #### Why did our subcontracts change order but the owner contract didn't? They're separate settings. **Vendor Contract Signing Order** covers subcontracts, purchase orders, and vendor change orders; **Prime Contract Signing Order** covers the owner contract and prime change orders. #### What can a template carry for me? Document content, fields, approvers, copy-recipient defaults, and approval-request email wording. Everything else — the actual PDF, the project users, the recipients — still deserves a look before you send. Get these settings right once and every contract after it starts from the correct footing. ### Prepare contract documents and recipients Prepare the contract when the source Commitment or Change Order is ready to enter approval and signing. This first step is where you lock in the exact PDF and the exact people, before you place any fields on the page. 1. Open the applicable Commitment or Change Order. 2. Start **Prepare for Esigning**. 3. In **Configure Contract**, review **Upload Contract Documents and Recipients**. 4. Under **Contract Documents**, use **Add Template** to append organization templates, upload your own PDF, or let us generate the initial contract PDF from the source record — give it a moment to finish. 5. Choose the required **1st signer** and **2nd signer**. 6. Add optional **Approvers** and **Copy Recipients**. 7. On a Commitment, set up the insurance request if you need one. This section doesn't appear on Purchase Orders or Change Orders. 8. Select **Next**. > **Note:** The flow requires exactly the two signing positions shown by the organization signing order, and the same person can't fill both positions. For help deciding who belongs in each role, see [Understanding approvers, signers, and copy recipients](#choose-approvers-signers-and-copy-recipients). #### **Next** won't let me continue. What's missing? Step 1 needs a contract PDF and two different signers. If a document is still uploading or generating, wait for it to finish — and check that nobody is holding conflicting signer, approver, or copy-recipient roles. #### Do I have to upload the PDF myself? No. Under **Contract Documents** you can upload your own PDF, or let us generate the initial contract PDF from the Commitment or Change Order and use that. Finish this step and the document and the people are settled, which leaves only the fields. ### Choose approvers, signers, and copy recipients Four kinds of people can appear on a signing request, and putting someone in the wrong one is a common reason a contract sits still. Here's what each role does so responsibility is unambiguous before you send. - **Approvers** review before signing begins. All listed approvers must approve. Rejection stops the active flow. - The **1st signer** completes assigned fields first. - The **2nd signer** countersigns after the first signer. - **Copy Recipients** do not approve or sign. They receive the completed contract. Add an approver when your process requires an explicit decision before anyone signs. Use **Copy Recipients** for people who need the completed contract but don't need to approve or sign, and avoid assigning the same user to conflicting roles. > **Note:** Approvers are invited one at a time in their listed order. Only the current approver can act or receive a reminder, and signing begins after the final approver completes review. #### Our second approver says they never got anything. Is it lost? Probably not. Approvers are invited one at a time in the order you listed them, so a later approver simply hasn't been reached yet. Only the current approver can act or receive a reminder. #### Should this person be an approver or a copy recipient? Make them an approver when your process needs an explicit decision from them before anyone signs. Make them a copy recipient when they just need the completed contract — copy recipients don't approve or sign. #### Does a recipient who unsubscribed from our emails still get theirs? Yes. Contract and eSigning email ignores a recipient's unsubscribe, because a signature request nobody receives stalls the contract rather than reducing their inbox. If someone insists they got nothing, look at the address on their directory record before you assume it was suppressed. Assign these roles deliberately and the routing does what you expect the first time. ### Place fields, preview, and send With the PDF and recipients configured, this step decides what each signer is actually asked to do. Place fields so each person sees only their own actions, then preview both signer views before you send. 1. In **Place Fields**, select the signer from the recipient control. 2. Place each signature, initials, and date field on the correct page. Every signer needs at least one signature field — **Send for Signing** stays disabled until they do. Approvers don't need one. 3. Add **Merge fields** when the PDF should fill in project, organization, commitment, or signer values. Select **Add merge field** and pick from **Project**, **Organization**, **Commitment**, or **Signer** — **Signer Name** and **Signer Job Title** among them. Those values stamp into the PDF when you send, rather than sitting as overlay fields the signer types. 4. Check field ownership and placement. 5. Select **Next**. 6. In **Confirm & Send**, review approvers, signing order, copy recipients, the **Approval request email**, and the signing-request email. The default subject and body name the project by its number and name — "24-017 - Riverside Clinic" — or by name alone when the project has no number, so a subcontractor with several of your jobs can tell which one it is. To place project details yourself, the email editor's merge fields include **Project Name**, **Project Number**, and **Project Number and Name**; type `{` in the body or use the merge field menu in the editor toolbar. 7. Select **Preview Document** for each signer to verify their view. 8. Leave the link placeholders alone. The approval email needs its `approval_link` placeholder and the signing email needs its signing-link placeholder — they're what turn into the recipient's personal button. Edit the wording around them all you like; delete one and that person gets an email with no way to act on it. 9. Select **Send for Signing**. > **Note:** Each signer must have at least one signature field. You also need at least one field overall before you can continue, and each field has to be assigned to the signer who should complete it. > **Pro Tip:** Previewing lets you check the document without sending it, so use **Preview Document** on both signer views. That's where missing fields, incorrect ownership, and placement problems show up, and catching one here is far easier than cancelling an envelope later. #### Why is **Send for Signing** disabled? Confirm you have two recipients, at least one field, a signature field on every signer, and no preview or send already in progress. If a signer is missing a signature field, the message is **Each signer must have at least one signature field**. If a send fails, correct the visible error and retry from the existing record rather than starting over, so you don't create a duplicate envelope. #### Does previewing send anything to the recipients? No. Previewing shows you the signer's view without sending the request. Once you send, eSigning manages the source record's status and the contract is genuinely in motion. ## Approve and execute ### Approve, sign, or reject a contract When it's your turn to act, you'll have a signing request of your own — by email or as an in-app action. Review the full document before you approve, reject, or complete the fields assigned to you. 1. Open the email or in-app signing action. 2. Select **Review & approve** or **Review & Sign**, as shown. 3. Review the complete document. 4. Complete the required decision or assigned fields. 5. Submit. If this Commitment required insurance and a **Review prompt** is set, the outside signer lands on **Reviewing your insurance** until the certificate PDF finishes review. After that, the signing page opens — including when the badge is **Failed Review**. Approvers can approve or reject. If you reject, we record the decision and any reason you provide, stop the contract, return the source record to Draft, and notify the preparer. Signers act in order, so the next signer can't complete fields early. > **Note:** Don't forward your personal signing link. Each request is tied to its recipient's assignment. #### Can I sign before the person ahead of me? No. Signers act in order, so the next signer can't complete fields early. #### What happens when I reject? We record your decision and any reason you provide, stop the contract, return the source record to Draft, and notify the preparer so the issue can be corrected. Act on your own request and the record shows exactly who decided what. ### Track contract status and send reminders When you need to know who's holding the contract, open the source Commitment or Change Order and review **Contract Status**. It shows approvers, signers, copy recipients, and each person's progress, such as **Pending**, **Viewed**, **Approved**, **Signed**, or **Rejected**. For an outstanding recipient, select **Send Reminder**. The button briefly changes to **Reminder sent**. You can also chase signers from the project **Dashboard** or **Global Dashboard**, whose signature lists show each document's next signer. With **Manage financials like change orders, contracts, receipts (excluding financial reporting)**, you'll see **Send Reminder** beside a signer who isn't you; when you're the one signing, it's **Review & Sign**. Under either button, a line such as "Last sent Oct 14, 3:05 PM" shows when we last emailed that signer the request, counting the original send and every reminder. Check it before nudging someone who heard from us an hour ago. > **Note:** Only the active approver can receive a reminder; later approvers wait for their turn. A reminder doesn't skip approval or signing order. Use the source activity history to review approval and rejection milestones. **Contract Status** shows the rejection reason when the recipient provided one. > **Pro Tip:** When someone is simply slow, send a reminder rather than starting a second eSigning record. A second record means a duplicate envelope, and the contract's history is harder to read afterward. #### Why can't I remind the approver who's next in line? Approvers are reached one at a time, so only the active approver can receive a reminder. Later approvers wait for their turn, and reminding won't move them up. #### Where do I see why someone rejected? **Contract Status** shows the rejection reason when the recipient provided one, and the source activity history records approval and rejection milestones. Check this panel and you always know whose desk the contract is sitting on. ### Retrieve the completed signed document Once everyone has completed the required approvals and signatures, the finished contract comes back to the source record. Here's what you'll see and where to find the executed PDF you'll need for your contract file. - The panel shows **Contract Signed**. - The source Commitment or Change Order becomes Fully Executed. - Constructable attaches the signed PDF to the source history. - Signers, approvers, copy recipients, and the creator receive the completed-contract email without duplicate delivery when one person has multiple applicable roles. - Select **View Signed Document** to open the final PDF. > **Note:** The executed PDF is part of your contract history, so keep it in place rather than replacing it with an unsigned source file. #### Someone is a signer and a copy recipient. Will they get two emails? No. The completed-contract email goes out without duplicate delivery when one person holds multiple applicable roles. #### Everyone signed, but I can't find the document. Confirm the panel shows **Contract Signed** — completion is what retrieves and attaches the final PDF. If all recipients have signed and the file still isn't available, contact support with the project, source record, recipients, and signing times rather than resending. At this point the contract is executed and the proof is filed with the record it belongs to. ### Cancel eSigning and revise a contract Cancel eSigning when the active request contains a document, recipient, or field that needs to be corrected. From **Contract Status**, select **Actions** → **Cancel eSigning**. Confirm **Yes, Cancel**. Cancelling: - Returns the source contract or Change Order to Draft - Prevents recipients from continuing to sign that request - Preserves a cancellation event After cancellation, correct the source and prepare a new signing request. A rejection ends the signing request the same way a cancellation does, and the Commitment or Change Order goes back to **Draft** — but the panel stays on the record reading **Contract rejected**, with who rejected it and the reason they gave. That's on purpose: you want the refusal in the history, not erased. > **Note:** Don't cancel a completed contract for a routine financial correction. Use the [Commitments](https://constructable.ai/help/commitments) or [Change Events](https://constructable.ai/help/change-events) workflow instead. #### Can recipients keep signing after I cancel? No. Cancelling prevents recipients from continuing to sign that request, so nobody can act on the old envelope while you correct it. #### Does cancelling erase the attempt? No. A cancellation event is preserved, so the record still shows that a request went out and was stopped. Cancel, correct, and resend, and the history shows what happened without leaving an active request behind. ## Manage connected contract work ### Manage contract attachments and insurance requests Two different things are called a contract document here, and mixing them up sends the wrong file out for signature. Confirm which one you're attaching before the request goes anywhere. The Commitment's **Contract Document** is separate from the eSigning **Contract Documents** prepared in the three-step flow. Before sending, verify that you selected the intended file. On a Commitment, Step 1 shows the company's existing insurance policies and lets you turn on the insurance requirement, add a note explaining what you need, and attach example documents so the sub can see the format you expect. The insurance section doesn't appear on Purchase Orders or Change Orders. The requirement lands on the outside party — the subcontractor or vendor signing on the other end — and not on your own organization's signer. Whoever signs for you is never asked for a certificate on the way through, whichever side signs first. Approvers, who review before signing, aren't part of the request either. When the signer uploads a PDF and **Organization Settings** has a **Review prompt**, signing waits on **Reviewing your insurance** with the note "We're checking the certificate you uploaded. Signing will open when the review finishes." Your organization's signer never sees that hold. If the review finds issues, signing still opens. The signer sees **Insurance review found issues** — "You can still sign. The reviewer noted:" — plus **Upload a different certificate** if they want to replace the file. Failed review does not block signature. Certificates uploaded this way get the same **Under Review**, **Passed Review**, and **Failed Review** badges as policies added from the directory. Set the prompt and who gets emailed in [Configure Certificate of Insurance](https://constructable.ai/help/organization-settings#configure-certificate-of-insurance). #### Do approvers have to submit insurance? No. Only the outside party signing the contract is asked for insurance. Approvers review before signing and aren't part of that request, and neither is your own organization's signer. #### Does an insurance request mean the coverage has been checked? A **Review prompt** in Organization Settings runs an AI check against that prompt and stamps **Passed Review** or **Failed Review** on the PDF. It isn't a substitute for your compliance process, and a failed review still lets the signer continue. Confirm the file and the insurance setup before you send, and the package that goes out is the one you meant to send. ### Use contracts and eSigning on mobile Approvals and signatures rarely wait until you're back at a desk. Recipients can open signing requests and complete assigned actions on mobile, and source records and status panels use compact layouts on smaller screens. Use the preparation workflow to configure recipients, place fields, compare pages, preview both signer views, and manage templates. Once you've signed, you can download the contract documents without waiting for the other party — useful when you want your own copy on file the moment your part is done. > **Pro Tip:** Review recipient assignments and field placement before sending a signing request. > **Note:** On an iPhone or iPad, a signing link opens in Safari. If it can't, we say so — **Failed to open Safari** — and give you a link to tap instead, along with **Try again** and **Reopen in Safari**. Tapping through is safe; nothing about the signing request has gone wrong. #### Can I prepare a contract from my phone? Use the three-step preparation flow to configure recipients, place fields, and preview signer views. Review each page before sending the request. Sign where you are, prepare where you can see the page. ### Work with financial contract records Signing and the financial record touch each other at four points, and those are the ones that trip people up. Here's what happens at each, and where to read further. **Before you send.** The Commitment or Change Order has to have its amounts and SOV settled, because the contract PDF is generated from them. Changing a value after the document is out means cancelling and resending, not editing the PDF. **While it's out.** The source status is driven by signing, so you can't move the Commitment along by hand. A Change Order's line items are locked once it leaves Draft, and so is any contract SOV line it revises. Commitment amounts stay editable in the ways Financials normally allows, but any change you make won't be reflected in the document already in someone's inbox. **At execution.** The source record becomes Fully Executed and the signed PDF attaches to its history. That's the moment the contract starts behaving as an executed commitment for budget and invoicing purposes. **After execution.** An executed Change Order is locked for every role. An executed Commitment isn't: anyone who can edit Commitments can still correct its contract details and scope of work, and roles with **Edit a commitment's schedule of values after it has been executed** can change its SOV. Those edits don't touch the signed PDF. A record signed through eSigning stays Fully Executed — its status can't be moved back — so routine money changes after execution go through the Change Order workflow. Don't cancel a completed contract to fix a number. For the money itself, use the separate guides for [Prime Contract](https://constructable.ai/help/prime-contract), [Commitments](https://constructable.ai/help/commitments), [Change Events](https://constructable.ai/help/change-events), [Invoices](https://constructable.ai/help/invoices), and [Budget](https://constructable.ai/help/budget). Know what changes hands at each of these four points and the two records stop feeling like one confusing one. ## Troubleshooting ### Troubleshoot contracts and eSigning Nearly every eSigning problem is a package or permission you don't have, a step that's still missing something it requires, or a turn that hasn't come around yet. Find your symptom and work through the checks in order. #### **Prepare for Esigning** is missing 1. Confirm the Financial package is active. 2. Confirm you can view and edit the source Commitment or Change Order. 3. Ask an administrator to check financial write access. 4. Confirm the source record is in a state that can begin eSigning. 5. If an active eSigning record already exists, use its **Contract Status** panel instead of creating another. #### **Next** is disabled in **Configure Contract** Step 1 requires: - A contract PDF - Two different signers Wait for uploads or generated documents to finish. A person cannot occupy conflicting signer, approver, or copy-recipient roles. #### **Next** is disabled in **Place Fields** Add at least one field, assign every signature, initials, and date field to the signer who should complete it, and give each signer at least one signature field. #### **Send for Signing** is disabled Confirm that you have two recipients, at least one field, a signature field on every signer, and no preview or send already in progress. The blocked message for a missing signature field is **Each signer must have at least one signature field**. If sending fails, correct the visible error and retry from the existing record so you don't create a duplicate envelope. #### Signing is stuck on **Reviewing your insurance** That's the hold while a required certificate PDF is checked against the organization's **Review prompt**. It only appears for the outside signer, and only when that prompt isn't blank. Wait for the review to finish, or ask an administrator to confirm the prompt and the uploaded file in [Configure Certificate of Insurance](https://constructable.ai/help/organization-settings#configure-certificate-of-insurance). #### The contract says **Awaiting Approval** Every listed approver must approve. Review the per-recipient **Pending**, **Viewed**, **Approved**, or **Rejected** state and send a reminder to the outstanding approver. #### A signer cannot sign yet Signing happens in order. The next signer receives access only after all required approvals are complete and the earlier signer has finished. #### The source status cannot be edited When eSigning is active, it manages the source status for you. Continue through the eSigning workflow instead of editing that status directly. After a contract is executed through eSigning, the source stays Fully Executed. An executed Change Order's details are locked for everyone; an executed Commitment's details stay editable, but the signed PDF doesn't change with them, so record later changes in scope or value on a Change Order. #### The signed document is missing Confirm the panel shows **Contract Signed**. Completion retrieves and attaches the final PDF. If all recipients have signed but the file isn't available, contact support with the project, source record, recipients, and signing times rather than resending. --- # How to use Closeout in Constructable > Use this guide to plan, generate, monitor, review, download, and troubleshoot Closeout packages. It covers where to find Closeout, section availability, permissions, background generation, notifications, blocked states, and the final ZIP handoff. Source: https://constructable.ai/help/closeout Use this guide to plan, generate, monitor, review, download, and troubleshoot Closeout packages. It covers where to find Closeout, section availability, permissions, background generation, notifications, blocked states, and the final ZIP handoff. ## Start here - **I prepare turnover:** [Plan the package](#plan-a-closeout-package) → [Prepare source records](#prepare-project-records-for-closeout) → [Generate](#generate-a-closeout-package) → [Download and review](#download-review-and-distribute-a-closeout-package). - **I only need one tool's records:** [Export a single tool from its own page](#export-a-single-tool-from-its-own-page). - **I administer access:** [Understand permissions, packages, and visibility](#understand-permissions-packages-and-visibility). - **A package is stuck or failed:** Start with [Troubleshooting Closeout](#troubleshooting-closeout). ### Common task recipes - **Create an owner handoff:** Untick everything the contract doesn't require, generate the package, and review the ZIP outside Constructable before delivery. - **Create a records-only package:** Choose **Unselect all**, then tick Documents, Specs, Drawings, Photos, Daily Logs, **Punch List**, and Inspections. - **Create a financial package:** Choose **Unselect all**, then tick the sections under **Financial Tools**. - **Export just the RFI log:** On **RFIs**, open the settings menu and select **Export RFIs**. The Closeout dialog opens with only RFIs ticked. - **Retry a failed package:** Note the failed section, correct or narrow that source content if appropriate, then generate a new package. ## Understand packages and availability ### Find the Closeout page Closeout doesn't sit in the project sidebar with the day-to-day tools, which is the usual reason people can't find it. Open **Project Settings**, select **Closeouts** under **General**, and select **Open Closeouts**. The panel is there whenever you have **View closeout packages**, and it describes what the page is for: "Generate closeout packages to hand off complete project records to the owner." If Project Settings isn't open to you — which is common for consultants, owners, and anyone whose role stops short of project administration — you'll find **Closeouts** on the project home page header instead, and in the **⋯** menu in the app. It goes straight to the same page. RFIs and Submittals also link straight into Closeout with one section pre-ticked — see [Export a single tool from its own page](#export-a-single-tool-from-its-own-page). Bookmark the Closeout page if you're producing handoffs regularly. ### Understand how Closeout works A Closeout package is a photograph of the project as it stood the moment you generated it. It never updates, it only contains what the person who generated it could see, and it arrives as a ZIP that someone still has to open and check. **Current project records → permitted section selection → background generation → ZIP archive → review and handoff** - A Closeout package is a generated snapshot and does not update when project records change. - The section chooser opens fully ticked the first time, then reopens on your last selection — remembered in this browser and shared across every project. - Only sections available under the creator's permissions and organization packages appear. - You can start more than one package at once; each builds independently. - The **Generated Closeouts** list shows the packages **you** generated, with title, date, status, progress, and a download once complete. A package moves through four statuses while it builds: - **Pending:** The request is queued. - **Processing:** We're assembling records. The tile reads "Starting closeout..." until we know the total, then shows a count like "214 of 903 items." - **Complete:** The ZIP is ready to download. - **Failed:** Generation stopped. The tile names the section it failed on and how far it got, as in "Stopped after 214 of 903 items." A failed package isn't resumed from the Closeout page. Review the failure first, then generate a new package. Package names come from what you selected. Tick more than one section and the tile reads **Closeout Package**; tick exactly one and it's named for that section, as in "RFIs Export" or "Daily Logs Export". That's worth knowing before you generate three packages in a row and have to tell them apart by timestamp. ### Available sections The **Generate Closeout Package** dialog groups its checkboxes under three headers: - **Management Tools:** Documents, Specs, RFIs, Submittals, Meetings - **Field Tools:** Drawings, Photos, Daily Logs, Punch List, Inspections - **Financial Tools:** Prime Invoices, Vendor Invoices, Prime Commitments, Vendor Commitments, Change Orders **Punch List** is your Lists content. The checkbox and the folder in the ZIP both use that name, whatever your lists are called in the field. What you actually see is gated twice. RFIs, Submittals, and Meetings require the Project Management package, and financial sections require the Financial package — then, on top of that, every section requires its corresponding read permission. A whole group header disappears when you can't reach any section in it. ### Troubleshooting Closeout Closeout problems almost always trace back to one of two things: a permission or package you don't have, or a source record that wasn't visible when the package was built. Find your symptom and work through the checks in order. #### I can't find Closeout It isn't in the project sidebar. Open **Project Settings** and use the **Closeouts** panel, or use the **Closeouts** button on the project home page if Project Settings isn't open to you — see [Find the Closeout page](#find-the-closeout-page). If neither is there, you don't have **View closeout packages** on this project. #### Generate Closeout is missing Confirm you have **Generate closeout packages**. Every role has it by default, so a missing button means someone changed it in this project's role settings. #### A section is missing from the chooser Check in this order: 1. The corresponding feature's read permission — **Punch List** needs **View punch lists**, Daily Logs needs the Daily Logs read permission, and so on. 2. Whether Project Management is enabled for RFIs, Submittals, or Meetings. 3. Whether Financials is enabled for financial sections. 4. For Photos, whether you have either **View photos, excluding daily log photos** or **View daily log photos**. Either one is enough for the checkbox to appear. Closeout permission on its own doesn't expose every source section. If an entire group header is gone, you can't reach any section in it. #### A colleague's package isn't in my list That's expected. **Generated Closeouts** shows only the packages you generated. Ask them to download the ZIP and send it to you, or use **Copy Link** on their tile to share the archive link. #### Progress does not move Large projects and media-heavy sections take time, and generation runs in the background — so leave the page and come back later. The creator receives an email when generation completes or fails. If it stays unchanged for an unusually long time, contact support with the project, generation date, creator, status, and displayed counts. #### The package failed Read the tile's failed-section message and progress count, then generate a new package with that section unticked to confirm the rest builds. If the same section fails again, contact support rather than repeatedly generating identical packages. #### The ZIP is missing expected records Confirm the records were active and visible to the package creator at the moment of generation. A package is a snapshot, so generate a new one after source records or permissions change. ## Prepare and generate ### Plan a Closeout package A Closeout package is only as good as the decisions you make before you open the dialog: what the contract requires, which records have to be final first, and who has the access to produce it. The section chooser won't make those calls for you — it opens with everything ticked — so planning is what stops a handoff from carrying material nobody meant to send. 1. Review the contract's turnover requirements. 2. List the required management, field, and financial records. 3. Identify records that must be finalized before export. 4. Confirm who will generate, review, and deliver the package. 5. Decide whether one comprehensive ZIP or several scoped packages are easier for the recipient. Step 4 matters more than it looks. What appears in the chooser depends on the permissions of whoever selects **Generate Closeout**, so the person planning the package and the person producing it need to be talking to each other well before the deadline. > **Pro Tip:** You can regenerate Closeout packages. If source records are still being completed, create a review package now and save the final generation for the handoff itself. #### One big ZIP or several smaller ones? Whichever your recipient can actually work with. One comprehensive package is simpler to track; several scoped packages are easier to open, review, and route to different people. #### What if some records aren't finished yet? Generate anyway, as a review copy. Because a package is a snapshot, the version you deliver should be the one you generate after the source records are final. Plan it first and the package you generate is the package you deliver. ### Prepare project records for Closeout A Closeout package reflects the source records available when you generate it. Anything disorganized in Documents or unpublished in Drawings will be disorganized or absent in the ZIP, so correct and publish those records in their own workflows first. Before generation: - Organize Documents and confirm folder sharing and file names. - Publish the correct Specs and Drawings. - Complete or clearly status RFIs, Submittals, Meetings, list items, and Inspections. - Review Daily Logs and their attachments. - Organize Photos and add useful descriptions. - Confirm financial records and permissions when including financial sections. - Export a spot-check from each critical section when presentation matters. That last one earns its ten minutes. Seeing how a single RFI or Daily Log actually renders tells you more about the finished package than scrolling a record list ever will. > **Note:** Generating a Closeout package doesn't approve anything and doesn't change the status of your source records. It reads your project; it never edits it. #### Does every record have to be finished before I generate? No, but the ZIP shows whatever state the records are in. Anything you wouldn't want an owner to read should be corrected in its own tool, not patched up in the archive afterward. Get the sources right and the package becomes a byproduct instead of a project of its own. ### Understand permissions, packages, and visibility What you can include depends on two layers of access: your access to Closeout, and your access to each source section. That second layer is why two managers on the same project can open the same dialog and see different section lists. - **View closeout packages** lets someone open the Closeout page and download their completed packages. - **Generate closeout packages** lets someone start a generation and delete a package they created. - Each selectable section requires its own read permission, so a **Punch List** checkbox needs **View punch lists** and a Photos checkbox needs either **View photos, excluding daily log photos** or **View daily log photos**. - Package-enabled features appear only when the organization has that package. Every project role — including subcontractors, consultants, owners, and bidders — can view and generate Closeout packages by default. That sounds broader than it is, because the section chooser is still built from each person's own source permissions: a subcontractor who can't read invoices won't see an invoice checkbox. Restrict Closeout in the project's role settings when a role shouldn't be assembling handoffs at all. Packages are personal. **Generated Closeouts** lists only what you generated, so a colleague can't see, download, or delete your packages from their Closeout page, and you can't see theirs. > **Note:** You can distribute the generated ZIP outside Constructable, and once someone downloads a copy, Constructable permissions no longer control it. Reviewing the package before you share it is the last access check anyone gets. #### Why do I see fewer sections than my colleague? Because the chooser is built from your own source permissions and your organization's packages. Neither view is wrong — you're each seeing what you're allowed to export. #### Who should generate the package? Someone whose source access covers everything the handoff requires. Closeout permission alone doesn't expose sections that person can't otherwise read. Understand the two layers and the section chooser stops being a mystery. ### Generate a Closeout package Choose the sections your recipient needs and we'll build the package in the background. There's no need to sit and watch it, and no need to keep the page open while it works. The one thing worth slowing down for is the section list, because it opens with everything already ticked. ![Desktop: The Generate Closeout dialog lists management, field, and financial sections available for the package.](https://constructable.ai/help-images/closeout/generate-package.png) 1. Open **Project Settings**, then select **Open Closeouts** in the **Closeouts** panel. 2. Select **Generate Closeout**. In the app, it's the **+** button in the header. 3. Read the checkboxes under **Management Tools**, **Field Tools**, and **Financial Tools**. The first time you open the dialog every section you can reach is ticked. 4. Untick what this recipient shouldn't get, or select **Unselect all** and tick only what they should. **Select all** puts everything back. 5. Select **Generate Closeout**. You must choose at least one section, and the button stays disabled until you pick one. > **Warning:** Nothing starts unticked, so the risk here isn't forgetting a section — it's shipping one. A default package hands the owner every Daily Log, every photo, and every invoice you can read, and nobody reviews a ZIP that arrived looking complete. Work down the three groups before you generate and turn off what this recipient has no business seeing. After that first time, the dialog reopens on whatever you chose last, and that selection isn't tied to the project. Generate a financials-only package on one job and the next job's dialog opens financials-only too — with the field and management sections silently off. Read the checkboxes every time rather than trusting what you set last month. > **Pro Tip:** You don't have to wait for one package to finish before starting the next. Kick off the owner handoff and a separate records-only package back to back; they build side by side and appear as two tiles in **Generated Closeouts**. #### Do I have to stay on the page? No. Generation runs in the background, and you get an email when your package completes or fails. #### Why is Generate Closeout missing? You don't have **Generate closeout packages** on this project. With only **View closeout packages** you can still open the page and download your own completed packages. Select the right sections and the archive assembles itself while you get on with something else. ### Export a single tool from its own page When someone asks for "the RFI log" rather than a full turnover package, you don't have to open Closeout and untick fourteen boxes. Two tools hand you a one-section export directly. - **RFIs:** open the settings menu in the page header and select **Export RFIs**. - **Submittals:** open the settings menu in the page header and select **Export Submittals**. Each one takes you to Closeout with the **Generate Closeout Package** dialog already open and only that section ticked. Review the selection, then select **Generate Closeout**. From there it behaves like any other package: it builds in the background, lands in **Generated Closeouts**, and emails you when it's done. Daily Logs works differently: **Export Daily Logs** on the Daily Logs page downloads up to 60 days of logs straight to your device without a Closeout package. For the full Daily Log history, tick only Daily Logs in **Generate Closeout Package** yourself. See [Export one or many Daily Logs](https://constructable.ai/help/daily-logs#export-one-or-many-daily-logs). Single-section packages are named for the section, so an RFI export arrives as "RFIs Export" rather than **Closeout Package** — much easier to pick out of a list later. > **Note:** These menu items need **Generate closeout packages**, not just read access to the tool you're exporting. Someone who can read every RFI on the project still won't see **Export RFIs** without it. #### Does this change my saved section selection? Yes. The dialog remembers whatever was ticked when you generated last, so a one-section export becomes your new default. Check the checkboxes the next time you build a full handoff. One menu item and the log you were asked for is already building. ## Review and distribute ### Follow Closeout generation status The generated package tile carries the whole status story: where the package is, how far along it is, and what to download when it's ready. You don't need to keep the page open while we work. Each tile sits under **Generated Closeouts** and shows: - Its name — **Closeout Package** for a multi-section package, or the section name for a single-section one - **Pending**, **Processing**, **Complete**, or **Failed** - Generation date and time - Who asked for it, under **Generated by** - A progress bar reading "Starting closeout..." and then a count like "214 of 903 items" while processing - On failure, the section it died in — "This closeout failed while generating Photos. Try generating a new one." — and how far it got - Final ZIP size and a **Download** button when complete We email you when your package completes or fails, so the honest answer to "should I wait here?" is no. > **Note:** Progress that looks frozen usually isn't. Large projects and media-heavy sections take time, and generation continues in the background. If it stays unchanged for an unusually long time, contact support with the project, generation date, creator, status, and displayed counts. #### Can other people see the package I generated? Not from their own Closeout page — the list shows each person only their own packages. To hand one to a colleague, download the ZIP and send it, or use **Copy Link** in the tile's **⋯** menu to copy the archive link. #### Will I be told if it fails? Yes, by email. The tile also names the section it failed on and the count it stopped at. Between the tile and the email, you'll know the moment the archive is ready. ### Download, review, and distribute a Closeout package Treat every generated ZIP as a draft until you or another reviewer has opened it. **Complete** means we finished assembling the archive, not that the archive contains everything the contract asks for. 1. Wait for **Complete**. 2. Select **Download**. To send someone the archive without downloading it yourself, open the tile's **⋯** menu and choose **Copy Link**. 3. Open the ZIP outside Constructable. 4. Review its top-level sections. 5. Spot-check record counts, file names, dates, PDFs, attachments, and media. 6. Compare the package with the turnover checklist. 7. Deliver it through the project's approved file-transfer method. > **Note:** Don't distribute the ZIP on **Complete** status alone. The archive may still omit records that were unpublished, deleted, unavailable to you when you generated it, or simply not selected. The review is also your last access check. Once the ZIP is in someone else's hands, nothing in Constructable governs where it travels next, so the time you spend opening it beforehand is the cheapest part of the handoff. #### It says Complete, so why is a record missing? Four usual suspects: the record was unpublished, it was deleted, it wasn't available to whoever generated the package, or its section was never selected. Sort out the cause, then generate a new package. #### Should I fix the ZIP by hand? Correct the source records and generate again instead. A hand-edited archive is one nobody can reproduce later, which defeats the purpose of having a generated record of the handoff. Review it before it ships and the handoff stops being something you have to send twice. ### Retain and regenerate Closeout packages An existing ZIP never updates itself. Each package is a snapshot of the project at the moment it was generated, so whenever the source records or the handoff scope change, the answer is a new package rather than a corrected old one. - Keep prior generated entries as evidence of when packages were prepared. - Generate a new package after source changes; an existing ZIP does not update. - Use a narrower selection when producing a supplemental handoff. - Preserve the delivered ZIP and its delivery record in the organization's approved records system. That accumulating list is worth more than it looks when someone asks what was handed over and when. An entry with a creator, a date, and a status answers the question; memory doesn't — which is the argument for tidying it sparingly. To remove a package you generated, open its **⋯** menu, choose **Delete**, and confirm at "Delete closeout?". The tile and its archive link go away for good, so keep the packages that record a real handoff and delete only the mistakes and test runs. > **Note:** Deleting a package doesn't touch a single project record. It removes the generated archive, not the RFIs, photos, or invoices that went into it. #### I generated the wrong package. How do I remove it? Use **Delete** in the tile's **⋯** menu. Generate the corrected package first if you want to compare the two before the wrong one is gone. #### Do I need to store the ZIP somewhere else? Yes. Keep the delivered archive and its delivery record in your organization's approved records system. Closeout preserves the record that a package was prepared; your records system is where the delivered copy belongs. Keep the trail and you can always show what was handed over, and when. --- # Performance and Connectivity > Constructable is designed to keep your everyday project work responsive, even on a large project. For supported project data, you may see a change on screen before Constructable confirms it. Source: https://constructable.ai/help/concepts/performance-and-connectivity Constructable is designed to keep your everyday project work responsive, even on a large project. For supported project data, you may see a change on screen before Constructable confirms it. ## Fast local interactions Many supported changes appear quickly instead of making you wait for Constructable to send the change and receive confirmation. For example, an update you make during a site walk may appear on your screen right away while Constructable confirms it in the background. That immediate update does not mean Constructable has confirmed the change. If Constructable cannot accept it, it may show an error or replace what you see with the saved version. Do not assume your teammates have received an update until Constructable confirms it. ## Fresh updates across the team When Constructable accepts new work or finishes background processing, connected sessions are prompted to refresh the relevant data. Your teammates should normally see accepted changes without reloading the entire page. Updates are not instant or guaranteed while a device is disconnected. A weak jobsite connection, file processing, or a long-running operation can delay what another person sees. ## Progressive loading on large projects Constructable loads large projects in stages. It loads essential information first, then brings in more records and detail as the page or task needs them. Search results and detailed drawing views can also fill in over time. This lets you start working without waiting for every record or high-resolution file. A loading placeholder does not necessarily mean information is missing. Give the view time to finish, especially after you open a large project, switch projects, search across many records, or zoom deeply into a drawing. Downloading your project data to a device can take a while when there's a lot of it. If it runs long, you'll see **Hang tight, it's still loading**. Leave that screen open — the app opens on its own when the download finishes, and closing or reloading starts the download over. (The **Make it go faster** button is there for morale. It doesn't change the download.) If the download actually fails, you'll see **We couldn't load your data** instead, and **Reset and reload** clears the copy saved on this device and downloads a fresh one. ## What this means for you - A common supported edit can appear on your screen before Constructable confirms it. - Teammates who are online usually receive your accepted changes shortly after they happen. - You may be able to start working in a large project while additional details continue to load. - Repeatedly refreshing can interrupt an upload, restart a long data download, or hide the real connection problem. Check the status shown in your current workflow first. ## Prepare for changing connectivity Prepare drawings for offline viewing before entering a low-connectivity area. Reconnect regularly to refresh project records, run search and AI workflows, complete file transfers, and confirm saved changes. In the native app, store the sheets, disciplines, or drawing areas you need while you're online, then test them on your device before field work. Offline storage isn't available in a web browser. See [Storing drawings for offline viewing](https://constructable.ai/help/drawings#storing-drawings-for-offline-viewing). ## If something looks stale or incomplete 1. Confirm that your device is online and that you are in the intended organization and project. 2. Wait for any upload, processing, or saving indicator to finish. 3. Once your connection is stable, reopen the record or refresh once. 4. Verify the change in its normal workflow before you rely on it. 5. If the problem continues, report the project, record, time, browser or device, connection state, and any visible error. For workflow-specific help, see [Troubleshoot Search](https://constructable.ai/help/search#troubleshoot-search), [Troubleshooting Drawings](https://constructable.ai/help/drawings#troubleshooting-drawings), and [Troubleshooting Photos](https://constructable.ai/help/photos#troubleshooting-photos). ## Related help guides - [Search](https://constructable.ai/help/search) - [Agent](https://constructable.ai/help/chat) - [Drawings](https://constructable.ai/help/drawings) - [Photos](https://constructable.ai/help/photos) - [Topics](https://constructable.ai/help/topics) - [Inbox](https://constructable.ai/help/inbox) --- # Trusted AI and Search > Constructable helps you move from a question or phrase to the project records you are allowed to access. Keyword Search finds matching content, meaning-based search can find related ideas even when the wording differs, and AI can bring available sources together in an answer. Source: https://constructable.ai/help/concepts/trusted-ai-and-search Constructable helps you move from a question or phrase to the project records you are allowed to access. Keyword Search finds matching content, meaning-based search can find related ideas even when the wording differs, and AI can bring available sources together in an answer. ## Permission-aware discovery Search and AI check your project and record access before retrieving Constructable information. A search result, generated answer, Chat, notification, or direct link does not give you access to a hidden record. This means you and a teammate can receive different results for the same request. You may belong to different projects, have different role permissions, or have access to different shared records and project data. ## Search for sources, AI for synthesis Use keyword Search when you know a number, name, company, or distinctive phrase and want to open the source record. For example, search an exact RFI number when you need that RFI. Meaning-based matching can help when the project uses different wording from your question. Use an AI answer or Agent when you need a summary, comparison, or explanation across the project information available to you. For example, you might ask for a summary of open coordination concerns before a meeting. AI answers are generated interpretations—not source records, approvals, contractual decisions, or complete reports. ## Source-linked answers When Constructable finds supported source material, AI responses link back to project records so you can inspect the evidence yourself. A drawing reference can open the relevant sheet and highlight the exact matched phrase when the drawing has readable text and a precise match is available. Use links and highlights as review aids. A scan may not contain usable text, a phrase may not be recognized, and a linked record may later be moved, archived, deleted, or restricted. ## What this means for you - Your search results and the project information available to AI are limited to what your account can access in the current project context. - Use exact words for known records and focused, natural-language questions when you want AI to bring information together. - Open source links before you rely on a status, date, quantity, assignment, approval, or contract language. - You and a teammate may see different evidence even when permissions are working correctly. ## Limits and responsible use Search and AI need an online connection. Recently added or changed content can take time to become searchable, especially when Constructable needs to extract text or process meaning from a file. Scanned images, poor-quality PDFs, uncommon wording, and unsupported record types can reduce what is found. AI can leave out relevant material or interpret it incorrectly. It does not guarantee that every past change or visible word was included. When you need complete totals, use a report or the authoritative project tool. Record formal decisions in the appropriate project tool. For practical checks, see [Troubleshoot Search](https://constructable.ai/help/search#troubleshoot-search), [Troubleshoot Chat](https://constructable.ai/help/chat#troubleshoot-chat), and [Verify an AI answer](https://constructable.ai/help/search#verify-an-ai-answer). ## Related help guides - [Search](https://constructable.ai/help/search) - [Agent](https://constructable.ai/help/chat) - [Drawings: navigating and searching in the drawing viewer](https://constructable.ai/help/drawings#navigating-and-searching-in-the-drawing-viewer) - [Dashboard](https://constructable.ai/help/dashboard) - [Reports](https://constructable.ai/help/reports) - [Permissions and Data Visibility](https://constructable.ai/help/concepts/permissions-and-data-visibility) --- # Permissions and Data Visibility > Constructable helps your organization give each person the access they need without exposing every project, record, or action. Your role, project access, record sharing, and the record's status all affect what you can see and do. Source: https://constructable.ai/help/concepts/permissions-and-data-visibility Constructable helps your organization give each person the access they need without exposing every project, record, or action. Your role, project access, record sharing, and the record's status all affect what you can see and do. ## The access layers Several controls work together to determine your access: - **Your organization's package and enabled features** determine which tools are available. - **Organization membership and role** establish your organization-wide access and actions. - **Project membership and project access** determine which projects you can enter. - **Permissions** determine which tools, records, and actions you can use. - **Level-of-access choices** can narrow a permission to records connected to you, such as particular projects, companies, meetings, RFIs, or Submittals. - **Record sharing and status** can further limit access to a Topic, document, draft, or unpublished item. - **Screen layout** determines whether controls appear in a toolbar, drawer, or actions menu. Access through one layer does not bypass the others. For example, if you can view a published drawing during a site walk, you do not automatically have access to every RFI, Submittal, List Item, or Topic pinned to it. ## Consistent visibility Constructable limits project data, Search results, and AI results to records you can access. A direct URL, Thread, notification, or drawing pin still requires access to the underlying record. Because of these checks, two people can have different but valid views. An administrator may see all RFIs, while a project partner sees non-draft RFIs and only their own drafts. A Topic can also be shared with a small group even when more people can view the drawing where it is pinned. ## What this means for you - If an action is missing, check your plan and enabled features, the actions menu for your layout, permissions, access level, record status, and sharing. - A notification or direct record link does not give you access to the record. - You cannot use Search or AI to discover records you cannot access. - When possible, adjust the narrowest relevant permission or sharing rule instead of changing a person's broad role. - Treat your current **Roles and Permissions** matrix as the authority because your organization may have customized its defaults. ## Common boundaries Permissions, visibility, status, and notifications answer different questions: - **Permission** answers what you may access or do. - **Visibility or sharing** answers which permitted audience can see a particular record. - **Status** answers where the record is in its workflow, such as draft, published, open, or archived. - **Notification settings** answer which accessible changes should alert you. Changing notification settings cannot expose a record. Publishing a drawing does not publish its connected RFI, and sharing a Topic does not give you access to every record linked from it. ## If something is missing 1. Confirm that you are in the intended organization, project, and record, then check the record status. 2. Check whether the feature is included in your plan and enabled. 3. Check the person's project membership and project access. 4. Review the specific permission and any level-of-access setting. 5. Review the record's sharing, draft, archive, publication, or deletion state. 6. Look in the toolbar, drawer, or actions menu for your screen layout. See [Troubleshoot Organization Settings](https://constructable.ai/help/organization-settings#troubleshoot-organization-settings), [Troubleshoot Team](https://constructable.ai/help/team#troubleshoot-team), and [Drawing permissions at a glance](https://constructable.ai/help/drawings#drawing-permissions-at-a-glance). ## Related help guides - [Organization Settings](https://constructable.ai/help/organization-settings) - [Roles and Permissions](https://constructable.ai/help/roles-and-permissions) - [Team](https://constructable.ai/help/team) - [Project Setup](https://constructable.ai/help/project-setup) - [Topics](https://constructable.ai/help/topics) - [Inbox](https://constructable.ai/help/inbox) - [Search](https://constructable.ai/help/search) --- # Field-Ready Mobile > Constructable's responsive web experience and native app keep common project work close at hand in the field. Touch-friendly layouts, camera access, photo uploads that can recover from interruptions, and stored drawings help you capture and review everyday work without returni... Source: https://constructable.ai/help/concepts/field-ready-mobile Constructable's responsive web experience and native app keep common project work close at hand in the field. Touch-friendly layouts, camera access, photo uploads that can recover from interruptions, and stored drawings help you capture and review everyday work without returning to a desktop. ## Mobile work follows the same project Whether you use a phone, tablet, or desktop, you work with the same organization, project records, and access rules. When you have a connection, your changes can finish saving and your teammates' updates can appear in the current project. In the native app, a reload or app update returns you to the project you had open on that device. Switching projects on this device is what changes that landing project; opening a different job on desktop does not. On a smaller screen, you may find controls in a header, drawer, bottom toolbar, or overflow menu. Look in these compact-layout controls, then check your permissions and the current record status. ## Resilient field photo capture In the native app, you can capture a photo with the camera or choose one from your device library. The app keeps pending media in a local upload queue while it sends the files. A photo can appear in your current task before the upload finishes, and an interrupted upload can retry. Pending does not mean safely shared. Keep the app open when instructed, wait for uploads to finish, and verify important media in its album or connected record. If you are documenting a concealed condition before the crew closes a wall, confirm the photo finished uploading before you treat it as shared evidence. Signing out or removing local data can discard unfinished local work; closing the app or losing connectivity can delay an upload. ## Drawings prepared for weak connectivity In the native app, you can make the sheets you need for a site walk available offline: a single sheet with **Store on device**, a whole discipline from its header on the Drawings page, or the entire drawing area with **Make All Available Offline**. You can preview and view those sheets if your connection drops. Offline storage isn't available in a web browser. Stored sheets follow the latest published revision. While the app is open and online, it downloads newer revisions of stored sheets, and of sheets newly published into a stored discipline or area. If a revision is published while you're out of signal, your device keeps the revision it already has until you reconnect, so open the app with a connection before you rely on it offline. ## What this means for you - Capture photos, configure notifications, and store the drawings you need before field work. - If the camera is blocked, the app shows **Camera Access Required**. Select **Open Settings** to allow access, then try again. - Let pending photos finish before you leave the workflow or treat them as shared evidence. - In the native app, make critical drawings available offline and test them while you are online, before entering a low-connectivity area. - Reconnect regularly so your uploads can finish and project information can refresh. - Use Split View and overlays on desktop web, mobile web, or the native app. Plan sheet administration — list view, bulk actions, and publishing or editing sheets in groups — for a desktop-width browser, because the native app and phone-sized browser windows show drawings as thumbnails only. - On native iOS, PDF links outside the drawing viewer open in the device viewer rather than the in-app panel. ## Stay connected to project updates Store drawings in the native app before field work for offline viewing. Reconnect regularly to refresh project records, run search and AI workflows, and finish uploads and confirmations. The drawing viewer supports new-tab revision navigation, Split View, and overlays across desktop web, mobile web, and the native app. The Drawings page and drawing set pages are thumbnail-only in the native app and in phone-sized browser windows, so list view and bulk administration need a desktop-width browser. Review the feature availability table in [Drawings platform and feature availability](https://constructable.ai/help/drawings#platform-and-feature-availability). ## Before field work 1. While you are online, open the correct project and allow current information to load. 2. In the native app, make the critical sheets, disciplines, or drawing area available offline. 3. Open a few stored sheets once to make sure they load. 4. Confirm camera, photo-library, and notification permissions as needed. 5. After field work, stay connected until pending uploads finish, then verify the resulting records. For problems, see [An offline sheet will not load](https://constructable.ai/help/drawings#an-offline-sheet-will-not-load), [Storing drawings for offline viewing](https://constructable.ai/help/drawings#storing-drawings-for-offline-viewing), and [Troubleshooting Photos](https://constructable.ai/help/photos#troubleshooting-photos). ## Related help guides - [Drawings: using drawings on a phone or tablet](https://constructable.ai/help/drawings#using-drawings-on-a-phone-or-tablet) - [Drawings: storing drawings for offline viewing](https://constructable.ai/help/drawings#storing-drawings-for-offline-viewing) - [Photos](https://constructable.ai/help/photos) - [Account and Security: configure mobile delivery](https://constructable.ai/help/account-and-security#configure-mobile-delivery) --- # Connected Drawings > Constructable turns plan PDFs into project drawings you can publish, search, and connect to revisions, referenced sheets, markup, and project workflows. Instead of stopping at a file viewer, you can move from a location on the plan to the project information and work connected... Source: https://constructable.ai/help/concepts/connected-drawings Constructable turns plan PDFs into project drawings you can publish, search, and connect to revisions, referenced sheets, markup, and project workflows. Instead of stopping at a file viewer, you can move from a location on the plan to the project information and work connected to it. ## From upload to trusted drawing After you upload a drawing set, Constructable separates it into sheets and prepares it for the viewer. It reads available text and attempts to detect sheet numbers, titles, disciplines, and a usable scale. Treat these details as suggestions, not final drawing data. A drawing administrator reviews and confirms the sheet metadata before publication. Consistent sheet numbers are especially important because they connect a new upload to existing drawings, revision history, sheet references, and search. ## Links and exact locations Constructable identifies many printed sheet references and links them to matching published sheets in the same drawing area. You can use drawing search to find readable text and jump to an exact highlighted location. AI source links can use the same highlighting when a supported phrase is available. Recognition depends on the source PDF. A scanned plan, overlapping text, unusual naming, unreadable reference, unpublished target, or inconsistent sheet number can prevent a link or highlight. ## Revisions stay connected When a confirmed sheet matches an existing drawing, publishing adds it to that drawing's revision history. The newest published revision becomes current, while older revisions remain available for review and comparison. If sets were published out of order, a drawing administrator can [reorder the drawing revision sets](https://constructable.ai/help/drawings#reordering-drawing-revision-sets) on the web so revision numbers follow the order the sets were issued. After revised sheets from a set are published, anyone who can view drawings can select **Generate revision report** on the set. That briefing lists only the sheets that materially changed. Publishing by itself does not create the first report; later publishes update the same report once it exists. Constructable can carry forward scale information and non-takeoff markup when a new revision meets the supported conditions. Check copied markup in the new revision because a changed plan may require you to reposition it. Takeoff markup is not automatically carried forward. ## Pinned project workflows Pins connect exact drawing locations to supported Comments, Topics, RFIs, Submittals, List Items, photos, and other available records. For example, you can pin an RFI to the affected wall detail so the location and formal question stay connected. The pin provides spatial context; the connected record still owns its status, assignments, permissions, and formal history. If you can view the drawing, you still may not be able to view every pin or connected record. Each workflow keeps its own permission and visibility rules. ## What this means for you - Review suggested metadata and scale before you publish or measure. - Keep related revisions in the same drawing area, and confirm sheet numbers consistently. - Use links and highlights to reach context quickly, then verify the source sheet and revision. - Check carried-forward markup on every new revision. - Choose a pin type based on the workflow you need after identifying the location. ## Review drawing details Review extracted metadata, scale, links, searchable text, and revision matching against the source PDF before relying on them. Confirm critical dimensions against contract documents or field conditions. Overlay and Split View comparisons can support your review, but they do not determine contractual significance. If a sheet is missing, a revision became separate, or a link does not work, start with [Troubleshooting Drawings](https://constructable.ai/help/drawings#troubleshooting-drawings). If search does not find what you expect, see [Navigating and searching in the drawing viewer](https://constructable.ai/help/drawings#navigating-and-searching-in-the-drawing-viewer). ## Related help guides - [Understanding drawing areas, drawing sets, sheets, and revisions](https://constructable.ai/help/drawings#understanding-drawing-areas-drawing-sets-sheets-and-revisions) - [What happens while a drawing set is processing](https://constructable.ai/help/drawings#what-happens-while-a-drawing-set-is-processing) - [Reviewing and confirming an uploaded drawing set](https://constructable.ai/help/drawings#reviewing-and-confirming-an-uploaded-drawing-set) - [Managing revisions and editing drawing details](https://constructable.ai/help/drawings#managing-revisions-and-editing-drawing-details) - [Viewing revision changes](https://constructable.ai/help/drawings#viewing-revision-changes) - [Using pins, comments, and screen recordings](https://constructable.ai/help/drawings#using-pins-comments-and-screen-recordings)