generateMediaCollection utility allows you to create custom media collections with full control over hooks, fields, access control, and admin settings.
When to Use generateMediaCollection
UsegenerateMediaCollection when you need to:
- Add custom hooks (beforeChange, afterRead, etc.)
- Configure custom access control rules
- Customize admin UI settings (grouping, descriptions, etc.)
- Override default collection behavior
- Create multiple media collections with different configurations
Basic Usage
ThegenerateMediaCollection function is defined in src/collections/Media/index.ts:10-46:
Function Signature
cloudinaryOptions: Cloudinary configuration (config, folder, versioning, publicID, etc.)collectionConfig: Partial Payload collection config to merge with defaults
CollectionConfig ready to use in your Payload configuration
Advanced Examples
Custom Hooks
Add custom hooks to process media on upload or update:Custom Fields
Add custom fields directly in the collection config or via plugin options:Fields defined in
collectionConfig.fields take precedence over cloudinaryOptions.customFields. The plugin merges custom fields with Cloudinary fields automatically.Access Control
Configure fine-grained access control:Admin UI Customization
Customize how the collection appears in the admin panel:Multiple Media Collections
Create separate collections for different types of media:How It Works
ThegenerateMediaCollection function from src/collections/Media/index.ts:10-46 performs the following:
Merge Custom Fields
Prioritizes fields from
collectionConfig.fields, falls back to cloudinaryOptions.customFieldsCreate Collection Config
Merges provided config with defaults:
- Sets
slug: 'media'(can be overridden) - Configures
upload.disableLocalStorage: true - Sets admin defaults (description, useAsTitle)
Best Practices
Use Plugin for Simple Cases
Use Plugin for Simple Cases
If you only need to add custom fields without hooks or access control, use the plugin’s
customFields option instead of generateMediaCollection.Override Slug for Multiple Collections
Override Slug for Multiple Collections
When creating multiple media collections, always override the slug:
Keep Cloudinary Options Consistent
Keep Cloudinary Options Consistent
Define a shared
cloudinaryConfig object and reuse it across collections to avoid duplication.Test Hooks Thoroughly
Test Hooks Thoroughly
Custom hooks can affect upload performance and data integrity. Always test beforeChange and afterChange hooks with various file types.
Next Steps
Media Collection Structure
Understand all available fields in media documents
Frontend Integration
Use media in your React/Next.js applications