Your Figma component library has a Card component with four variants: default, featured, outlined, and minimal. Your CMS has a generic content block with a ''tyle' 'ropdown that doesn't match any of those names. Every developer who builds a new page has to figure out which CMS value maps to which component variant. This mapping problem compounds across every component in your design system.
Model Content Types to Match Component Props
The core principle: your CMS content model should mirror the props your components accept, not a generic ''ontent' 'chema. If your HeroSection component accepts a variant prop with values centered | left-aligned | with-media, your CMS hero content type should have a field with exactly those options.
ContentGrid's schema definition supports enum fields — fields with a fixed set of allowed values. Define them to match your component's accepted values, and your TypeScript SDK generates types that match exactly. No translation layer needed.
Structured Content Over Rich Text
Rich text fields give editors flexibility but break the component API contract. If your FeatureGrid component expects a structured array of features (each with an icon, title, and description), don't model this as a rich text block. Model it as a repeating structured type in your CMS.
- Feature item: icon (enum or image reference), title (short text), description (single paragraph text)
- FeatureGrid: array of Feature item references, layout variant (2-column | 3-column | 4-column)
- Result: your component receives a typed array that matches its props exactly
This approach keeps editors productive — they fill in structured forms rather than formatting rich text — and keeps developers confident that the data shape matches the component's expectations.
Tokens and Design System References
If your design system uses a token system from Figma (colour tokens, spacing tokens, typography tokens), you can reference token names in your CMS schema rather than raw values. A colour field in your CMS might accept brand-primary | brand-secondary | neutral | accent — matching your Figma token names exactly. Your component maps the token name to the CSS variable or design token value.
When the design system updates a token value, the CMS content doesn't change — the token name stays the same. Only the CSS variable changes. Content and design stay decoupled.
Workflow: From Figma to CMS Schema
- Document each component's props in Figma component annotations
- Use those prop definitions as the source of truth for CMS field names and enum values
- Review the CMS schema with your design team before building the frontend
- Set up ContentGrid's TypeScript SDK to generate types, and verify they match your component prop types
When your CMS and design system speak the same language, the developer building a new marketing page spends time on the product, not on translating between two systems that were built independently.
Ready to start tracking your competitors?
ContentGrid automatically monitors competitor websites, emails, and social media — and delivers structured intelligence straight to your inbox.