• Cert++
  • Practice
  • Certle
  • Review
  • Tracks
  • Checklist
  • Guides
  • Upgrade
Cert++
  1. Home
  2. Omnistudio Developer

Omnistudio Developer

Checklist progress

0/169Learned

Omnistudio Developer

Study Checklist

  • Platform Administrator
  • Platform App Builder
  • Platform Foundations
  • Platform Developer
  • Platform Administrator II
  • Agentforce Sales Consultant
  • Agentforce Service Consultant
  • Platform Data Architect
  • Platform Development Lifecycle and Deployment Architect
  • Platform Identity and Access Management Architect
  • Platform Integration Architect
  • Platform Sharing and Visibility Architect
  • Heroku Architect
  • B2C Solution Architect
  • Experience Cloud Consultant
  • Agentforce Field Service and Operations Consultant
  • Agentforce Nonprofit Consultant
  • Data 360 Consultant
  • Omnistudio Consultant
  • CRM Analytics and Einstein Discovery Consultant
  • Platform User Experience Designer
  • Platform Strategy Designer
  • B2C Commerce Developer
  • JavaScript Developer
  • Omnistudio Developer
  • Platform Developer II
  • Marketing Cloud Engagement Administrator
  • Marketing Cloud Engagement Specialist
  • Marketing Cloud Engagement Consultant
  • Agentforce Sales Foundations
  • Business Analyst
  • Marketing Cloud Engagement Developer
  • Marketing Cloud Engagement Foundations
  • Agentforce Specialist
  • Agentforce Life Sciences Consultant
  • B2B Commerce Administrator AP
  • B2B Commerce Developer AP
  • Agentforce Consumer Goods AP
  • Agentforce Financial Services AP
  • Agentforce Health AP
  • Agentforce Manufacturing AP
  • MuleSoft Integration Foundations
  • MuleSoft Developer
  • MuleSoft Developer II
  • MuleSoft Platform Integration Architect
  • MuleSoft Platform Architect
  • Tableau Desktop Foundations
  • Tableau Data Analyst
  • Tableau Consultant
  • Tableau Server Administrator
  • Tableau Architect

Checklist progress

0/169Learned

  • The four supported Flexcard data source types (Salesforce Object, Integration Procedure, DataRaptor, REST) and when each is used
  • The available Flexcard action types (navigation, flyout, modal, OmniScript launch, custom LWC) and when each is used
  • How to configure a Flexcard to use a Salesforce Object as its data source, including which object fields and filter conditions are specified directly on the card
  • How to configure a Flexcard to use an Integration Procedure as its data source, including how the input parameters are mapped
  • How to configure a Flexcard to use a DataRaptor Extract as its data source
  • How to configure a Flexcard to call an external REST endpoint directly as a data source
  • How Flexcard element types (fields, icons, images, custom LWC) are configured to display data from the card's data source using merge syntax
  • How Flexcard card states (default state versus conditional states) are defined and how state transition conditions are evaluated
  • The difference between configuring conditional visibility at the card-state level versus at the individual element level on a Flexcard
  • How to configure a conditional state on a Flexcard so that a different layout is displayed when a field value matches a specific condition
  • The key configuration properties for Flexcard actions, including passing context and targeting (e.g., URL for navigation, record ID for OmniScript)
  • How a Flexcard flyout action differs from a modal action in terms of user experience and configuration
  • How to configure a Flexcard action to launch an OmniScript in a modal and pass context (record ID, field values) from the card to the script
  • How conditional action visibility on a Flexcard action is configured so that an action button only appears when a condition is met
  • How to configure a Flexcard to iterate over a list of records returned by a data source and render one card instance per record
  • How a parent Flexcard embeds a child Flexcard (the Children panel) and when embedding child cards is appropriate versus using a single card with multiple elements
  • Given a requirement to display data from multiple related Salesforce objects, which Flexcard data source type should be chosen
  • How Flexcard display styles (card, list, table, timeline) differ and when each should be selected to meet a display requirement
  • How the Flexcard JSON data model is structured, including the relationship between the card definition, states, elements, and actions
  • How a Flexcard's data source response JSON is consumed by card elements using dot-notation path references
  • How OmniStudio merge syntax is used within a Flexcard to reference data from the card's data source JSON node
  • How a Flexcard's input parameters map to the data source's expected input JSON structure
  • How the Flexcard JSON state is structured differently when the data source returns a single record versus a list of records and how each case is rendered
  • How nested child Flexcards are embedded inside a parent Flexcard and how the parent passes data to the child via the child card's input parameters
  • How Flexcard version activation works and the impact of activating a new version on users who have the card embedded in a Lightning App Page
  • Given a requirement to show a different card layout for active versus inactive accounts on the same Flexcard, how states and conditions are configured
  • Given a requirement to display an empty state message when the Flexcard data source returns no records, how is this configured
  • Given a requirement to display an account summary with conditionally visible service status indicators, which Flexcard features are used
  • Given a requirement to allow an agent to launch a service order OmniScript from a Flexcard, how the action is configured and what context is passed
  • Given a requirement to embed a Flexcard on a Lightning Record Page and a separate version on an Experience Cloud site, what configuration differences are required
  • Given a requirement to surface a custom LWC component inside a Flexcard, how is the custom component embedded and how does it receive data from the card
  • Given a requirement to display data from an external billing API on a Flexcard, which data source type and HTTP configuration is appropriate

Given a use case, compare and contrast various elements and their configuration that will meet the requirements with an Omniscript.

0/22

  • The OmniScript input element types (Text Input, Select, Multi-Select, Checkbox, Date/Time, Currency, Number, File, Signature, Radio, Toggle) and what each captures
  • The OmniScript display and derived element types (Text Block, Display Text, Formula, Type Ahead) and what each displays or computes
  • How the Group element and Block element differ in their layout behavior and when each is used to organize child elements within a step
  • How the Repeatable Block element is configured to allow a user to add a variable number of line items within a single step
  • How the Formula element works and what formula functions are available
  • How the SetValues element is configured to assign or transform values within the OmniScript data JSON without making a server callout
  • How the Navigate element is configured to jump to a specific named step and when it is used instead of relying on native Previous/Next navigation
  • How the Type Ahead element differs from the Select element and when Type Ahead is preferred for fields referencing large sets of Salesforce records
  • How conditional visibility (show/hide conditions) is configured on an OmniScript step using the 'Condition' property and OmniStudio merge syntax
  • How conditional visibility on an element differs from conditional navigation (branching to a different step) in an OmniScript
  • How the Conditional View element differs from using a condition expression on a regular element to show or hide content within an OmniScript step
  • How the Integration Procedure Action element is configured within an OmniScript step, including how input and output are mapped to the script's data JSON
  • How a DataRaptor Extract Action element inside an OmniScript differs from calling an Integration Procedure Action that wraps the same DataRaptor
  • When to use the SetValues element versus a DataRaptor Transform action to reshape or default data within an OmniScript
  • Given a requirement to pre-populate an OmniScript from context passed by a Flexcard action, how are the input parameters received and mapped in the script
  • Given a requirement to allow a user to attach a file (e.g., proof of identity) during a guided process, which OmniScript element is used and what properties must be configured
  • Given a requirement to collect an e-signature from a user within a guided process, which OmniScript element is used
  • How the Remote Action (Apex) element is used within an OmniScript and what is required in the Apex class for it to be callable
  • How OmniScript Save and Resume is enabled and how in-progress data is stored so a user can return to a multi-session process
  • How an embedded child OmniScript is configured inside a parent OmniScript and how data from the parent is passed into the child
  • How a custom LWC component is embedded within an OmniScript as a Custom Lightning Web Component element and how it communicates with the script's data JSON using pubsub or standard LWC events
  • How the step progress indicator (step chart) is controlled, including hiding individual steps from the header progress bar

Demonstrate an understanding of the JSON data structure that supports Omniscript.

0/9

  • How the OmniScript hierarchical data JSON is built at runtime: how each element's name becomes a JSON key and how nested blocks create nested JSON nodes
  • Given an OmniScript with a Block named 'ContactInfo' containing an element named 'Email', what is the resulting JSON path to the Email value
  • How OmniStudio merge syntax (%NodeName:FieldName%) is used to reference a value from the JSON data node anywhere in the script (labels, conditions, action inputs)
  • How the Repeatable Block element stores its repeated entries in the JSON data structure (as an array under the block's name)
  • How the 'Response JSON Path' property on an OmniScript action is used to extract a subset of the action's response into the script's data JSON
  • How the 'Element JSON Path' property on an Integration Procedure Action element maps the action's output into a specific node in the OmniScript data JSON
  • Given an OmniScript action configured with a specific 'Input JSON Path', how the portion of the data JSON tree it specifies is isolated and passed as the action input
  • How to read the OmniScript debug/JSON state panel during Preview to trace the current state of the data JSON at each step
  • How the OmniScript Type and SubType fields affect the URL used to launch the script and the script's versioning behavior

Given a set of functional requirements, select the Omniscript elements and common properties to meet the requirements.

0/9

How the 'Required' property on an OmniScript element prevents step navigation until a value is entered, and how this differs from a custom validation expression

Learn this concept
Unseen

Given a requirement to display read-only HTML content or instructions to the user between input fields, which OmniScript element is used

Learn this concept
Unseen

Given a requirement to pre-populate address fields from an existing Salesforce Account record when the script launches, which element and action type should be used

Learn this concept
Unseen

Given a requirement to show or hide a step based on the value selected in a previous step's dropdown, what configuration achieves this

Learn this concept
Unseen

Given a use case where a service agent must collect a variable number of line items (e.g., products to order), which OmniScript element structure is correct

Learn this concept
Unseen

Given a requirement to display a calculated subtotal that updates as the user changes quantity inputs, which OmniScript element is correct

Learn this concept
Unseen

Given a requirement to validate that an entered email address matches a specific pattern before allowing the user to proceed, how is custom validation configured on an OmniScript element

Learn this concept
Unseen

Given a requirement to write collected OmniScript data back to multiple Salesforce objects at the final step, which action type and configuration is appropriate

Learn this concept
Unseen

Given a requirement to call a decision-support Apex method mid-script (e.g., to check eligibility), which OmniScript element and required Apex annotation are used

Learn this concept
Unseen
  • The Integration Procedure data elements (DataRaptor Extract, DataRaptor Load, DataRaptor Transform, Set Values) and the primary purpose of each
  • The Integration Procedure control flow and integration elements (Conditional Block, Loop Block, HTTP Action, Response Action) and the primary purpose of each
  • The Integration Procedure decision and sub-procedure elements (Matrix Action, Integration Procedure Action, Calculation Procedure Action) and the primary purpose of each
  • How the Set Values element within an Integration Procedure assigns or transforms values between elements without a Salesforce DML operation
  • How the Response Action element is used to define what the Integration Procedure returns to its caller and how the output node is configured
  • How the HTTP Action element is configured in an Integration Procedure (Named Credential, HTTP method, request body, response mapping)
  • How the Conditional Block element in an Integration Procedure evaluates a condition and routes execution to different child element branches
  • How the Loop Block element in an Integration Procedure iterates over an array of records and executes child elements for each iteration
  • How a sub-Integration Procedure is called from a parent Integration Procedure using the Integration Procedure Action element, and why this pattern is used
  • How the Matrix Action element within an Integration Procedure invokes a Decision Matrix and maps its output into the procedure's data node
  • How the Integration Procedure Preview/Test panel is used to supply test input JSON and inspect the output without connecting to an OmniScript
  • How Integration Procedure versioning and activation works and how the version in use by a calling OmniScript is controlled
  • Given a requirement to query Salesforce data, transform it, call an external API, and write results back to Salesforce in one server call — which Integration Procedure element sequence achieves this
  • How Integration Procedure asynchronous execution is enabled, what it means for the caller, and when it should be used
  • How input and output nodes are defined on an Integration Procedure and how element-level output is promoted to a named node accessible by downstream elements
  • How Named Credentials are used in the HTTP Action element to securely store endpoint URLs and authentication credentials outside the Integration Procedure definition
  • Given a requirement to retrieve an Account and all related Contacts in a single server-side call, which Integration Procedure element(s) and configuration should be used
  • Given a requirement to process a list of line items and create a separate Salesforce record for each, which Integration Procedure element is used and how is it configured
  • Given a requirement to conditionally call an external payment gateway only when an order total exceeds a threshold, how is the Integration Procedure structured
  • Given a requirement to apply different discount rates based on a customer's tier and product category using externalized business rules, which Integration Procedure element and supporting OmniStudio component are used
  • How the Calculation Procedure Action element invokes an Expression Set inside an Integration Procedure and how the result is consumed
  • How element-level error handling in an Integration Procedure is configured to return a meaningful error message to the calling OmniScript
  • How procedure-level error handling in an Integration Procedure is configured to return a meaningful error message to the calling OmniScript
  • How Salesforce governor limits (DML limits, callout limits, CPU time) constrain Integration Procedure design and what patterns should be avoided
  • The four OmniStudio DataRaptor types (Extract, Load, Transform, Turbo Extract) and the single defining characteristic of each
  • Given a requirement to read data from Salesforce objects and return it as a JSON structure to an OmniScript, which DataRaptor type is used
  • Given a requirement to create or update Salesforce records from JSON data collected in an OmniScript, which DataRaptor type is used
  • Given a requirement to reshape a JSON payload from one structure to another without reading from or writing to Salesforce, which DataRaptor type is used
  • The key difference between DataRaptor Extract and DataRaptor Turbo Extract in terms of query mechanism, performance, and relationship traversal support
  • Given a requirement to retrieve a large volume of Salesforce records with high performance using direct SQL-like queries, which DataRaptor type is used
  • When DataRaptor Turbo Extract is preferred over DataRaptor Extract and what its limitations are (e.g., no formula fields, no parent-child relationship queries)
  • How to configure a DataRaptor Extract to query a Salesforce object, including the Object name, field list, and filter conditions
  • How output field mapping in a DataRaptor Extract controls the JSON key names in the extract's output node
  • How DataRaptor Extract uses input parameters to filter the query results (e.g., filtering by Account ID passed from an OmniScript)
  • How DataRaptor Extract maps related object fields (parent-child relationships) into the output JSON using relationship traversal
  • How to configure a DataRaptor Extract to retrieve multiple child records (e.g., all Opportunity Line Items for an Opportunity) and how they appear in the output JSON
  • Given a requirement to pre-populate an OmniScript's fields from a Salesforce Contact record, how a DataRaptor Extract is configured and invoked as an action within the script
  • How the DataRaptor Extract preview/test functionality is used to validate the output JSON structure before connecting it to an OmniScript or Integration Procedure
  • How a DataRaptor Load is configured to insert or update Salesforce records, including the object name, field mappings, and key field for upsert logic
  • How input field mapping in a DataRaptor Load maps JSON node keys from the OmniScript data JSON to the target Salesforce object fields
  • How DataRaptor Load determines whether to insert or update a record based on the key field configuration, and what happens when the key field value is null
  • How a DataRaptor Load is configured to write to multiple Salesforce objects in a single operation (parent and child records)
  • Given a requirement to save multiple Contact records collected in a Repeatable Block within an OmniScript, how the DataRaptor Load handles the array structure
  • How Salesforce validation rules and required field constraints interact with a DataRaptor Load and how errors are surfaced
  • How the DataRaptor Load 'Delete' operation mode is configured to remove Salesforce records and when it is used versus the default upsert mode
  • What DataRaptor Transform does: it reshapes JSON from one structure to another without performing any Salesforce DML or queries
  • How DataRaptor Transform input and output field mappings are configured to rename, reorder, or flatten JSON keys
  • How the DataRaptor Transform formula feature is used to compute or concatenate values during the transformation
  • Where in an Integration Procedure sequence DataRaptor Transform is typically placed (after HTTP Action, before DataRaptor Load) and why
  • Given a requirement to convert a REST API response JSON into a structure compatible with a DataRaptor Load, which DataRaptor type and configuration is used
  • How DataRaptor Turbo Extract's query configuration differs from DataRaptor Extract (SQL-like syntax, direct database access, no formula field support)
  • When DataRaptor Turbo Extract should be used instead of DataRaptor Extract to meet a high-volume or performance requirement
  • The limitations of DataRaptor Turbo Extract compared to DataRaptor Extract (no formula fields, no parent-to-child relationship traversal, no picklist label mapping)
  • Given a requirement to retrieve 5,000 product records for display in an OmniScript lookup, when Turbo Extract is appropriate versus Extract
  • What a Decision Matrix is: a lookup table with input key columns and output value columns used to return a matching output row based on input values
  • How Decision Matrix rows are structured with input key fields (exact match or range) and output value fields, and how the lookup algorithm finds the matching row
  • How range-based matching works in a Decision Matrix (e.g., a row matches when an input value falls between a Min and Max column)
  • A concrete scenario where a Decision Matrix is the correct tool (e.g., product pricing tiers based on region and quantity ranges)
  • Given a requirement to look up a discount rate based on customer segment and order volume, how is the Decision Matrix configured and invoked
  • How the Matrix Action element in an Integration Procedure calls a Decision Matrix, passes input key values, and maps the output into the procedure's data node
  • How a Decision Matrix is versioned and activated, and the effect of activating a new version on Integration Procedures that reference the matrix
  • How wildcard or catch-all rows in a Decision Matrix serve as a fallback when no exact row matches the input keys, and when this is needed
  • What an Expression Set (Calculation Procedure) is: a sequence of expression steps that evaluate conditions and compute weighted or calculated output values
  • How Expression Set steps are structured: each step has a condition, an expression, a weight, and an output variable
  • How Expression Set operators and functions are used to evaluate conditions and compute output values
  • How an Expression Set differs from a Decision Matrix: Expression Sets compute derived values through expressions; Decision Matrices perform table lookups
  • When an Expression Set is preferred over a Decision Matrix (e.g., when the output requires computation across multiple inputs rather than a simple lookup)
  • A concrete scenario where an Expression Set is the correct tool (e.g., insurance premium calculation based on age, coverage type, and risk score)
  • How the Calculation Procedure Action element in an Integration Procedure invokes an Expression Set and maps the output variables into the procedure's node
  • How Expression Set versioning and activation works and the effect of a new active version on procedures that reference it
  • How OmniStudio permission sets (OmniStudio Admin, OmniStudio User) control access to OmniStudio components and what symptoms appear when a user lacks the required permission set
  • How to use the OmniScript Preview mode and the JSON state panel to identify which step or action is producing incorrect data
  • How to use the Integration Procedure debug/test panel to reproduce an error by supplying the exact input JSON that was passed at runtime
  • How to diagnose a merge field that resolves to an empty string or undefined in a Flexcard or OmniScript and identify the misconfiguration
  • What causes a Flexcard to display blank or fail to render, and how to diagnose the root cause (data source misconfiguration, inactive version, missing field path)
  • How to identify when a Flexcard is showing stale data versus a real-time data source error, and the steps to distinguish the two
  • How to troubleshoot a Flexcard action that is not passing the expected input parameters to an OmniScript (e.g., a null context variable)
  • How to troubleshoot an OmniScript action that is not firing as expected (wrong element order, incorrect condition expression, action disabled flag)
  • Common causes of an OmniScript failing to save (DataRaptor Load error, Integration Procedure timeout, governor limit hit) and how to identify which applies
  • How to diagnose a DataRaptor Load failure caused by a Salesforce validation rule violation or a required field being null
  • How to troubleshoot a DataRaptor Extract that returns no records or an unexpected empty result, including checking object permissions, filter conditions, and input parameter mappings
  • What error codes or messages Integration Procedures return when an HTTP Action fails, and how to interpret them during troubleshooting
  • How to diagnose a Decision Matrix returning no match (no row found for the input keys) versus returning incorrect output values
  • The end-to-end OmniStudio data flow: from Flexcard data source request → Integration Procedure → DataRaptor Extract → Salesforce query → JSON response → merge field display
  • Given a scenario where a Flexcard displays blank data, how to determine if the failure is in the Flexcard configuration, the Integration Procedure, the DataRaptor, or the Salesforce data itself
  • Given a scenario where an Integration Procedure returns unexpected data, how to isolate which element in the procedure is transforming the data incorrectly by using element-level output inspection
  • Given a scenario where an OmniScript fails to write data at the final step, how to determine if the failure is in the DataRaptor Load, a Salesforce validation rule, or the Integration Procedure's error handling
  • Why standard Salesforce change sets do not fully support OmniStudio components and what the recommended migration approach is instead
  • What a DataPack is in the context of OmniStudio and how it encapsulates one or more OmniStudio components with their dependencies for migration
  • How OmniStudio components are deployed between orgs: the OmniStudio Export/Import process, DataPacks, and why standard change sets are not fully supported
  • How to handle dependent OmniStudio components (e.g., an OmniScript that references an Integration Procedure that references a DataRaptor) when migrating between orgs to ensure all dependencies are included in the DataPack
  • The deployment steps required to make a migrated OmniScript or Flexcard active in a target org after import (compilation, version activation)
  • How OmniScript LWC compilation (OmniOut) works post-deployment and what symptoms appear if compilation has not been run after an import
  • How OmniStudio components are represented in source-tracked orgs and SFDX projects (as CustomMetadata or CustomObject records) and what implications this has for version control workflows
  • How OmniStudio namespace affects merge syntax and component references in deployed components
  • How the IDX Build Tool and IDX Workbench are used to export OmniStudio DataPacks to a version-controlled repository and import them to a target org
  • Given a scenario where a deployed OmniScript renders as a blank page in the target org, how to determine if the issue is a missing LWC compilation step or an inactive version

Prepare for the Exam

Play Today's Certle
Back to track

Study Community

Ask questions and get the latest info from other Omnistudio Developer studiers. 593 members and growing.

Go to Discord

Given a requirement to call a decision-support Apex method mid-script (e.g., to check eligibility), which OmniScript element and required Apex annotation are used

Explainer

Learn More

Practice Question

Keep going

Next conceptThe Integration Procedure data elements (DataRaptor Extract, DataRaptor Load, DataRaptor Transform, Set Values) and the primary purpose of each

Checklist progress

0/169 (0%)

0 of 169 concepts learned

Tip: You can filter concepts by status.

Prepare for the Exam

Play Today's Certle
Back to track

Study Community

Ask questions and get the latest info from other Omnistudio Developer studiers. 593 members and growing.

Go to Discord

Explainer

Omniscripts use the Remote Action element to execute Apex logic during a script. To enable this, the Apex class must implement the standard Salesforce Callable interface.

Core information
  • The Remote Action element is used to call Apex classes from within an Omniscript.
More details and nuances
  • The default timeout for a Remote Action is 30,000 milliseconds, with a maximum of 120,000 milliseconds.