Skip to content

Strapi Content Types

The Birdhouse system uses a customized Strapi CMS with multiple interconnected content types. This page provides an overview of each content type, its purpose, and how it relates to others.

The central content type. Defines an entire questionnaire flow including questions, rules, screens, validations, and metadata.

Aspect Details
Questions 30+ component types in the questions dynamic zone (inputs, screens, checkout, processing, etc.)
Rules 4 rule components for conditional routing between questions
Metadata Name, slug, type, regions, vertical relation, constants, variants
Calculated fields Derived values computed from answers at runtime
Related types Links to vertical, quote-page (via QUOTE_CUSTOM questions), option-list (via AUTOSUGGEST/DROPDOWN_SINGLE)

See: Question Types, Rule Operators, Questionnaire Metadata


Represents an insurance product type. Ties together branding, pricing, Stripe integration, and display content.

Aspect Details
Insurance types 32 types (HOUSEHOLD, PUBLIC_HEALTH, DENTAL, LIABILITY, etc.)
Branding Image, color code, human-readable name
Payments Stripe production and staging product IDs
Content Title, excerpt, description, label
Plan mapping Internal plan names to display names
Policy modal Sections and buttons for the policy detail modal

See: Vertical Schema


Defines the pricing and customization page shown during a questionnaire flow. Contains customization controls, content sections, and conditional visibility rules.

Aspect Details
Customizations Switches, sliders, and toggles in the quoteOptions dynamic zone
Content Addons, coverage lists, tables, info boxes, FAQ, titles in the content dynamic zone
Rules Per-component visibility rules with HIDDEN/DISABLED results
Footer Required CTA footer with optional conditional overrides
Related types Links to table, FAQ collection

See: Quote-Page Components, Quote-Page Rules


Defines pricing calculation for a questionnaire. Determines how the premium is calculated based on the user’s answers.

Aspect Details
Calculation methods json-builder (rule-based JSON pricing) or private-pengine (private pricing engine)
Inputs Maps questionnaire answer keys to pricing variables
Outputs Monthly/yearly premiums, plan-specific prices

Coverage comparison tables used in quote pages. Supports multiple plans in a side-by-side layout.

Aspect Details
Structure Rows of coverage items, columns for each plan
Localization Supports multiple languages
Filtering Can be filtered to show only available plans (via quote-page filterTableByAvailablePlans)
Related types Referenced by quote-page

Reusable lists of options for dropdown and autosuggest questions.

Aspect Details
Structure Array of value/label pairs
Usage Referenced by AUTOSUGGEST and DROPDOWN_SINGLE question types via cmsList relation
Benefit Share option lists across multiple questionnaires without duplication

Reusable modal content that can be referenced from multiple places.

Aspect Details
Structure Slug, title, body content
Usage Previewable via /preview/:previewStatus/content-modal/:slug
Benefit Single source for modal content used across questionnaires and quote pages

Defines the policy details and management view shown to users after they have an active policy.

Aspect Details
Structure Policy information sections, action buttons
Preview Previewable via /preview/:previewStatus/policy-details/:documentId/:policyId

Maps plans to their coverage details. Defines what each plan covers and the specific limits/details.

Aspect Details
Structure Plan-to-coverage mapping with section breakdowns
Preview Previewable via /preview/:previewStatus/policy-coverage/:sectionId/:policyId

Templates for document generation (PDFs, policy documents, certificates).

Aspect Details
Usage Referenced by the document-generator service
Content Template structure with dynamic field placeholders

Global configuration values shared across the system.

Aspect Details
Structure Key-value configuration pairs
Usage System-wide settings that affect multiple questionnaires or verticals

graph TD
    Q[questionnaire] -->|metadata.vertical| V[vertical]
    Q -->|QUOTE_CUSTOM.cmsQuote| QP[quote-page]
    Q -->|AUTOSUGGEST/DROPDOWN.cmsList| OL[option-list]
    QP -->|table relation| T[table]
    QP -->|faq-collection| FAQ[faq-collection]
    V -->|policyModalSections| CM[content-modal]
    PP[policy-page] -->|coverage sections| PC[policy-coverage]
    QPR[quote-price] -->|pricing for| Q
From To Relationship
questionnaire vertical Many-to-one (metadata.vertical)
questionnaire (QUOTE_CUSTOM) quote-page Many-to-one (cmsQuote relation)
questionnaire (AUTOSUGGEST/DROPDOWN) option-list Many-to-one (cmsList relation)
quote-page table Many-to-one (table relation)
quote-page faq-collection Many-to-one
vertical content-modal Referenced in policy modal sections
policy-page policy-coverage One-to-many