
Building Omnistudio Datamapper
Guide an agent through designing, scoring, and documenting Salesforce OmniStudio Data Mapper Extract, Transform, Load, and Turbo Extract definitions.
Install
npx skills add https://github.com/forcedotcom/sf-skills --skill building-omnistudio-datamapperWhat is this skill?
- Five-phase workflow ending in scored validation and a completion summary
- 100-point rubric across design, field mapping, data integrity, performance, and documentation
- Deploy threshold at 90+, review band 67–89, block below 67
- JSON templates for Extract, Transform, and Load mapper metadata and field items
- Explicit next steps: test in Integration Procedure and monitor performance
Adoption & trust: 567 installs on skills.sh; 513 GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
Data Mappers are integration artifacts built inside Salesforce during product implementation, not launch marketing or post-ship ops tuning. Integrations subphase captures OmniStudio data transformation wiring between Salesforce objects and guided experiences or integration procedures.
Common Questions / FAQ
Is Building Omnistudio Datamapper 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 Datamapper
# Data Mapper Completion Templates Use these templates in Phase 3 (scoring output) and Phase 5 (completion summary). ## Scoring Output (Phase 3) ``` Score: XX/100 Rating |- Design & Naming: XX/20 |- Field Mapping: XX/25 |- Data Integrity: XX/25 |- Performance: XX/15 |- Documentation: XX/15 ``` **Thresholds**: ✅ 90+ (Deploy) | ⚠️ 67-89 (Review) | ❌ <67 (Block — fix required) ## Completion Summary (Phase 5) ``` Data Mapper Complete: [Name] Type: [Extract|Transform|Load|Turbo Extract] Target Object(s): [Object1, Object2] Field Count: [N mapped fields] Validation: PASSED (Score: XX/100) Next Steps: Test in Integration Procedure, verify data output, monitor performance ``` { "Name": "DR_Extract_{{Object}}_{{Purpose}}", "Type": "Extract", "IsActive__c": false, "Description": "Extract {{Object}} records for {{Purpose}}" } { "OmniDataTransformationId": "{{ParentTransformId}}", "Name": "{{FieldName}}", "InputObjectName": "{{SalesforceObjectApiName}}", "InputFieldName": "{{SalesforceFieldApiName}}", "OutputObjectName": "{{OutputNodeName}}", "OutputFieldName": "{{OutputFieldName}}", "OmniDataTransformItemOrder": 1, "FilterDataType": "String", "FilterOperator": "", "FilterValue": "" } { "Name": "DR_Load_{{Object}}_{{Purpose}}", "Type": "Load", "IsActive__c": false, "Description": "Load {{Object}} records for {{Purpose}}" } { "Name": "DR_Transform_{{Object}}_{{Purpose}}", "Type": "Transform", "IsActive__c": false, "Description": "Transform {{Object}} data structure for {{Purpose}}" } # Credits & Acknowledgments This skill reflects the collective knowledge and conventions of the Salesforce OmniStudio ecosystem. --- <!-- Parent: building-omnistudio-datamapper/SKILL.md --> # Data Mapper Best Practices ## When to Use Each Type ### Extract Use Extract when: - Reading data from one or more related Salesforce objects - You need relationship queries (parent-to-child or child-to-parent) - Formula fields are required in the output - Data volume is moderate (under 10K records per execution) - You need aggregate functions or complex filter logic Do NOT use Extract when: - Read volume exceeds 10K records consistently -- use Turbo Extract - No SOQL is needed (data reshaping only) -- use Transform - You are writing data -- use Load ### Turbo Extract Use Turbo Extract when: - Read-heavy scenarios with high volume (10K+ records) - Query is straightforward with indexed filter fields - Formula fields are not required - No related list (child-to-parent) queries are needed - Performance is the primary concern (10x+ faster than standard Extract) Do NOT use Turbo Extract when: - Formula fields are needed in output - Related list queries are required - Aggregate queries (COUNT, SUM) are needed - Polymorphic lookup fields are involved ### Transform Use Transform when: - Reshaping JSON structures between Integration Procedure steps - Renaming fields from one schema to another - Flattening nested data structures - Filtering or merging in-memory datasets - No database interaction is needed Do NOT use Transform when: - Reading from or writing to Salesforce objects -- use Extract or Load - Data needs to be persisted -- use Load ### Load Use Load when: - Inserting, updating, upserting, or deleting Salesforce records - Writing data collected from OmniScript input or external sources - Synchronizing data from Integration Procedure callout responses Do NOT use Load when: - Reading data -- use Extract or Turbo Extract - Reshaping data without persistence -- use Transform --- ## Field Mapping Patterns ### Explicit Field Selection Always specify fields explicitly. Never rely on wildcard or "all fields" selection. ``` Good: Account.Name, Account.Industry, Account.BillingCity Bad: Account.* (extracts all fields, wastes bandwidth and heap) ``` ### Input/Output Path Structure Data Mapper fields use dot-notation paths for input and output: ``` Input Path: AccountData.Name Output Pat