
Building Omnistudio Flexcard
Author and validate Salesforce OmniStudio FlexCard metadata, data sources, and layout patterns when you extend a Salesforce org as your product surface.
Install
npx skills add https://github.com/forcedotcom/sf-skills --skill building-omnistudio-flexcardWhat is this skill?
- FlexCard definition JSON scaffolding with Integration Procedure datasource binding
- Layout patterns for single-record summary cards and sectioned field groups
- Alignment with official Salesforce OmniStudio FlexCard metadata and validation practices
- Child card type defaults and PropertySetConfig structure for slds-card layouts
- Best-practices reference for datasource context variables and recordId input maps
Adoption & trust: 568 installs on skills.sh; 513 GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
Build integrations is the right shelf because FlexCards bind to Integration Procedures and CRM record context inside Salesforce—not generic frontend tooling. Integrations subphase reflects OmniStudio IP methods, datasource JSON, and platform-specific UI card delivery.
Common Questions / FAQ
Is Building Omnistudio Flexcard safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Building Omnistudio Flexcard
{ "Name": "{{CardName}}", "VersionNumber": 1, "OmniUiCardType": "Child", "IsActive": false, "Description": "{{Description}}", "DataSourceConfig": "{\"dataSource\":{\"type\":\"IntegrationProcedures\",\"value\":{\"ipMethod\":\"{{IPType}}_{{IPSubType}}\",\"vlocityAsync\":false,\"inputMap\":{\"recordId\":\"{recordId}\"},\"resultVar\":\"\"},\"orderBy\":{\"name\":\"\",\"isReverse\":\"\"},\"contextVariables\":[]}}", "PropertySetConfig": "{\"states\":[{\"conditions\":{\"group\":[],\"id\":\"state-condition-object\",\"operator\":\"\"},\"fields\":[],\"id\":\"state-id-0\",\"isSmartAction\":false,\"name\":\"Active\",\"smartAction\":{},\"styleObject\":{\"class\":\"slds-card\",\"container\":{\"class\":\"slds-card\"}}}],\"title\":\"{{CardTitle}}\",\"iconName\":\"\",\"theme\":\"\",\"isFlyout\":false,\"datasource\":{\"contextVariables\":[],\"orderBy\":{},\"type\":\"\"}}", "AuthorName": "{{AuthorName}}" } # Credits Official Salesforce OmniStudio tooling for FlexCard metadata authoring and validation. Primary inspiration for the skill's data source binding patterns and definition structure. --- <!-- Parent: building-omnistudio-flexcard/SKILL.md --> # FlexCard Best Practices ## Layout Design Patterns ### Single Card Use for displaying summary information about a single record. Group related fields into logical sections. ``` ┌──────────────────────────────────┐ │ Header: Record Name │ ├──────────────────────────────────┤ │ Section 1: Key Details │ │ ┌────────────┬─────────────┐ │ │ │ Field A │ Field B │ │ │ │ Field C │ Field D │ │ │ └────────────┴─────────────┘ │ ├──────────────────────────────────┤ │ Section 2: Status │ │ ┌──────────────────────────┐ │ │ │ Status Badge │ Date │ │ │ └──────────────────────────┘ │ ├──────────────────────────────────┤ │ [Action Button 1] [Action 2] │ └──────────────────────────────────┘ ``` **Guidelines:** - Limit to 8-10 fields per card to avoid information overload - Place the most important fields in the top section - Use consistent field alignment (label-left or label-top) - Group related fields in the same row when they share context ### Card List Use for displaying a collection of related records. Each card in the list renders from one item in the data source array. ``` ┌──────────────────────────────────┐ │ Card 1: Record A │ │ Field 1 | Field 2 | [Action] │ ├──────────────────────────────────┤ │ Card 2: Record B │ │ Field 1 | Field 2 | [Action] │ ├──────────────────────────────────┤ │ Card 3: Record C │ │ Field 1 | Field 2 | [Action] │ └──────────────────────────────────┘ Showing 1-3 of 15 [Next →] ``` **Guidelines:** - Keep each list card compact (3-5 fields maximum) - Include a clear identifier field (Name, Title, or ID) in each card - Add pagination when the data source can return more than 10 records - Use consistent card height to maintain visual rhythm - Provide a "View All" link when the list is truncated ### Tabbed Card Use when a single record has multiple contexts worth displaying. Each tab represents a different state with its own data source or field set. ``` ┌──────────────────────────────────┐ │ [Tab 1: Overview] [Tab 2: History] [Tab 3: Related] │ ├──────────────────────────────────┤ │ Tab 1 Content │ │ ┌──────────────────────────┐ │ │ │ Fields for this context │ │ │ └──────────────────────────┘ │ └──────────────────────────────────┘ ``` **Guidelines:** - Limit to 3-5 tabs to avoid horizontal overflow - Use concise tab labels (1-2 words) - Load non-active tab data lazily (on tab selection) - Mark the default active tab based on the most common use case ### Flyout Card Use for progressive disclosure: show a summary, then expand for details on demand. ``` ┌──────────────────────────────────┐ │ Summary: Key Fields [▼ More] │ └──────────────────────────────────┘ ↓ (on cli