Attribute bundles are collections of attributes that can be applied to multiple node types. They ensure consistency across your structure and make maintaining attributes much easierβchange a bundle once, and the change propagates to all node types using it.
Before You Begin
You need:
- Admin role in your account
- Understanding of your structure and which attributes node types need
- Clear idea of which attributes should be shared across multiple node types
What is an Attribute Bundle?
An attribute bundle is a reusable collection of attribute definitions that can be applied to multiple node types.
Think of bundles as templates for common data needs:
- "Basic Info" bundle: Title, Description, Thumbnail (used by all content types)
- "Timing" bundle: Duration, Pacing Notes (used by lessons and activities)
- "Assessment" bundle: Question Count, Time Limit (used by quizzes and tests)
- "Standards Alignment" bundle: Aligned Standards, Alignment Notes (used by curricular content)
Example:
```
Bundle: Basic Info
βββ Attribute: Title (string, required)
βββ Attribute: Description (text, optional)
βββ Attribute: Thumbnail (string/url, optional)
Applied to:
- Course node type
- Unit node type
- Lesson node type
```
Result: All three node types now have Title, Description, and Thumbnail attributes. Update the bundle to add "Author" attribute β all three types get it automatically.
Creating an Attribute Bundle
Step 1: Navigate to Bundles
- Navigate to Schema β Attribute Bundles in the main navigation
- You'll see a list of existing bundles (system and custom)
- Click Create Bundle button
Step 2: Fill Out the Form
Name (Required)
The bundle's display name.
Best practices:
- Use title case: "Basic Info", "Timing Details"
- Be descriptive: "SEO Metadata" not just "SEO"
- Indicate purpose: "Assessment Properties" not "Bundle 3"
Examples:
- β
"Basic Info", "Timing Details", "SEO Metadata"
- β
"Standards Alignment", "Accessibility Features"
- β "Bundle1", "Misc", "Stuff"
Description (Optional)
Explain when and how to use this bundle.
What to include:
- Purpose of the bundle
- Which node types should use it
- Any special considerations
Example:
```
Basic Info - Core metadata for all content types
Apply to all node types that appear in the content tree.
Required attributes ensure consistent authoring experience.
```
Step 3: Create the Bundle
- Click Create Bundle
- You'll be redirected to the bundle detail page
- The bundle is empty (no attributes yet)
- Next: add attributes to the bundle
Adding Attributes to Bundles
After creating a bundle, add attribute definitions to it.
Navigate to Bundle Detail
- From the Bundles list, click on your bundle
- You'll see:
- Bundle name and description
- List of attributes (initially empty)
- "Add Attribute" button
Add an Attribute
- Click Add Attribute
- Fill out the attribute definition form (see below)
- Click Save Attribute
- The attribute appears in the bundle
- Repeat to add more attributes
Attribute Definition Fields
When creating an attribute, you configure:
Name (Required)
- Human-readable name shown to authors
- Examples: "Title", "Duration", "Learning Objectives"
System Name (Required)
- Internal identifier (snake_case)
- Auto-generated from name but editable
- Examples: title, duration_minutes, learning_objectives
- Cannot be changed after creation
Attribute Type (Required)
- Determines what kind of data this attribute holds
- See "Attribute Types" section below
Required (Checkbox)
- If checked, authors must provide a value
- Required attributes block workflow progression
- Optional attributes can be left blank
Help Text (Optional)
- Guidance text shown to authors below the input
- Examples: "Enter a concise title (50 characters or less)"
Default Value (Optional, depends on type)
- Pre-filled value for new content
- Saves authors time for common values
Attribute Types
Choose the appropriate type for your data:
| Type | Data Stored | Use For | Example |
|---|---|---|---|
| String | Short text (up to 255 chars) | Titles, labels, short text | Title, Subtitle, Code |
| Text | Long text (plain) | Descriptions, notes, paragraphs | Description, Instructions |
| Integer | Whole numbers | Counts, durations, quantities | Duration (minutes), Question Count |
| Decimal | Decimal numbers | Prices, ratings, measurements | Price, Rating (1.5 stars) |
| Boolean | True/False | Yes/no flags, toggles | Is Featured?, Is Published? |
| Date | Date (no time) | Dates | Due Date, Release Date |
| DateTime | Date and time | Timestamps | Scheduled Publication |
| Single Select | One choice from list | Dropdown selections | Difficulty Level, Grade Level |
| Multi Select | Multiple choices from list | Tags, categories | Tags, Subject Areas |
| URL | Web link | External resources | Video URL, Resource Link |
| Email address | Contact info | Author Email |
Note: The actual implementation may vary. Check your attribute creation form for available types.
Reordering Attributes
The order of attributes in a bundle affects the order they appear in content node edit forms.
To reorder:
1. View the bundle detail page
2. Use drag handles or reorder controls next to attributes
3. Drag to the desired position
4. Order saves automatically
Order matters for:
- Author experience (related fields grouped together)
- Form usability (logical progression)
Best practice: Put required attributes first, optional at the end.
Applying Bundles to Node Types
Once a bundle has attributes, apply it to node types.
From Node Type Editor
- Open the Structure Builder
- Click on a node type
- Scroll to the Attribute Bundles section
- Click Add Bundle or select from available bundles
- Choose the bundle to apply
- Save
Result: All attributes from that bundle are now available when authoring content of that node type.
Multiple Bundles Per Node Type
Node types can have multiple bundles applied:
Example:
- "Lesson" node type has:
- "Basic Info" bundle (Title, Description, Thumbnail)
- "Timing" bundle (Duration, Pacing Notes)
- "Standards Alignment" bundle (Standards, Alignment Notes)
Attribute display order:
1. Direct attributes (added directly to node type)
2. Bundle 1 attributes
3. Bundle 2 attributes
4. Bundle 3 attributes
Bundle Picker
When applying bundles, you'll see:
System Bundles
- Provided by CurryCMS or modules
- Show "System" badge
- Examples: "Standards Alignment"
Custom Bundles
- Created by your account
- Fully editable
- Show in regular list
System vs. Custom Bundles
System Bundles
Characteristics:
- Provided by CurryCMS or installed modules
- Have account_id = nil in the database
- Read-only (cannot edit or delete)
- Show "System" badge in the list
Examples:
- Standards Alignment: Enables content-to-standards linking
- Workflow Status: Publishing workflow attributes (if module enabled)
What you can do:
- Apply to node types
- View attributes
- See which node types use them
What you cannot do:
- Edit attributes in system bundles
- Delete system bundles
- Change bundle description
Why they're read-only:
System bundles are managed by code updates to ensure compatibility with platform features.
Custom Bundles
Characteristics:
- Created by your account admins
- Have your account_id
- Fully editable
- Can be deleted (if not in use)
What you can do:
- Add, edit, remove attributes
- Apply to any node type in your account
- Delete when no longer needed
Editing Bundles
Editing Bundle Metadata
- Open the bundle from the Bundles list
- Click Edit (if available in UI)
- Update name or description
- Save
Safe to change:
- Name (display only)
- Description
Adding Attributes to Existing Bundles
- Open the bundle
- Click Add Attribute
- Configure the new attribute
- Save
What happens:
- New attribute is added to the bundle
- All node types using this bundle now have the attribute
- Existing content nodes get the attribute (with no value unless default is set)
- Authors see the new field when editing
Impact: New attributes appear on all types using the bundle immediately.
Removing Attributes from Bundles
- Open the bundle
- Find the attribute to remove
- Click Delete or remove button
- Confirm deletion
β οΈ Warning:
- Attribute is removed from all node types using the bundle
- Existing content values are orphaned (data remains in database but hidden from UI)
- This action cannot be easily undone
Before removing:
- Check which node types use this bundle
- Communicate changes to authors
- Consider exporting data if needed
Renaming Attributes
Display name changes:
- Safe to change anytime
- Just changes what authors see
- No data impact
System name changes:
- Cannot be changed after creation
- Would break API references and data integrity
Bundle Propagation
Changes to bundles automatically propagate to all node types using them. This is the main benefit of bundles.
Example:
Initial state:
- "Basic Info" bundle has: Title, Description
- Applied to: Course, Unit, Lesson
You add "Author" attribute to "Basic Info" bundle:
Result:
- Course now has: Title, Description, Author
- Unit now has: Title, Description, Author
- Lesson now has: Title, Description, Author
One change β three node types updated.
Propagation Scenarios
Adding an attribute:
- β
Appears on all node types using the bundle
- β
Existing content gets the attribute (blank unless default provided)
- β
Authors see it in edit forms immediately
Removing an attribute:
- β οΈ Removed from all node types
- β οΈ Data orphaned but not deleted
- β οΈ Authors no longer see it in forms
Editing attribute properties:
- β
Changes reflect on all node types
- β
Examples: changing help text, required status, default value
Reordering attributes:
- β
New order reflects on all node types
- β
Author form order updates
Testing Changes Before Rollout
Before making significant bundle changes:
- Note which node types use the bundle
- Create a test curriculum using that structure
- Add test content of affected node types
- Make the bundle change
- Verify content forms show the change correctly
- Communicate changes to authors
Removing Bundles from Node Types
If a node type no longer needs a bundle:
- Open the node type in Structure Builder
- Go to Bundles section
- Find the bundle to remove
- Click Remove or uncheck it
- Confirm removal
What happens:
- Attributes from that bundle are removed from the node type
- Existing content retains data (orphaned but not deleted)
- Authors no longer see those attributes when editing
Impact: Only affects this one node type. The bundle remains available for other types.
Deleting Bundles
When You Can Delete
You can delete a custom bundle if:
- It's not applied to any node types
- It's a custom bundle (not system)
- You have Admin role
When You Cannot Delete
You cannot delete if:
- The bundle is applied to one or more node types
- It's a system bundle
- You don't have Admin permissions
Error message:
Cannot delete bundle: it is used by 3 node type(s).
How to Delete
First: Remove the bundle from all node types using it
- Go to each node type
- Remove the bundle from that type
- Repeat for all types
Then: Delete the bundle
- Navigate to Bundles list
- Click on the bundle
- Click Delete Bundle
- Confirm deletion
β οΈ Warning: Deletion is permanent. The bundle definition and all its attributes are removed.
What Gets Deleted
- Bundle definition
- All attribute definitions in the bundle
- Relationships to node types (already removed in step 1)
What is NOT Deleted
- Content node data (orphaned but preserved in database)
- Node types that used the bundle
- Other bundles
Common Bundle Patterns
Pattern 1: Universal "Basic Info"
Bundle: Basic Info
Attributes:
- Title (string, required)
- Description (text, optional)
- Thumbnail (url, optional)
Apply to: All node types
Why: Every content type needs these core fields
Pattern 2: "Timing Details"
Bundle: Timing Details
Attributes:
- Duration (integer, minutes, optional)
- Estimated Time (string, optional)
- Pacing Notes (text, optional)
Apply to: Lesson, Activity, Assessment
Why: Time-based content needs duration and pacing info
Pattern 3: "Standards Alignment"
Bundle: Standards Alignment (System Bundle)
Attributes:
- Aligned Standards (multi-select, optional)
- Alignment Notes (text, optional)
- Alignment Category (single-select, optional)
Apply to: Unit, Lesson, Activity, Assessment
Why: Curricular content aligns to educational standards
Pattern 4: "SEO Metadata"
Bundle: SEO Metadata
Attributes:
- Meta Title (string, optional)
- Meta Description (text, optional)
- Canonical URL (url, optional)
Apply to: Course, Unit (published content)
Why: Public-facing content needs SEO optimization
Pattern 5: "Accessibility"
Bundle: Accessibility Features
Attributes:
- Alt Text for Images (text, optional)
- Transcript Available (boolean, optional)
- Closed Captions (boolean, optional)
Apply to: Video, Multimedia content types
Why: Ensure accessible content creation
Best Practices
Keep Bundles Focused
Do:
- β
"Timing" bundle with duration-related fields
- β
"SEO" bundle with web metadata
- β
"Assessment" bundle with quiz properties
Don't:
- β "Everything" bundle with 20 unrelated attributes
- β "Miscellaneous" bundle (no clear purpose)
Why: Focused bundles are easier to maintain and apply appropriately.
Name Bundles Descriptively
Good names:
- β
"Basic Info" (everyone knows what this means)
- β
"Standards Alignment" (clear purpose)
- β
"Timing Details" (specific to time)
Poor names:
- β "Bundle 1", "Bundle A" (meaningless)
- β "Misc" (unclear what's included)
- β "Fields" (too vague)
Why: Clear names help admins decide when to apply each bundle.
Document Bundle Purpose
Use descriptions to explain:
- What the bundle is for
- Which node types should use it
- Any special considerations
Example:
```
SEO Metadata - Search engine optimization attributes
Apply to content types that are published on the public web.
Do not apply to internal-only or unpublished content types.
Required for: Course, Program
Optional for: Unit, Module
```
Plan Attribute Order Thoughtfully
Order matters for user experience:
Required fields first
- Ensures authors complete essential fields
- Reduces errors during submission
Group related fields
- SEO fields together
- Timing fields together
- Helps authors think in context
Optional fields last
- Authors can skip if not relevant
- Reduces form fatigue
Example order for "Basic Info":
1. Title (required)
2. Description (optional)
3. Thumbnail (optional)
Start with Core Bundles Only
Begin with:
- "Basic Info" (Title, Description)
- "Timing" (if you have timed content)
Add later:
- "Standards" (when you enable standards alignment)
- "SEO" (when publishing to web)
- Specialized bundles as needs emerge
Why: Start simple. Add complexity only when needed.
Consider Dependencies
Before editing a bundle:
- Click on the bundle in the list
- Look at "Used by X node types"
- Understand impact: changes affect all those types
- Communicate with authors if making breaking changes
Test Bundle Changes
Before applying widely:
1. Create a test structure
2. Apply bundle to a test node type
3. Create test content
4. Verify attributes appear and behave correctly
5. Then apply to production structures
Why: Catching issues in testing avoids disrupting authors.
Use System Bundles When Available
If a system bundle provides what you need:
- β
Use it (like "Standards Alignment")
- β Don't recreate it as a custom bundle
Why: System bundles integrate with platform features and receive updates.
Common Questions
Can I edit attributes in a bundle after applying it to node types?
Yes. Changes propagate automatically to all node types using the bundle. This is the main benefit of bundles.
What happens to existing content data when I remove an attribute?
Data is orphaned but not deleted. It remains in the database but is hidden from the UI. Re-adding the attribute makes the data visible again.
Can I apply the same bundle to a node type twice?
No. Each bundle can only be applied once per node type.
How many bundles can a node type have?
There's no hard limit. However, too many bundles create a cluttered authoring experience. Aim for 2-4 bundles per type.
Can I copy a bundle from another account?
Not automatically. You must manually recreate the bundle. Consider exporting/importing if you need this frequently.
What's the difference between a bundle attribute and a direct attribute?
- Bundle attribute: Defined in a bundle, shared across node types
- Direct attribute: Added directly to one node type, not reusable
Use bundles for reusable attributes, direct for type-specific fields.
Can I rename a bundle after creation?
Yes, but only the display name. The bundle doesn't have an immutable system name like node types do.
Why can't I delete a system bundle?
System bundles are managed by platform code to ensure feature compatibility. They update with platform releases.
Can I create a variant of a system bundle?
You cannot edit system bundles, but you can create a custom bundle with similar attributes if you need variations.
How do I know which bundles a node type uses?
- Open the Structure Builder
- Click on the node type
- Scroll to the Bundles section
- Applied bundles are listed there
Troubleshooting
"Cannot delete bundle: it is used by X node types"
Solution:
1. Note which node types use it (shown in error message or bundle detail)
2. Go to each node type's Bundles section
3. Remove the bundle from each type
4. Return to bundle and delete
Changes to bundle aren't appearing on node types
Check:
- Refresh the structure page
- Verify the bundle is actually applied to those node types
- Clear browser cache if necessary
Attribute order is wrong in content edit form
Solution:
- Open the bundle
- Reorder attributes within the bundle
- Changes propagate immediately to all node types
Bundle shows wrong attribute count
Solution:
- Refresh the Bundles list page
- The count is calculated from associated attributes
"System bundles cannot be deleted"
Reason:
You're trying to delete a system bundle. These are read-only and managed by the platform.
Solution:
You cannot delete system bundles. If you don't need it, simply don't apply it to any node types.
Can't find the bundle I just created
Check:
- Scroll down the Bundles list
- Ensure you saved the bundle (not just filled the form)
- Verify you're viewing the correct account
Attributes from bundle not showing in content editor
Possible causes:
1. Bundle is applied to node type, but content node is of a different type
2. Browser cache issue (hard refresh)
3. Bundle has no attributes yet
Solution:
- Verify bundle is applied to the correct node type
- Ensure bundle has attributes
- Refresh the content edit page
Next Steps
After creating and applying bundles:
- Managing Node Types - Apply bundles to configure node types
- Designing Structures - Plan overall structure design
- Creating Curricula - Use your structure to build content
Related Documentation:
- Admin Overview - Your administrative capabilities
- Managing Node Types - Configure content types
- Designing Structures - Structure design patterns
- Team Management - Manage user roles