Historical Context & Motivation
Before Building Information Modeling (BIM) transformed architectural practice, design documentation relied on layers of two-dimensional drawings annotated by hand or through rudimentary CAD attribute systems. Tracking project-wide information—such as finish materials, cost codes, or sustainability ratings—required external spreadsheets or labor-intensive manual coordination. As BIM matured, Autodesk recognized that architects and designers needed a way to embed custom metadata directly into models, metadata that could travel with every element across every view and schedule. The introduction of project parameters in Revit addressed this gap by letting users define data fields that bind to entire categories of elements—walls, doors, rooms, furniture—ensuring consistent, queryable information throughout the project file.
The core question this lesson addresses is deceptively simple: how do you add a custom piece of information—say, an acoustic rating or a color finish code—to every element of a given category across an entire Revit project, and how do you make that information appear in schedules? Project parameters are the answer, and understanding them is essential for any designer working within a BIM-driven practice.
Core Principles & Definitions
A project parameter is a user-defined data field that exists only within the current Revit project file (.rvt). Unlike family parameters—which live inside a family definition and travel with it from project to project—project parameters are created at the project level and then bound to one or more element categories. Once bound, the parameter appears on every instance (or type) within those categories, enabling you to fill in values and schedule them. Understanding a few foundational concepts makes the entire system intuitive.
Category Binding
Instance vs. Type
Data Disciplines & Types
Scheduling Only (No Tags)
Parameter Group Placement
Visual Explanation — The Binding Workflow
Examine the diagram from top to bottom. In Step 1, you open the Project Parameters dialog (Manage tab → Project Parameters) and define a new entry—its name, discipline, and data type. Step 2 asks you to declare whether the parameter should be an instance parameter (each placed element carries its own value) or a type parameter (the value is shared by every element of that type). Step 3 is the binding stage: you check one or more category boxes in the dialog, and Revit attaches the new field to every existing and future element in those categories. The dashed boundary at the bottom of the diagram represents the project scope—the parameter lives here and only here. Finally, the amber box at the bottom reminds us that bound project parameters become schedulable fields, which is their primary strength in documentation workflows.
How It Works — The Parameter Hierarchy
Revit maintains an internal relational database where every element is an object carrying a set of parameter-value pairs. When you add a project parameter, Revit essentially appends a new field definition to its schema for the selected categories. Understanding the parameter hierarchy clarifies when to use project parameters versus other types. At the foundation sit built-in parameters—fields like Width, Height, and Level that Revit hardcodes into each family category. Above them are family parameters, defined inside the Family Editor and embedded in the .rfa file. Then come project parameters and shared parameters, both of which are user-defined but differ in portability and tag-ability.
Instance vs. Type: A Decision Framework
The instance-vs.-type decision is perhaps the most consequential choice you make when creating a project parameter. An instance parameter stores a unique value for each placed element: if you have 200 doors, each can carry a different "Installation Date." A type parameter stores a single value per family type: all "36×84 Single Flush" doors share one "Fire Rating" value. Choosing incorrectly does not cause errors at first, but it leads to data management headaches later—dozens of redundant edits if you chose instance when type was correct, or loss of granularity if you chose type when instance was needed.
| Criterion | Instance Parameter | Type Parameter |
|---|---|---|
| Value varies per element? | Yes — each element has its own value | No — one value shared by all elements of that type |
| Typical use case | Installation date, room-specific notes, unique IDs | Fire rating, manufacturer, cost per unit |
| Editing scope | Properties palette per selected element | Edit Type dialog — changes propagate to all instances |
| Schedule behavior | Each row shows the individual element's value | All elements of same type show identical value |
Data Types Available
Revit offers roughly two dozen data types for project parameters, grouped under disciplines such as Common, Structural, HVAC, Electrical, Piping, and Energy. For Visual Arts students working primarily with interior finishes, furniture layouts, and spatial design, the most frequently used data types are Text (free-form strings), Integer (whole numbers for counts), Number (decimal values for cost or ratings), Yes/No (boolean toggles for flags like "Accessible"), and URL (links to product data sheets). Selecting the correct data type matters because Revit validates input—if you set a parameter as Integer, you cannot type "Red" into its field.
Detailed Breakdown — Parameter Types Compared
Revit's parameter ecosystem includes several distinct types, and it is crucial to understand where project parameters fit among them. The diagram below maps out the four primary parameter types, their scope, and their capabilities. Misidentifying which type to use is one of the most common mistakes beginners make—especially confusing project parameters with shared parameters, which look similar in the dialog but serve different purposes.
The key takeaway from this comparison is that project parameters occupy a sweet spot: they are quick to create, require no external files, and immediately populate schedules. Their one significant limitation—they cannot appear inside annotation tags—is the primary reason shared parameters exist. If you are building a door schedule that tracks custom finish codes and you never need to display those codes as tags on a floor plan, project parameters are the simplest and most efficient choice.
Worked Example — Adding a "Finish Color" Parameter to Furniture
Imagine you are designing an art gallery interior. You have placed dozens of furniture elements—display pedestals, benches, reception desks—and your client wants a schedule listing every piece of furniture alongside its intended finish color. Revit's built-in Furniture parameters do not include a "Finish Color" field, so you need to create one as a project parameter.
Project parameter (not "Shared parameter"). Enter the Name: Finish Color. Set Discipline to Common and Type of Parameter to Text. Text is appropriate here because color names ("Matte Black," "Warm White") are descriptive strings.Furniture. You could also check Furniture Systems if you are using system furniture. Optionally, assign the parameter to the group Identity Data so it appears in the Identity Data section of the Properties palette. Click OK twice to confirm.Matte Black and press Enter. Create a Furniture Schedule (View → Schedules → Schedule/Quantities → Furniture), add "Finish Color" as a scheduled field, and the value appears in the table. You can sort and filter by this field to produce color-coded installation documents.Strengths, Limitations & Common Pitfalls
| Strengths | Limitations |
|---|---|
| Quick to create—no external file management required. | Cannot be displayed in annotation tags on views. |
| Immediately available in schedules for sorting, filtering, and exporting. | Confined to the current .rvt file—does not transfer when families are loaded into other projects. |
| Can bind to multiple categories at once (e.g., Walls and Floors together). | Cannot be used in formulas within the Family Editor. |
| Supports a wide range of data types (Text, Number, Yes/No, URL, etc.). | No GUID-based identity—if you recreate the parameter in another project, Revit treats it as a different field. |
| Instance or Type scope provides flexibility for varied workflows. | Over-creating project parameters can clutter the Properties palette; use parameter groups wisely. |
Connection to Advanced Theory — Shared Parameters & Beyond
Project parameters are an excellent starting point, but professional BIM workflows almost always evolve toward shared parameters and global parameters. Shared parameters are defined in an external .txt file and assigned a GUID (Globally Unique Identifier), which allows Revit to recognize the same parameter across multiple project files, families, and even IFC exports. Global parameters, introduced in later Revit versions, allow project-level values to drive dimensional constraints—useful for maintaining consistent setback distances or clearance zones across an entire model. The table below summarizes the progression from project parameters to these more advanced types.
| Feature | Project Parameter | Shared Parameter | Global Parameter |
|---|---|---|---|
| Definition location | Inside .rvt project | External .txt file | Inside .rvt project |
| Schedulable | Yes | Yes | No |
| Taggable | No | Yes | No |
| Drives geometry | No | No (unless in family) | Yes — constrains dimensions |
| Cross-project portable | No | Yes (via .txt file) | No |
As you advance in BIM practice, you will find that many firms maintain a standardized shared parameter file that ensures consistency across all projects. Understanding project parameters first provides the conceptual foundation—binding, instance vs. type, data types, category selection—that transfers directly to shared parameters. The only additional complexity with shared parameters is managing the external .txt file and understanding GUIDs. Future lessons in this series will explore shared parameters in depth, as well as strategies for parameter naming conventions and organizational standards that keep large projects manageable.
Practice Problems
Lesson Summary
A project parameter is a user-defined data field that lives within a single Revit project file and is bound to one or more element categories—such as Walls, Doors, Furniture, or Rooms—so that every element in those categories automatically receives the new field. You choose between instance scope (unique value per element) and type scope (shared value across elements of the same type), and you select an appropriate data type (Text, Number, Yes/No, URL, etc.) to govern input validation and display.
Project parameters are schedulable but not taggable—if you need values to appear in annotation tags or be consistent across multiple project files, use shared parameters instead. The creation workflow follows three steps: define the parameter (name, discipline, data type), set instance or type, and bind to categories. This system lets designers embed rich, project-wide metadata—finish colors, sustainability ratings, fabrication assignments—directly into the BIM model, making documentation more accurate and collaborative.