@salesforce/afv-skills 1.65.0 → 1.65.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +2 -23
- package/skills/field-service-data-capture-form-designer-configure/SKILL.md +3 -13
- package/skills/field-service-mobile-branding-configure/SKILL.md +3 -17
- package/skills/field-service-objective-designer-configure/SKILL.md +379 -72
- package/skills/field-service-prework-brief-deployer-configure/SKILL.md +537 -10
- package/skills/field-service-scheduling-policy-designer-query/SKILL.md +1093 -65
- package/skills/field-service-sobject-create-configure/SKILL.md +213 -13
- package/skills/field-service-voice-to-form-configure/SKILL.md +11 -40
- package/skills/field-service-work-rule-designer-configure/SKILL.md +95 -121
- package/skills/agentforce-gpt-email-generation-configure/SKILL.md +0 -312
- package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +0 -64
- package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +0 -46
- package/skills/automation-company-profile-info-query/SKILL.md +0 -51
- package/skills/automation-digital-wallet-configure/SKILL.md +0 -689
- package/skills/automation-flow-coordinate/SKILL.md +0 -95
- package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +0 -1569
- package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +0 -96
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +0 -23
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +0 -31
- package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +0 -179
- package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +0 -13
- package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +0 -83
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +0 -69
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +0 -274
- package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +0 -192
- package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +0 -130
- package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +0 -92
- package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +0 -88
- package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +0 -152
- package/skills/automation-flow-coordinate/references/elements/start/start.md +0 -539
- package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +0 -152
- package/skills/automation-flow-coordinate/references/elements/wait/wait.md +0 -497
- package/skills/automation-flow-coordinate/references/recipes/author/author.md +0 -868
- package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +0 -300
- package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +0 -292
- package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +0 -323
- package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +0 -109
- package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +0 -219
- package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +0 -180
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +0 -175
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +0 -255
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +0 -212
- package/skills/automation-flow-coordinate/references/resources/variable/variable.md +0 -171
- package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +0 -786
- package/skills/automation-flow-coordinate/references/shared/end/end.md +0 -267
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +0 -69
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +0 -80
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +0 -116
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +0 -321
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +0 -320
- package/skills/automation-flow-coordinate/references/shared/server-functions.md +0 -597
- package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +0 -69
- package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +0 -78
- package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +0 -373
- package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +0 -273
- package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +0 -259
- package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +0 -369
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +0 -542
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +0 -159
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +0 -349
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +0 -505
- package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +0 -380
- package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +0 -567
- package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +0 -159
- package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +0 -360
- package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +0 -539
- package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +0 -358
- package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +0 -602
- package/skills/commerce-b2b-store-configure/SKILL.md +0 -251
- package/skills/commerce-credit-memo-create/SKILL.md +0 -139
- package/skills/commerce-delivery-business-hours-configure/SKILL.md +0 -277
- package/skills/commerce-delivery-estimation-apply/SKILL.md +0 -155
- package/skills/commerce-delivery-estimation-configure/SKILL.md +0 -377
- package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +0 -174
- package/skills/commerce-estimate-bopis-query/SKILL.md +0 -279
- package/skills/commerce-estimate-delivery-date-query/SKILL.md +0 -349
- package/skills/commerce-fees-apply/SKILL.md +0 -227
- package/skills/commerce-fulfillment-routing-analyze/SKILL.md +0 -200
- package/skills/commerce-guest-buyer-create/SKILL.md +0 -173
- package/skills/commerce-location-bopis-configure/SKILL.md +0 -378
- package/skills/commerce-location-business-hours-configure/SKILL.md +0 -235
- package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +0 -309
- package/skills/commerce-location-graph-integrate/SKILL.md +0 -131
- package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +0 -755
- package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +0 -331
- package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +0 -579
- package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +0 -626
- package/skills/commerce-merchant-catalog-configure/SKILL.md +0 -614
- package/skills/commerce-merchant-extension-provider-configure/SKILL.md +0 -368
- package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +0 -118
- package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +0 -65
- package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +0 -90
- package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +0 -72
- package/skills/commerce-merchant-insights-query/SKILL.md +0 -279
- package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +0 -656
- package/skills/commerce-order-summary-change-apply/SKILL.md +0 -375
- package/skills/commerce-product-details-get/SKILL.md +0 -363
- package/skills/commerce-product-search/SKILL.md +0 -563
- package/skills/commerce-react-storefront-create/SKILL.md +0 -350
- package/skills/commerce-return-order-summary-create/SKILL.md +0 -513
- package/skills/commerce-search-relevance-analyze/SKILL.md +0 -757
- package/skills/commerce-temporary-processing-time-override-create/SKILL.md +0 -274
- package/skills/communications-initial-setup-configure/SKILL.md +0 -630
- package/skills/communications-multisite-configure/SKILL.md +0 -571
- package/skills/communications-revenue-cloud-settings-configure/SKILL.md +0 -74
- package/skills/communications-smb-fiber-catalog-create/SKILL.md +0 -413
- package/skills/communications-tmf-integrate/SKILL.md +0 -1368
- package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +0 -448
- package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +0 -269
- package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +0 -271
- package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +0 -382
- package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +0 -373
- package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +0 -389
- package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +0 -338
- package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +0 -547
- package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +0 -346
- package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +0 -1110
- package/skills/crm-analytics-adoption-insights-configure/SKILL.md +0 -224
- package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +0 -418
- package/skills/crm-analytics-dashboards-configure/SKILL.md +0 -731
- package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +0 -233
- package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +0 -184
- package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +0 -167
- package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +0 -55
- package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +0 -1350
- package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +0 -1862
- package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +0 -83
- package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +0 -81
- package/skills/data360-activation-create/SKILL.md +0 -104
- package/skills/data360-activation-external-platform-get/SKILL.md +0 -49
- package/skills/data360-activation-target-create/SKILL.md +0 -93
- package/skills/data360-activation-v2-create/SKILL.md +0 -456
- package/skills/data360-audience-dmo-get/SKILL.md +0 -38
- package/skills/data360-calculated-affinity-create/SKILL.md +0 -82
- package/skills/data360-calculated-insight-create/SKILL.md +0 -148
- package/skills/data360-catalog-metadata-create/SKILL.md +0 -183
- package/skills/data360-code-extension-create/SKILL.md +0 -115
- package/skills/data360-communication-capping-create/SKILL.md +0 -227
- package/skills/data360-connection-create/SKILL.md +0 -491
- package/skills/data360-content-lens-create/SKILL.md +0 -181
- package/skills/data360-data-action-create/SKILL.md +0 -126
- package/skills/data360-data-action-target-create/SKILL.md +0 -181
- package/skills/data360-data-clean-room-create/SKILL.md +0 -238
- package/skills/data360-data-governance-create/SKILL.md +0 -746
- package/skills/data360-data-graph-create/SKILL.md +0 -82
- package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +0 -38
- package/skills/data360-data-lake-object-create/SKILL.md +0 -207
- package/skills/data360-data-model-object-catalog-get/SKILL.md +0 -49
- package/skills/data360-data-model-object-create/SKILL.md +0 -128
- package/skills/data360-data-model-object-mapping-create/SKILL.md +0 -106
- package/skills/data360-data-space-create/SKILL.md +0 -161
- package/skills/data360-data-streams-create/SKILL.md +0 -324
- package/skills/data360-engagement-signal-get/SKILL.md +0 -38
- package/skills/data360-experiment-create/SKILL.md +0 -82
- package/skills/data360-goal-based-campaign-create/SKILL.md +0 -192
- package/skills/data360-harmonization-process-history-get/SKILL.md +0 -38
- package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +0 -84
- package/skills/data360-identity-resolution-create/SKILL.md +0 -115
- package/skills/data360-intelligent-document-processing-create/SKILL.md +0 -148
- package/skills/data360-knowledge-graph-construction-create/SKILL.md +0 -93
- package/skills/data360-knowledge-graph-create/SKILL.md +0 -216
- package/skills/data360-knowledge-space-mcp-configure/SKILL.md +0 -475
- package/skills/data360-machine-learning-mcp-configure/SKILL.md +0 -697
- package/skills/data360-multi-org-mcp-configure/SKILL.md +0 -117
- package/skills/data360-secondary-index-mcp-configure/SKILL.md +0 -126
- package/skills/data360-segment-mcp-configure/SKILL.md +0 -159
- package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +0 -38
- package/skills/data360-semantic-engine-mcp-configure/SKILL.md +0 -62
- package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +0 -38
- package/skills/data360-semantic-metric-mcp-configure/SKILL.md +0 -93
- package/skills/data360-semantic-model-mcp-configure/SKILL.md +0 -115
- package/skills/data360-standard-mapping-mcp-configure/SKILL.md +0 -38
- package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +0 -73
- package/skills/experience-afv-query/SKILL.md +0 -234
- package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +0 -63
- package/skills/experience-apex-components-configure/SKILL.md +0 -69
- package/skills/experience-apex-pages-configure/SKILL.md +0 -107
- package/skills/experience-app-home-configure/SKILL.md +0 -76
- package/skills/experience-aura-lightning-out-access-configure/SKILL.md +0 -58
- package/skills/experience-briefcase-configure/SKILL.md +0 -287
- package/skills/experience-community-flexi-page-list-create/SKILL.md +0 -74
- package/skills/experience-community-template-definition-list-query/SKILL.md +0 -48
- package/skills/experience-community-theme-definition-list-query/SKILL.md +0 -38
- package/skills/experience-content-assets-configure/SKILL.md +0 -86
- package/skills/experience-custom-domain-create/SKILL.md +0 -727
- package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +0 -41
- package/skills/experience-field-service-app-builder-configure/SKILL.md +0 -187
- package/skills/experience-flow-category-configure/SKILL.md +0 -117
- package/skills/experience-formula-configure/SKILL.md +0 -358
- package/skills/experience-global-actions-configure/SKILL.md +0 -69
- package/skills/experience-global-publisher-layouts-configure/SKILL.md +0 -79
- package/skills/experience-instrumentation-configure/SKILL.md +0 -64
- package/skills/experience-lex-engagement-configure/SKILL.md +0 -50
- package/skills/experience-lightning-bolt-open/SKILL.md +0 -12
- package/skills/experience-lightning-out-configure/SKILL.md +0 -129
- package/skills/experience-lightning-preview-configure/SKILL.md +0 -67
- package/skills/experience-lightning-types-query/SKILL.md +0 -98
- package/skills/experience-malware-scan-configure/SKILL.md +0 -71
- package/skills/experience-my-salesforce-configure/SKILL.md +0 -126
- package/skills/experience-navigation-menus-configure/SKILL.md +0 -235
- package/skills/experience-notification-types-configure/SKILL.md +0 -206
- package/skills/experience-notifications-configure/SKILL.md +0 -75
- package/skills/experience-record-discovery-query/SKILL.md +0 -227
- package/skills/experience-regenerate-previews-open/SKILL.md +0 -94
- package/skills/experience-sales-cloud-mab-configure/SKILL.md +0 -254
- package/skills/experience-schema-builder-open/SKILL.md +0 -38
- package/skills/experience-simple-record-home-configure/SKILL.md +0 -110
- package/skills/experience-static-resources-configure/SKILL.md +0 -74
- package/skills/field-service-setup-coordinate/SKILL.md +0 -62
- package/skills/field-service-work-plan-configure/SKILL.md +0 -253
- package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +0 -180
- package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +0 -196
- package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +0 -106
- package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +0 -96
- package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +0 -111
- package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +0 -250
- package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +0 -122
- package/skills/fsc-digital-origination-coordinate/SKILL.md +0 -653
- package/skills/fsc-digital-origination-demo-run/SKILL.md +0 -225
- package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +0 -112
- package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +0 -396
- package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +0 -336
- package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +0 -208
- package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +0 -375
- package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +0 -83
- package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +0 -248
- package/skills/fsc-digital-origination-sample-data-create/SKILL.md +0 -206
- package/skills/fsc-document-checklist-settings-configure/SKILL.md +0 -57
- package/skills/fsc-flexible-hierarchy-configure/SKILL.md +0 -148
- package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +0 -1430
- package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +0 -471
- package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +0 -429
- package/skills/fsc-pricing-product-configurator-configure/SKILL.md +0 -150
- package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +0 -123
- package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +0 -82
- package/skills/fsc-product-act3-attributes-create/SKILL.md +0 -249
- package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +0 -196
- package/skills/fsc-product-act5-considerations-get/SKILL.md +0 -44
- package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +0 -384
- package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +0 -144
- package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +0 -107
- package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +0 -189
- package/skills/fsc-stage-management-definition-create/SKILL.md +0 -108
- package/skills/fsc-stage-management-permissions-assign/SKILL.md +0 -143
- package/skills/fsc-stage-management-transitions-configure/SKILL.md +0 -139
- package/skills/health-cloud-appt-booking-config-configure/SKILL.md +0 -135
- package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +0 -134
- package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +0 -136
- package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +0 -134
- package/skills/health-cloud-care-requests-create/SKILL.md +0 -178
- package/skills/health-cloud-initial-configure/SKILL.md +0 -511
- package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +0 -1374
- package/skills/health-cloud-provider-search-settings-configure/SKILL.md +0 -924
- package/skills/health-cloud-referral-management-coordinate/SKILL.md +0 -513
- package/skills/health-cloud-timeline-configure/SKILL.md +0 -622
- package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +0 -135
- package/skills/industries-account-score-settings-query/SKILL.md +0 -78
- package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +0 -177
- package/skills/industries-ad-product-availability-search/SKILL.md +0 -399
- package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +0 -628
- package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +0 -73
- package/skills/industries-atm-settings-starter-configure/SKILL.md +0 -76
- package/skills/industries-batch-document-ai-configure/SKILL.md +0 -196
- package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +0 -71
- package/skills/industries-branch-management-settings-configure/SKILL.md +0 -89
- package/skills/industries-bre-decision-table-access-configure/SKILL.md +0 -367
- package/skills/industries-brokerage-settings-configure/SKILL.md +0 -41
- package/skills/industries-calendar-sync-settings-configure/SKILL.md +0 -89
- package/skills/industries-care-request-settings-configure/SKILL.md +0 -218
- package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +0 -54
- package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +0 -380
- package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +0 -216
- package/skills/industries-catalog-process-intake-configure/SKILL.md +0 -219
- package/skills/industries-catalog-process-knowledge-configure/SKILL.md +0 -153
- package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +0 -168
- package/skills/industries-cds-general-settings-configure/SKILL.md +0 -69
- package/skills/industries-claim-financial-settings-configure/SKILL.md +0 -169
- package/skills/industries-clinical-data-model-settings-configure/SKILL.md +0 -136
- package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +0 -105
- package/skills/industries-collection-plan-settings-configure/SKILL.md +0 -132
- package/skills/industries-comms-service-console-settings-configure/SKILL.md +0 -159
- package/skills/industries-compliance-configure/SKILL.md +0 -102
- package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +0 -76
- package/skills/industries-contact-center-app-layout-configure/SKILL.md +0 -88
- package/skills/industries-contact-center-components-configure/SKILL.md +0 -96
- package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +0 -95
- package/skills/industries-contact-center-user-access-assign/SKILL.md +0 -96
- package/skills/industries-course-waitlist-config-configure/SKILL.md +0 -162
- package/skills/industries-crisis-center-settings-configure/SKILL.md +0 -84
- package/skills/industries-custom-object-settings-configure/SKILL.md +0 -94
- package/skills/industries-data-cloud-integration-configure/SKILL.md +0 -88
- package/skills/industries-data-space-feature-mappings-configure/SKILL.md +0 -245
- package/skills/industries-decision-matrix-builder-configure/SKILL.md +0 -78
- package/skills/industries-decision-table-hbase-configure/SKILL.md +0 -87
- package/skills/industries-decision-table-version-configure/SKILL.md +0 -74
- package/skills/industries-decision-tables-builder-configure/SKILL.md +0 -253
- package/skills/industries-decision-tables-configure/SKILL.md +0 -439
- package/skills/industries-energy-utilities-configure/SKILL.md +0 -251
- package/skills/industries-eu-cloud-multisite-configure/SKILL.md +0 -1008
- package/skills/industries-eu-new-connections-configure/SKILL.md +0 -30
- package/skills/industries-explainability-msg-template-configure/SKILL.md +0 -135
- package/skills/industries-expression-set-message-token-configure/SKILL.md +0 -135
- package/skills/industries-field-service-settings-configure/SKILL.md +0 -82
- package/skills/industries-form-framework-settings-configure/SKILL.md +0 -30
- package/skills/industries-fsc-ai-settings-configure/SKILL.md +0 -57
- package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +0 -172
- package/skills/industries-fsc-b2b-settings-configure/SKILL.md +0 -61
- package/skills/industries-fsc-insurance-settings-configure/SKILL.md +0 -58
- package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +0 -103
- package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +0 -117
- package/skills/industries-fsc-wealth-settings-configure/SKILL.md +0 -99
- package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +0 -120
- package/skills/industries-fundraising-rfm-configure/SKILL.md +0 -128
- package/skills/industries-fundraising-settings-configure/SKILL.md +0 -145
- package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +0 -299
- package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +0 -87
- package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +0 -58
- package/skills/industries-hc-score-category-settings-configure/SKILL.md +0 -167
- package/skills/industries-health-engagement-settings-configure/SKILL.md +0 -218
- package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +0 -131
- package/skills/industries-home-health-bundling-policy-create/SKILL.md +0 -50
- package/skills/industries-home-health-entity-labels-configure/SKILL.md +0 -29
- package/skills/industries-home-health-fsl-package-deploy/SKILL.md +0 -71
- package/skills/industries-home-health-fsl-settings-validate/SKILL.md +0 -27
- package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +0 -80
- package/skills/industries-home-health-guided-setup-configure/SKILL.md +0 -836
- package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +0 -55
- package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +0 -61
- package/skills/industries-home-health-licenses-assign/SKILL.md +0 -27
- package/skills/industries-home-health-operating-hours-create/SKILL.md +0 -40
- package/skills/industries-home-health-scheduling-policy-create/SKILL.md +0 -41
- package/skills/industries-home-health-service-objective-create/SKILL.md +0 -22
- package/skills/industries-home-health-skills-create/SKILL.md +0 -31
- package/skills/industries-home-health-users-create/SKILL.md +0 -29
- package/skills/industries-icm-act3-toggles-configure/SKILL.md +0 -198
- package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +0 -361
- package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +0 -550
- package/skills/industries-integrated-care-management-configure/SKILL.md +0 -168
- package/skills/industries-object-enablement-configure/SKILL.md +0 -86
- package/skills/industries-tpm-system-processing-service-configure/SKILL.md +0 -64
- package/skills/integration-apex-settings-configure/SKILL.md +0 -61
- package/skills/marketing-e360-email-archiving-configure/SKILL.md +0 -73
- package/skills/platform-custom-permissions-configure/SKILL.md +0 -687
- package/skills/platform-label-workbench-import-create/SKILL.md +0 -67
- package/skills/platform-privacy-agent-settings-configure/SKILL.md +0 -752
|
@@ -1,539 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: flow-element-start
|
|
3
|
-
license: LICENSE.txt has complete terms
|
|
4
|
-
description: "Start element — configure the trigger type, object scope, entry conditions, and scheduled paths that fire a flow. Covers record triggers (before/after save, before delete), scheduled flows, platform events, autolaunched flows, and screen flows. Key decision: before-save (synchronous, no cross-record DML) vs. after-save (async, can update other records). TRIGGER when: user configures a flow's trigger, entry criteria, scheduled paths, or run-as mode. DO NOT TRIGGER when the user needs a Wait/Pause element for mid-flow delays (use flow-element-wait)."
|
|
5
|
-
metadata:
|
|
6
|
-
version: "1.0"
|
|
7
|
-
related-skills: flow-flow-properties, flow-shared-record-filter
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Start Element
|
|
11
|
-
|
|
12
|
-
## Reference File Index
|
|
13
|
-
|
|
14
|
-
| File | Purpose |
|
|
15
|
-
|---|---|
|
|
16
|
-
| `../../shared/flow-type-resolver/flow-type-resolver.md` | Canonical flow-type resolution — picking `processType`/`triggerType`/`recordTriggerType`/`runInMode` from the characteristics of what is being automated, plus the literal-"autolaunched" guidance (an explicit *"autolaunched flow"* is no-trigger — do not infer a record, `Scheduled`, or audience trigger from intent- or timing-language *unless* the user also explicitly asks for that trigger, e.g. "schedule-triggered", "runs daily at 3 AM"). Load when choosing a flow's type/trigger. (`../../shared/decision-tree.md` is a thin pointer to it.) |
|
|
17
|
-
| `examples/autolaunched.json` | Autolaunched / no-trigger Start example |
|
|
18
|
-
| `examples/beforeSave.json` | Before Save record-triggered Start example |
|
|
19
|
-
| `examples/recordTriggered.json` | After Save record-triggered Start example |
|
|
20
|
-
| `examples/scheduled.json` | Scheduled trigger Start example |
|
|
21
|
-
| `examples/filterFormula-dateRange.json` | **Record-triggered** flow with `filterFormula` using date arithmetic — demonstrates correct date-range filtering (see [[flow.shared.formula-expression]] §1.1 for why `ADDDAYS()` is not available). `filterFormula` is record-triggered-only; NOT valid on Scheduled flows |
|
|
22
|
-
| `examples/platformEvent.json` | Platform event trigger Start example |
|
|
23
|
-
| `examples/segment-weekly-schedule.json` | Segment-triggered weekly run-schedule example |
|
|
24
|
-
| `audience-common.md` | Shared build contract for ALL audience triggers (Segment, List, CampaignMember, RecordQuery) — run schedule, top-level `timeZoneSidKey`, top-level `dataSpace`, optional `dataGraph`, re-entry (`entryType`), save-and-activate gates, builder round-trip defaults. Load FIRST for any audience trigger, then the per-trigger file below |
|
|
25
|
-
| `segment-triggered.md` | Segment (Audience) flow build guide — MUST load (after `audience-common.md`) before configuring a Segment flow (segment binding chain, eligibility gate, `publishSegment`, outreach actions, `$Record` member context) |
|
|
26
|
-
| `list-campaignmember.md` | List (Actionable List) + CampaignMember (Campaign) build guide — MUST load (after `audience-common.md`) before configuring either (the `start.listAction` binding, audience-selection gate, `$Input` member handles, examples) |
|
|
27
|
-
| `recordquery.md` | RecordQuery (all records of an SObject matching a filter) build guide — MUST load (after `audience-common.md`) before configuring it (the `start.object` + optional `start.filters` binding, `CRM_OBJECT_SELECTION_REQUIRED` gate, direct `$Input.<field>` record context, example) |
|
|
28
|
-
| `automation-event-triggered.md` | Automation Event (OOTB email-engagement) flow build guide — MUST load before configuring an `AutomationEvent` flow (start `eventName`/`eventType`, the OOTB email-event catalog, and the trigger-vs-wait disambiguation) |
|
|
29
|
-
| `form-submission-triggered.md` | Form-Triggered (Marketing form submission) flow build guide — MUST load before configuring a `FormSubmissionEvent` flow (form discovery → content FQN for start `form`, `$Form.<field>` names, one-form-per-flow rule, and the prohibition on `AutomationEvent` + `trgrOnFormSubmission`) |
|
|
30
|
-
| `examples/formSubmission.json` | Form-Triggered start — `form` bound to a form's content FQN, plus a Create Records element mapping `$Form` answers |
|
|
31
|
-
| `data-cloud-data-change-triggered.md` | Data Cloud-Triggered (single DMO record change) flow build guide — MUST load before configuring a `DataCloudDataChange` flow (DMO discovery chain, start `object`/`recordTriggerType` shape, `$Record.<dmoField>` context, writable-SObject write rule, and the data-graph/core-record/AutomationEvent disambiguation) |
|
|
32
|
-
| `examples/automationEvent-emailOpen.json` | Automation Event start — email-open trigger with the required `associatedContent` start input |
|
|
33
|
-
| `examples/automationEvent-emailClick.json` | Automation Event start — email link-click trigger with `associatedContent` + `specificLink` start inputs |
|
|
34
|
-
| `examples/negative-triggerTypeNone.json` | INVALID: `triggerType: "None"` must never be emitted |
|
|
35
|
-
| `examples/negative-filterLogicNoConditions.json` | INVALID: `filterLogic: "no_conditions"` must never be emitted |
|
|
36
|
-
| `examples/negative-scheduledMissingFilterLogic.json` | INVALID: Scheduled flow missing required `filterLogic` |
|
|
37
|
-
| `examples/negative-scheduledFilterFormula.json` | INVALID: Scheduled flow using `filterFormula` / `formula_evaluates_to_true` — formula entry criteria is record-triggered-only; use literal `filters[]` + a body Decision instead |
|
|
38
|
-
| `examples/negative-valueDataType.json` | INVALID: `valueDataType` in filter value (UI-layer only) |
|
|
39
|
-
| `examples/negative-platformEventWithObject.json` | INVALID: PlatformEvent using `eventName`/`eventType` — must use `object` field |
|
|
40
|
-
| `examples/negative-priorInEntryCriteria-doesRequire.json` | INVALID: `$Record__Prior` in Start entry criteria while `doesRequireRecordChangedToMeetCriteria: true` — `FORMULA_EXPRESSION_INVALID` |
|
|
41
|
-
|
|
42
|
-
## Overview
|
|
43
|
-
|
|
44
|
-
Start element defines trigger type, which determines available system variables and element constraints.
|
|
45
|
-
|
|
46
|
-
## Picking the flow type — use the flow-type-resolver reference
|
|
47
|
-
|
|
48
|
-
**Flow-type classification (which `processType` / `triggerType` / `recordTriggerType` /
|
|
49
|
-
`runInMode` to build from a request's intent) is owned by the flow-type-resolver reference
|
|
50
|
-
(`../../shared/flow-type-resolver/flow-type-resolver.md`) — the single source of truth.** Load it
|
|
51
|
-
to resolve the tuple before configuring the Start element; do not re-derive the choice here. The
|
|
52
|
-
**authoritative supported set** — the full enumeration of every supported
|
|
53
|
-
`(processType × triggerType × recordTriggerType)` tuple, including the finer Flow Builder picker
|
|
54
|
-
labels (Before Save / After Save / Before Delete, carried as `uiLabel`), the audience triggers
|
|
55
|
-
(`Segment` / `List` / `CampaignMember` / `RecordQuery`), and the Orchestration / Approval
|
|
56
|
-
variants — is that reference's `taxonomy.json` → `supportedTuples`, validated against the org by
|
|
57
|
-
its `eval/verify_supported_types.py`.
|
|
58
|
-
|
|
59
|
-
Once the resolver returns a tuple, use the **Reference File Index** above to load the
|
|
60
|
-
per-trigger build guide (`audience-common.md` + `segment-triggered.md` /
|
|
61
|
-
`list-campaignmember.md` / `recordquery.md` for audiences; `automation-event-triggered.md`
|
|
62
|
-
for `AutomationEvent`; `form-submission-triggered.md` for `FormSubmissionEvent`; the Engagement / Journey section + `../wait/wait.md` for
|
|
63
|
-
`IndivRelatedRecord`) and follow it for the Start-element shape.
|
|
64
|
-
|
|
65
|
-
> **"Autolaunched" is literal:** an explicit *"autolaunched flow"* request is **no-trigger**
|
|
66
|
-
> — do not infer a record or `Scheduled` trigger from intent- or timing-language.
|
|
67
|
-
> **Exception:** when the user *also* explicitly asks for a trigger — "schedule-triggered",
|
|
68
|
-
> "runs daily at 3 AM", "on create/update", "fire when the record is saved" — build that
|
|
69
|
-
> trigger (a *"schedule-triggered autolaunched flow"* is `Scheduled`, not no-trigger). An
|
|
70
|
-
> On-Demand Flow stays `OnDemandNoTrigger` even if it says "autolaunched"
|
|
71
|
-
> ([On-Demand](#on-demand-ondemandnotrigger)). Full
|
|
72
|
-
> rule, examples, and body-modeling pattern: `../../shared/flow-type-resolver/flow-type-resolver.md`.
|
|
73
|
-
|
|
74
|
-
> **A marketing flow that fires on a Lead, Contact or Prospect change is `IndivRelatedRecord`,
|
|
75
|
-
> not `RecordAfterSave`.** This covers an "automation event" flow that triggers on a CRM record
|
|
76
|
-
> change ("when Lead Status is Nurturing") and sends a marketing message, sends to a journey or
|
|
77
|
-
> waits on a journey or engagement event. A "CRM Triggered Flow" request follows the resolver:
|
|
78
|
-
> `IndivRelatedRecord` when it says "marketing", otherwise ask the user.
|
|
79
|
-
> Flow Builder lists it under Automation Event-Triggered Flow as "Prospect, Lead, Contact or
|
|
80
|
-
> Related Record Change". Build it with `start.triggerType: "IndivRelatedRecord"`, the record
|
|
81
|
-
> as `start.object`, and `$Input.<field>` (not `$Record`) for that record's fields. A
|
|
82
|
-
> `RecordAfterSave` start can't hold these actions: the org rejects even a Draft save with
|
|
83
|
-
> `You can't use the Send to Journey action type in flows with the Autolaunched Flow process
|
|
84
|
-
> type.` (or `…the Send Email Message action type…`). `AutomationEvent` is a different trigger:
|
|
85
|
-
> it starts only on an email or SMS engagement event (`automation-event-triggered.md`).
|
|
86
|
-
|
|
87
|
-
## Before Save — Critical Architectural Constraint
|
|
88
|
-
|
|
89
|
-
**THE silent failure mode.** The flow saves successfully; forbidden elements fail silently at runtime.
|
|
90
|
-
|
|
91
|
-
### RecordBeforeSave — Forbidden Elements:
|
|
92
|
-
- `recordCreates`, `recordUpdates`, `recordDeletes` (DML on other objects)
|
|
93
|
-
- `recordLookups` (Get Records — SOQL not allowed)
|
|
94
|
-
- Action Calls to external services (callouts)
|
|
95
|
-
- Send Email actions
|
|
96
|
-
|
|
97
|
-
### CORRECT — Direct field update pattern (what Before Save is for):
|
|
98
|
-
```json
|
|
99
|
-
{
|
|
100
|
-
"name": "Set_Description",
|
|
101
|
-
"assignmentItems": [{
|
|
102
|
-
"assignToReference": "$Record.Description",
|
|
103
|
-
"operator": "Assign",
|
|
104
|
-
"value": { "stringValue": "Auto-populated by flow" }
|
|
105
|
-
}]
|
|
106
|
-
}
|
|
107
|
-
```
|
|
108
|
-
Assignments to `$Record.<FieldName>` are committed when the record saves — no `recordUpdates` needed or allowed. Also permitted: Decisions, formula evaluations, assignments to flow variables.
|
|
109
|
-
|
|
110
|
-
| Need | Use |
|
|
111
|
-
|---|---|
|
|
112
|
-
| Set a field on the triggering record | `RecordBeforeSave` + Assignment to `$Record.<Field>` |
|
|
113
|
-
| Create a related record | `RecordAfterSave` + `recordCreates` |
|
|
114
|
-
| Update other records | `RecordAfterSave` + `recordUpdates` |
|
|
115
|
-
| Query related data | `RecordAfterSave` + `recordLookups` |
|
|
116
|
-
|
|
117
|
-
## Trigger Types
|
|
118
|
-
|
|
119
|
-
### Record-Triggered (Before Save)
|
|
120
|
-
- **triggerType**: `RecordBeforeSave`
|
|
121
|
-
- Runs synchronously before record is saved; can only update fields on `$Record` — see [Before Save Constraint](#before-save--critical-architectural-constraint)
|
|
122
|
-
- Supports `Create`, `Update`, `CreateAndUpdate` as `recordTriggerType`
|
|
123
|
-
- `$Record` = new/updated values; `$Record__Prior` = prior values (Update/CreateAndUpdate only)
|
|
124
|
-
- No scheduled paths; `doesRequireRecordChangedToMeetCriteria` available for Update/CreateAndUpdate
|
|
125
|
-
|
|
126
|
-
### Record-Triggered (After Save)
|
|
127
|
-
- **triggerType**: `RecordAfterSave`
|
|
128
|
-
- Runs asynchronously after record is saved; can DML, send emails, call external services
|
|
129
|
-
- Supports `Create`, `Update`, `Delete`, `CreateAndUpdate` as `recordTriggerType`
|
|
130
|
-
- `$Record` = saved values; `$Record__Prior` available for Update/CreateAndUpdate
|
|
131
|
-
- Scheduled paths available for AfterSave only — see [Scheduled Paths](#scheduled-paths)
|
|
132
|
-
- Multiple flows on same object/event: execution order controlled by `triggerOrder` (flow-root property, see `flow-properties.md`)
|
|
133
|
-
|
|
134
|
-
### Record-Triggered (Before Delete)
|
|
135
|
-
- **triggerType**: `RecordBeforeDelete`; `recordTriggerType` auto-set to `Delete`
|
|
136
|
-
- `$Record` = record being deleted (read-only); no scheduled paths; no `doesRequireRecordChangedToMeetCriteria`
|
|
137
|
-
|
|
138
|
-
### Scheduled (Time-Based)
|
|
139
|
-
- **triggerType**: `Scheduled`
|
|
140
|
-
- Runs on a schedule. **A Scheduled flow supports only `frequency` `Once`, `Daily`, or `Weekly`** — `Hourly`/`Monthly`/`Yearly`/`Weekdays`/`OnActivate` are NOT valid for `Scheduled` and are rejected.
|
|
141
|
-
- Requires: `object`, `startDate`, `startTime`, `frequency`; `filterLogic` required (cannot be "No Conditions")
|
|
142
|
-
- `$Record` = each record matching filter at run time
|
|
143
|
-
- Optional: `endDate`/`endTime`, `maxBatchSize` (API v63+)
|
|
144
|
-
- **Do NOT set `frequencyNumber`, `daysOfWeekToRun`, `dayOfMonthToRun`, or `timeZoneSidKey` on a Scheduled flow** — those are "enhanced scheduling" fields gated to the Segment (Audience) trigger; the validator rejects them here (`timeZoneSidKey` → `UNSUPPORTED_FIELD_FOR_PROCESS_TYPE`). For a weekly/monthly *marketing* cadence, use a Segment flow, not a Scheduled flow.
|
|
145
|
-
- **On SAVE, `schedule.startTime`/`schedule.endTime`/`schedule.startDate`/`schedule.endDate` must be wire strings, NOT the server's read-back form.** A retrieve hands these back as `schedule.startTime`/`schedule.endTime`: `{ "timeInMillis": N }` objects, and `schedule.startDate`/`schedule.endDate`: epoch-millis integers — that is the **read-back form only**. Echoing those objects/integers straight back on save is rejected (`ILLEGAL_QUERY_PARAMETER_VALUE` observed). Convert first: `{ "timeInMillis": 32400000 }` → `"09:00:00.000"`; for a date, take the **UTC** calendar day (`floor(epochMillis / 86400000)`), never a local-zone render — these are midnight-UTC instants, so local formatting in a negative-UTC offset silently lands a day early (e.g. `1773532800000` → `"2026-03-15"` in UTC but `"2026-03-14"` in US Pacific). See `../wait/wait.md` (the same rule for `resumeTime`/`resumeDate`) and `shared/anti-patterns.md` item 39 for the worked midnight-boundary example.
|
|
146
|
-
- **Entry criteria: literal `filters[]` rows only.** `filterFormula` / `filterLogic: "formula_evaluates_to_true"` is record-triggered-only — on a Scheduled flow it saves as `InvalidDraft` and warns `FORMULA_EXPRESSION_INVALID` (even a trivial `1 = 1`). `filters[]` also reject `elementReference`; use literal typed values or `IsNull`. To select by a formula, field-to-field comparison, or `$Flow.CurrentDate` (e.g. "birthday is today"): narrow with literal `filters[]`, then evaluate the expression in a Boolean **Formula resource** compared `EqualTo true` in a **Decision** (non-matches → end), or precompute a formula field and filter on it literally.
|
|
147
|
-
|
|
148
|
-
### Platform Event-Triggered
|
|
149
|
-
- **triggerType**: `PlatformEvent`
|
|
150
|
-
- Use `object` = event API name (e.g., `"Payment_Page_Change__e"`) — do NOT use `eventName` or `eventType` (those cause save failure)
|
|
151
|
-
- `$Record` = platform event fields; no scheduled paths
|
|
152
|
-
- **Fault handling:** `customErrors` is NOT valid here (`TRIGGER_TYPE_ELEMENT_NOT_SUPPORTED`, same as Autolaunched) — a DML/action `faultConnector` must target a `Log_Error` actionCall or a `$Flow.FaultMessage` Assignment instead. For observability, prefer a persisted/notified handler — a bare in-memory Assignment leaves the error invisible in this headless flow (advisory; see `shared/fault-paths/fault-paths.md` § Observable vs. In-Memory-Only Fault Handling). See `elements/custom-error/custom-error.md` and `shared/anti-patterns.md` #2.
|
|
153
|
-
|
|
154
|
-
### Autolaunched (No Trigger)
|
|
155
|
-
- **triggerType**: must be absent — the key must not appear in the JSON at all. Do NOT emit `"triggerType": "None"` or `"triggerType": ""` — both are invalid (see negative-triggerTypeNone.json).
|
|
156
|
-
- Called from Apex, REST API, Process Builder, another flow (subflow), or scheduled job
|
|
157
|
-
- A marketing send (`sendEmailMessage` / `sendSmsMessage` / `sendToJourney`) launched by an app or the API is not this type; see [On-Demand](#on-demand-ondemandnotrigger).
|
|
158
|
-
- No object, no filters; run-in mode configurable — see [Run-As User Context](#run-as-user-context)
|
|
159
|
-
- Input/output variables declared in `metadata.variables[]` with `isInput: true` / `isOutput: true` — NOT on Start:
|
|
160
|
-
```json
|
|
161
|
-
{ "name": "inputAccountId", "dataType": "String", "isInput": true, "isOutput": false }
|
|
162
|
-
```
|
|
163
|
-
- Forbidden: `screens[]` — save-time error: "Element type Screen is not supported for process type AutoLaunchedFlow"
|
|
164
|
-
- Forbidden: `customErrors[]` anywhere in the flow (via `faultConnector`, a regular `connector`, or unconnected) — Custom Error elements require a record-triggered `triggerType` (`RecordBeforeSave`/`RecordAfterSave`); an Autolaunched Flow's fault paths must target a `Log_Error` actionCall or a `$Flow.FaultMessage` Assignment instead (for observability, prefer a persisted/notified handler — advisory, see `shared/fault-paths/fault-paths.md` § Observable vs. In-Memory-Only Fault Handling). Save-time error: `TRIGGER_TYPE_ELEMENT_NOT_SUPPORTED` — "A flow can't include Custom Error elements when TriggerType is set to None". See `elements/custom-error/custom-error.md`.
|
|
165
|
-
|
|
166
|
-
### Screen Flow
|
|
167
|
-
- **processType**: `Flow` + **triggerType**: absent (key omitted); runs interactively in user's browser
|
|
168
|
-
- No object, no filters, no scheduled paths; run-in mode configurable — see [Run-As User Context](#run-as-user-context)
|
|
169
|
-
|
|
170
|
-
### Automation Event-Triggered
|
|
171
|
-
- **triggerType**: `AutomationEvent` (OOTB engagement events); **processType**: `AutoLaunchedFlow`. `AdminAutomationEvent` and `ApiEventTrigger` are separate admin/API variants — do not resolve marketer intent to them.
|
|
172
|
-
- The flow FIRES when a core email-engagement event occurs (email open, link click, bounce, response). The event is set on the start via **`eventName` + `eventType`** (both carry the same trigger string) — NOT `actionName`/`actionType`. `$Event` is available once they are set. Optional entry `conditions`/`conditionLogic` (default: No Conditions).
|
|
173
|
-
- **You MUST load `automation-event-triggered.md` before configuring an `AutomationEvent` flow** — it carries the OOTB email-event catalog and the required start shape; none of it is derivable.
|
|
174
|
-
- **A valid (activatable) AutomationEvent flow also needs required start `inputs[]` (`associatedContent`; plus `specificLink` for link-click) and a flow-level `dataSpace`** — without them the flow saves but is `InvalidDraft`. This is the one AutoLaunched case where start `inputs[]` ARE populated; see `automation-event-triggered.md`.
|
|
175
|
-
- **Form Submission is NOT an `AutomationEvent` event.** The builder lists it in the Automation Event picker, but a form-submission flow saves as `triggerType: FormSubmissionEvent` — see [Form-Triggered](#form-triggered-marketing-form-submission). Never emit `AutomationEvent` + `trgrOnFormSubmission`.
|
|
176
|
-
- **Do NOT confuse with a mid-flow wait:** a flow that runs first and PAUSES until an engagement event uses `triggerType: IndivRelatedRecord` (or `Segment`) + a `WaitUntilEvent` element, whose event is set via `automationEventName`/`automationEventType` — see [Engagement / Journey-Triggered](#engagement--journey-triggered-indivrelatedrecord--required-for-mid-flow-wait-until-event). And do NOT confuse with `PlatformEvent` (a `__e` message, set via `object`).
|
|
177
|
-
|
|
178
|
-
### Data Cloud-Triggered (Single DMO Record Change)
|
|
179
|
-
- **triggerType**: `DataCloudDataChange`; **processType**: `AutoLaunchedFlow`. The flow FIRES when a single Data Cloud DMO record is created or updated.
|
|
180
|
-
- The DMO is set on the start via **`object`** (a `ssot__*__dlm` API name resolved from discovery), and **`recordTriggerType`** is `Create`, `CreateAndUpdate`, or `Update` (no `Delete`). `$Record` = the changed DMO record (read-only), referenced downstream as `$Record.<dmoField>`.
|
|
181
|
-
- **You MUST load `data-cloud-data-change-triggered.md` before configuring a `DataCloudDataChange` flow** — it carries the DMO discovery chain, the start shape, the writable-SObject write rule (DMOs are read/trigger-only), and the disambiguation from a data-graph trigger, from core record triggers, and from `AutomationEvent`; none of it is derivable.
|
|
182
|
-
- Requires a Data Cloud-provisioned org and API version 59.0+. Do NOT confuse with `DataGraphDataChange` (multi-object data graph, org-gated — see below), the core-SObject record triggers (`RecordAfterSave`/`RecordBeforeSave`/`RecordBeforeDelete`), or `AutomationEvent` (email engagement).
|
|
183
|
-
|
|
184
|
-
### Activation-Triggered (Data Cloud Activation Payload)
|
|
185
|
-
- **triggerType**: `Activation`; **processType**: `AutoLaunchedFlow`. The flow FIRES when a Data Cloud **activation** runs, once per activated member. The activation is set on the start (`activation` set) and its payload is exposed as **`$ActivationData`**, populated from the activation's `activationRecordSchema`.
|
|
186
|
-
- **`$ActivationData` is the canonical, authoritative data source for an `Activation` flow — read AND write through it.** Because `object` is also set on the start (e.g. `Account`), the builder ALSO exposes `$Record` ("Triggering Account"). **`$Record` is NOT the activation payload** — it is the underlying core record — and must NOT be the default read/write target. Defaulting to `$Record` produces a semantically wrong flow (it reads/updates the triggering record, not the activated member). `$ActivationData` supersedes `$Record` here; use `$Record` only when the request explicitly needs the core record.
|
|
187
|
-
- **`$ActivationData` attribute names come from the activation's `activationRecordSchema`, NOT the SObject field names** — they frequently differ (e.g. the attribute is `$ActivationData.AccountType`, not `$ActivationData.Type`). Discover the actual attribute names from the activation's `activationRecordSchema` before referencing them; do not assume they match the core object's fields.
|
|
188
|
-
- **Write path — update by `Id = $ActivationData.Id`, never `inputReference: "$Record"`.** To update the activated member, use Get/Update filtered on `Id Equals $ActivationData.Id` (or assign fields resolved from `$ActivationData`). An in-place `$Record` update writes the triggering core record, not the activation payload.
|
|
189
|
-
- **Expected advisory:** a pure-`$ActivationData` update (filter by `Id = $ActivationData.Id`) trips `TRIGGERED_FLOW_REDUNDANT_QUERY` on save. This warning is **acceptable and inherent** to the correct pattern — do NOT "resolve" it by switching to an in-place `$Record` update. The flow still saves and activates.
|
|
190
|
-
- Requires a Data Cloud-provisioned org with activations configured. Do NOT confuse with `DataCloudDataChange` (single DMO record change, uses `$Record`) or the audience triggers (`List`/`CampaignMember`/`RecordQuery` use `$Input`; `Segment` uses `$Record`, see `segment-triggered.md`).
|
|
191
|
-
|
|
192
|
-
#### Minimal worked example — `Activation` flow reading and writing `$ActivationData`
|
|
193
|
-
Request: "When an Account is activated, if the account type is Prospect, append 'prospect' to the Description."
|
|
194
|
-
- **Decision** reads the activation payload: `$ActivationData.AccountType Equals "Prospect"` (the `activationRecordSchema` attribute — NOT `$ActivationData.Type`, and NOT `$Record.Type`).
|
|
195
|
-
- **Get Records** on `Account` filtered `Id Equals $ActivationData.Id` (retrieves the activated member; expect the `TRIGGERED_FLOW_REDUNDANT_QUERY` advisory).
|
|
196
|
-
- **Assignment** builds the new Description from `$ActivationData` / the retrieved record.
|
|
197
|
-
- **Update Records** targets the record from Get (filtered by `Id = $ActivationData.Id`) — NOT `inputReference: "$Record"`.
|
|
198
|
-
|
|
199
|
-
### Form-Triggered (Marketing Form Submission)
|
|
200
|
-
- **triggerType**: `FormSubmissionEvent`; **processType**: `AutoLaunchedFlow`. The flow FIRES, headless, each time someone submits a Marketing form (a Form Builder form stored as Managed Content, `sfdc_cms__form`).
|
|
201
|
-
- The form is set on the start via **`form`** = the form's content FQN (`marketing--<ContentSpaceApiName>.sfdc_cms__form--<ContentKey>`, resolved from discovery — never guessed). No `eventName`/`eventType`, no start `inputs[]`; `actionName`/`actionType` are cleared on save. The submitted answers are `$Form.<field>`.
|
|
202
|
-
- **You MUST load `form-submission-triggered.md` before configuring a `FormSubmissionEvent` flow** — it carries the form discovery chain, the start shape, the `$Form` field names, and the one-form-per-flow rule; none of it is derivable.
|
|
203
|
-
- **HARD PROHIBITION:** never author a form-submission flow as `triggerType: AutomationEvent` + `eventName`/`eventType` `trgrOnFormSubmission`. Flow Builder lists Form Submission under the Automation Event picker, but it saves the flow as `FormSubmissionEvent`; the `AutomationEvent` shape is rejected (invalid event name, `InvalidDraft`).
|
|
204
|
-
- Do NOT confuse with a **Screen Flow** — a form the user steps through inside the flow is `processType: Flow`, not this trigger.
|
|
205
|
-
|
|
206
|
-
### Data Graph / Other
|
|
207
|
-
- `DataGraphDataChange`: requires `triggeringDataGraph` + `triggeringDataModelObjectPath`; `$Event` available
|
|
208
|
-
|
|
209
|
-
### Audience-Triggered flows (`Segment` / `List` / `CampaignMember` / `RecordQuery`)
|
|
210
|
-
|
|
211
|
-
All four share Core's `BaseAudienceTriggerTypeHandler` and enter an audience's members when the flow runs, on `processType: "AutoLaunchedFlow"`. They share one contract (run schedule, top-level `timeZoneSidKey`, top-level `dataSpace`, optional `dataGraph`, re-entry, save-and-activate gates) documented once in **`audience-common.md`** — **load it first for any of the four**, then load the per-trigger binding file below. None of these fields is derivable — do NOT guess them.
|
|
212
|
-
|
|
213
|
-
- **`Segment`** — targets a marketing segment/audience for outreach (email campaigns, drip sequences, re-engagement, nurture journeys) on a schedule or on activation. Do NOT use `Scheduled` or `RecordAfterSave` for segment-based marketing. A request to create a **broadcast** flow that fans out a dynamic segment now is `BroadcastNoTrigger`, not `Segment`. **MUST load `segment-triggered.md`** for the segment name→ID→DMO binding chain, the `segmentOnApiName` eligibility gate, `publishSegment`, outreach actions, and the `$Record` member context. Do not load `segment-triggered.md` for `BroadcastNoTrigger`.
|
|
214
|
-
- **`List` (Actionable List) / `CampaignMember` (Campaign)** — **MUST load `list-campaignmember.md`** for the `start.listAction` binding (List puts the `0wo…` ID in `actionName`; CampaignMember uses the `runCampaign` action with the `701…` ID in the `campaignId` input parameter), the audience-selection gate, and the record context (`$Input.ReferenceRecord` / `$Input.campaignMember`).
|
|
215
|
-
- **`RecordQuery` (all records of one SObject matching a filter)** — **MUST load `recordquery.md`** for the `start.object` (+ optional `start.filters`, **no** `listAction`) binding, the `CRM_OBJECT_SELECTION_REQUIRED` gate, and the direct `$Input.<field>` record context.
|
|
216
|
-
|
|
217
|
-
### Engagement / Journey-Triggered (`IndivRelatedRecord`) — required for mid-flow Wait Until Event
|
|
218
|
-
- **triggerType**: `IndivRelatedRecord`; **processType**: `AutoLaunchedFlow`; opened with **`builderType: JourneyBuilder`**.
|
|
219
|
-
- **Also called a CRM Triggered Flow.** A "CRM Triggered Flow" ("CRM Triggered", "CRM Trigger") request that says "marketing" is this trigger. Without "marketing", the resolver first asks whether the user wants this marketing Automation Event flow or a core Record-Triggered Flow. Flow Builder lists this type under Automation Event-Triggered Flow as "Prospect, Lead, Contact or Related Record Change". It runs when a Contact, Lead, Prospect, or related record changes and can send a marketing email (`sendEmailMessage`) with no mid-flow wait. Before writing the send, load `../action-call/action-call.md` § Send Email Message (E360): the email's content, sender and consent subscription are literal Ids that you look up by name, not a Get Records lookup in the flow. Record-change wording in such a request ("every time a Contact is updated") sets `object` and `recordTriggerType` below; it does not make the flow a core record-triggered flow. The resolver rule is in `../../shared/flow-type-resolver/flow-type-resolver.md`.
|
|
220
|
-
- This is the trigger a flow needs when it pauses on a customer **engagement event** via a mid-flow `WaitUntilEvent` Wait element (email open/click/bounce, SMS response/click/delivery-failure, or a Journey Builder contact event). A plain no-trigger `AutoLaunchedFlow` **cannot** host a `WaitUntilEvent` element — the save is rejected with `ELEMENT_SUBTYPE_NOT_SUPPORTED_FOR_PROCESSTYPE` ("the WaitUntilEvent flow element subtype isn't supported with the AutoLaunchedFlow process type"). `IndivRelatedRecord` (or `Segment`) clears that gate. See `../wait/wait.md` for the Wait Until Event element shape.
|
|
221
|
-
- **Required Start fields** (from a real retrieved engagement flow):
|
|
222
|
-
- `object` — the individual-related object the engagement is scoped to (e.g. `Lead`). **Must be set**; leaving it blank blocks activation.
|
|
223
|
-
- `recordTriggerType` — `Create`, `Update`, or `CreateAndUpdate`.
|
|
224
|
-
- `filters` / `filterLogic` — entry criteria on that object (e.g. `IsDeleted = false`); use the no_conditions omission rule when there are none.
|
|
225
|
-
- **Record context — reference the triggering record as `$Input`, never `$Record`.** The triggering individual-related record is exposed as the bare **`$Input`** SObject (its object = the Start `object` above, e.g. `Lead`). Reference its fields as `$Input.<FieldApiName>` (e.g. `$Input.Status`) in decision conditions, filters, assignments, and record-update input references. Do **NOT** use `$Record`: for this trigger `$Record` is reserved for the Unified-Individual context and does not carry the triggering related record — yet the builder still offers `$Record` and a flow referencing it passes save-time validation, so the mistake is silent (no save error). Note the bare whole-record reference `{!$Input}` can trip a save error ("You can't use the variable "$input" without referencing a field"), so always reference a field; related-record traversal such as `$Input.Contact__r` is a known platform gap.
|
|
226
|
-
- **Expected advisory:** an Update Records filtered on `Id Equals $Input.Id` trips `TRIGGERED_FLOW_REDUNDANT_QUERY` on save. This warning is **acceptable and inherent** to the `$Input` rule above — do NOT "resolve" it by switching to `$Record`. The flow still saves.
|
|
227
|
-
- **Set `dataSpace` on the top-level flow object — required to activate.** Omitting it saves a draft but blocks activation with `DATA_SPACE_REQUIRED_FOR_FLOW_TYPE` ("Specify a data space in this automation's properties."). Set it on the FIRST save, not reactively after the warning. Resolve it through Data 360 for this `IndivRelatedRecord` context. This is the top-level flow field, NOT a Start field. Follow `audience-common.md` § [Set the data space](audience-common.md#set-the-data-space) for the shared data-space resolution (including the Send-to-Journey business-unit rule).
|
|
228
|
-
- **Do NOT set `timeZoneSidKey`** on the Start for this trigger unless a downstream element requires it — like a plain AutoLaunchedFlow, engagement flows use implicit timing (the WaitUntilEvent path nulls out `timeZoneId`; see `../wait/wait.md`).
|
|
229
|
-
- Journey Builder contact events additionally need the Wait event's `mceJourneyInput` (the MCE Journey id) — that lives on the Wait element, not the Start; see `../wait/wait.md`.
|
|
230
|
-
- This trigger is only meaningful in a journey/engagement-provisioned org (the `WaitForAutomationEvents` permission + a provisioned Event Library). To discover the org's available engagement events at runtime, see the discovery guidance in `../wait/wait.md` (use `GET /services/data/vXX.0/flowbuilder/action/invocable-events` with `triggerType: "Segment"` (the OAS param name, not `flowTriggerType`); that discovery `triggerType` is independent of this Start's own `triggerType`).
|
|
231
|
-
|
|
232
|
-
### Broadcast (dynamic segment fan-out)
|
|
233
|
-
- **triggerType**: `BroadcastNoTrigger`; **processType**: `AutoLaunchedFlow`. This is a broadcast flow. It is not a Segment-triggered flow, even when the audience is a dynamic segment. Do NOT load `segment-triggered.md`. Do NOT apply that file's Individual-only eligibility gate, and do NOT require a run schedule, `timeZoneSidKey`, or `start.object`.
|
|
234
|
-
- The segment may be built on any DMO the org already uses for broadcast, including Account (`ssot__Account__dlm`) and Unified Individual (`UnifiedIndividual__dlm`). Resolve the segment the same way as a name lookup: `d360_segment_get` when the prompt gives the API name, otherwise `d360_segment_list` and match `displayName`. Use the resolved `apiName`. Do not invent a segment and do not substitute a different one.
|
|
235
|
-
- **The audience is `start.fanOutAction`, not a canvas `actionCalls` element and not `start.object`.** The fan-out has no name, no label, and no connector. `actionType` is `cdpJitSegment`. `actionName` and `nameSegment` are the segment API name (for example `Account_Dyn_Seg`), never the string `cdpJitSegment`. Describing `actionName=cdpJitSegment` returns an empty descriptor; describe `actionName=<segment api name>`. Do not substitute `cdpSendToActivation` or `cdpPublishSegment`.
|
|
236
|
-
- **Run type** is `start.isAsync`. `false` is Sync. Omit it only when the user did not ask; the platform treats a missing value as sync. Do not ask for a schedule.
|
|
237
|
-
- Set top-level `dataSpace` from the segment (`default` when the segment is in the default data space). A start whose connector goes straight to End is a valid draft when the user did not ask for a body element.
|
|
238
|
-
- **Per-member fields are `$Input.<segmentOnApiName>.<fieldApiName>`**, stored as an `elementReference`, not a string literal. Example: `$Input.UnifiedIndividual__dlm.ssot__FirstName__c`. Confirm the field exists on that DMO before wiring it. `$Input` is one fan-out row, the current segment member.
|
|
239
|
-
|
|
240
|
-
#### Minimal worked example
|
|
241
|
-
Request: "Create a broadcast flow on the dynamic segment Account Dyn Seg. Add a Create Contact whose First Name comes from that segment member. Save it as a draft."
|
|
242
|
-
- Resolve `Account Dyn Seg` to its API name and `segmentOnApiName`.
|
|
243
|
-
- `metadata.start.triggerType` = `BroadcastNoTrigger`, `isAsync` = `false`, no `object`.
|
|
244
|
-
- `metadata.start.fanOutAction` = `{ "actionType": "cdpJitSegment", "actionName": "<segment api name>", "nameSegment": "<segment api name>" }`.
|
|
245
|
-
- Create Records on Contact. First Name `elementReference` = `$Input.<segmentOnApiName>.<firstName field>`.
|
|
246
|
-
- Start connector targets that Create Records element, which connects to End.
|
|
247
|
-
|
|
248
|
-
### On-Demand (`OnDemandNoTrigger`)
|
|
249
|
-
An On-Demand Flow is a marketing flow that an app or integration starts through the API, one person at a time. Use it when the request names an On-Demand Flow, or asks for a marketing send (`sendEmailMessage`, `sendSmsMessage`, `sendToJourney`) that an app or the API triggers for a specific person. Without a marketing send, a flow that "runs on demand" stays no-trigger (`triggerType` omitted); the rule is in `../../shared/flow-type-resolver/flow-type-resolver.md`.
|
|
250
|
-
- **triggerType**: `OnDemandNoTrigger`; **processType**: `AutoLaunchedFlow`. No `object`, no `filters`, no schedule. Do NOT load `segment-triggered.md`.
|
|
251
|
-
- **Top-level `dataSpace` is required.** Resolve it as in `audience-common.md` § [Set the data space](audience-common.md#set-the-data-space). Without it, activation fails: `Specify a data space in this automation's properties.`
|
|
252
|
-
- **Check the action catalog for this context.** Call `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/action/invocable-actions", queryParams: { processType: "AutoLaunchedFlow", triggerType: "OnDemandNoTrigger", dataSpace: "<data space>" })` and require the send action in the result. A no-trigger flow's catalog does not offer the E360 send actions, and saving one there fails, for example: `You can't use the Send SMS Message action type in flows with the Autolaunched Flow process type.`
|
|
253
|
-
- **The recipient is not an action parameter.** The caller supplies the person in the launch request (`IndividualId`, `EmailAddress`, `TelephoneNumber`), and the send actions use that. A send needs no flow variable for the recipient, so do not add one. Declare your own `isInput` variables only for the other values the caller passes (for example a flag that drives a Decision). To read the person's fields in the body, add a `start.dataGraph` (below); do not invent an `IndividualId` variable.
|
|
254
|
-
- **Person fields: `start.dataGraph` + `$SelectedIndividual`.** Resolve the graph as in `audience-common.md` § [Set the data graph](audience-common.md#set-the-data-graph) and check that its backing DMO (`dgObject.developerName`) is Unified Individual or Individual; any other fails: `This flow type requires that the primary data model object (DMO) of the specified data graph be UnifiedIndividual or Individual.` Then read the person's fields as `$SelectedIndividual.<field>` (for example `$SelectedIndividual.ssot__FirstName__c`), for example in Decisions and Exit Rules. Without a `dataGraph`, `$SelectedIndividual` fails: `The "$SelectedIndividual.<field>" element doesn't exist.` Use `$SelectedIndividual`, not `$Record`: `$Record.<field>` also saves when a data graph is set, but its runtime value in an On-Demand Flow is not verified.
|
|
255
|
-
- **Exit Rules are allowed**, both condition-based and event-triggered (`../exit-rule/exit-rule.md`).
|
|
256
|
-
- **Output variables are not returned to the API caller.** The launch response's `outputValues` is empty even when the flow sets an `isOutput` variable. If the user asks for an On-Demand Flow that returns values, keep it `OnDemandNoTrigger` (never switch to a plain autolaunched flow for this), declare the `isOutput` variables they ask for, and say that an On-Demand launch does not return them in the plan summary (before approval) and in your final reply. If they need the values back, ask how they want them delivered; don't add a delivery step they haven't agreed to.
|
|
257
|
-
- **It can't be a subflow.** A Subflow element that references an On-Demand Flow fails to save. No Screen elements (it is an `AutoLaunchedFlow`). If the user wants an E360 send inside a subflow, no shape works: a no-trigger flow can't host the send, and an On-Demand Flow can't be a subflow. Say so and offer an On-Demand Flow the app calls directly, or a core action such as `emailSimple` in the subflow.
|
|
258
|
-
- It is a marketing flow: add a fault path only when the user asks for error handling (`../../shared/fault-paths/fault-paths.md` § Marketing Flows — Fault Paths Only When Asked).
|
|
259
|
-
- Apps launch it with `POST /services/data/vXX.0/actions/custom/flow/<FlowApiName>` and body `{ "inputs": [ { "IndividualId": "…", "TelephoneNumber": "…" } ] }`: pass the contact point the send uses (`EmailAddress` for an email, `TelephoneNumber` for an SMS). The flow must be Active before an app can launch it. The running user needs access to this flow (a permission set or profile that grants the flow), not just Run Flows; otherwise the call fails with `The running user doesn't have the required access to run the flow.` Building the flow does not call this endpoint; mention the access step in your final reply.
|
|
260
|
-
|
|
261
|
-
Fragment of `metadata` (the rest of the flow is normal):
|
|
262
|
-
```json
|
|
263
|
-
{
|
|
264
|
-
"processType": "AutoLaunchedFlow",
|
|
265
|
-
"dataSpace": "default",
|
|
266
|
-
"start": {
|
|
267
|
-
"locationX": 0, "locationY": 0,
|
|
268
|
-
"triggerType": "OnDemandNoTrigger",
|
|
269
|
-
"connector": { "targetReference": "Send_Welcome_SMS" }
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### Other Trigger Types
|
|
275
|
-
- `ExternalSystemChange`, `EnterpriseScaleExternalSystemChange`, `Capability` — these are specialized trigger types for external system integrations and UMA flows. Each has distinct requirements not covered here. (For `DataCloudDataChange`, see [Data Cloud-Triggered](#data-cloud-triggered-single-dmo-record-change) above and `data-cloud-data-change-triggered.md`; for `Activation`, see [Activation-Triggered](#activation-triggered-data-cloud-activation-payload) above — it defaults to `$ActivationData`, NOT `$Record`; for `BroadcastNoTrigger`, see [Broadcast](#broadcast-dynamic-segment-fan-out) above; for `OnDemandNoTrigger`, see [On-Demand](#on-demand-ondemandnotrigger) above.)
|
|
276
|
-
|
|
277
|
-
## Required Properties
|
|
278
|
-
|
|
279
|
-
| Property | Constraints |
|
|
280
|
-
|---|---|
|
|
281
|
-
| `triggerType` | Must be valid for the flow's `processType` |
|
|
282
|
-
| `object` | Required for `RecordBeforeSave`, `RecordAfterSave`, `RecordBeforeDelete`, `Scheduled`; valid SObject API name |
|
|
283
|
-
| `recordTriggerType` | Required for record-triggered flows; auto-set to `Delete` for `RecordBeforeDelete` |
|
|
284
|
-
| `startDate` + `frequency` | Required for Scheduled flows |
|
|
285
|
-
| `eventName` + `eventType` | Required for `AutomationEvent` (both carry the same trigger string) — see `automation-event-triggered.md` |
|
|
286
|
-
| `associatedContent` (+ `specificLink` for link-click) | Required start `inputs[]` for `AutomationEvent` flows — see `automation-event-triggered.md` |
|
|
287
|
-
| `form` | Required for `FormSubmissionEvent` — the form's Managed Content FQN, resolved via discovery — see `form-submission-triggered.md` |
|
|
288
|
-
|
|
289
|
-
## Optional Properties
|
|
290
|
-
|
|
291
|
-
| Property | Default | Notes |
|
|
292
|
-
|---|---|---|
|
|
293
|
-
| `filters` / `filterLogic` | No Conditions | Entry criteria — see [Filter Logic](#filter-logic--entry-criteria) |
|
|
294
|
-
| `filterFormula` | None | Alternative to filter rows; mutually exclusive with `filters[]` |
|
|
295
|
-
| `doesRequireRecordChangedToMeetCriteria` | false | Only valid for Update and CreateAndUpdate. Do NOT combine with a `$Record__Prior` reference in `filters`/`filterFormula` — invalidates the Start (`FORMULA_EXPRESSION_INVALID`); see Validation Rules |
|
|
296
|
-
| `flowRunAsUser` | Running user | User context for scheduled flow execution |
|
|
297
|
-
| `maxBatchSize` | Platform default | Only when `CustomBatchSize` feature enabled |
|
|
298
|
-
| `endDate` / `endTime` | None | When recurring scheduled flow stops |
|
|
299
|
-
| `frequencyNumber` | 1 | **Audience triggers only (Segment/List/CampaignMember/RecordQuery); rejected on Scheduled flows.** See `audience-common.md` § [Run schedule](audience-common.md#run-schedule). |
|
|
300
|
-
| `conditions` / `conditionLogic` | No Conditions | Automation event flows only |
|
|
301
|
-
|
|
302
|
-
## Filter Logic / Entry Criteria
|
|
303
|
-
|
|
304
|
-
**Critical — `no_conditions` omission rule**: When filter logic is "No Conditions" — emit `filters: []` and **omit `filterLogic` entirely**. Do NOT emit `"filterLogic": "no_conditions"` — it is a UI-only sentinel the server strips on save (not a hard rejection), but emit the omitted form rather than relying on clean-up. See `shared/anti-patterns.md` #12.
|
|
305
|
-
|
|
306
|
-
- `No Conditions` — every qualifying record triggers the flow
|
|
307
|
-
- `All Conditions Are Met (AND)` / `Any Condition Is Met (OR)` — standard filter row evaluation
|
|
308
|
-
- `Custom logic` — combine with AND/OR expression (e.g., `1 AND (2 OR 3)`)
|
|
309
|
-
- `Formula Evaluates to True` — formula expression replaces all filter rows
|
|
310
|
-
|
|
311
|
-
For **scheduled flows**: `filterLogic` required — cannot be "No Conditions" (save error if missing).
|
|
312
|
-
|
|
313
|
-
## recordTriggerType Values
|
|
314
|
-
|
|
315
|
-
| Value | Meaning |
|
|
316
|
-
|---|---|
|
|
317
|
-
| `Create` | New record created |
|
|
318
|
-
| `Update` | Existing record updated |
|
|
319
|
-
| `CreateAndUpdate` | Record created or updated |
|
|
320
|
-
| `Delete` | Record deleted (`RecordBeforeDelete` only) |
|
|
321
|
-
|
|
322
|
-
## System Variables Available
|
|
323
|
-
|
|
324
|
-
Rows are evaluated top-down and the FIRST matching row wins. `Activation` is the exception — it matches both the `object`-is-set row and its own row, and the `Activation` row is **authoritative** (see the note below the table).
|
|
325
|
-
|
|
326
|
-
| Condition | Variable |
|
|
327
|
-
|---|---|
|
|
328
|
-
| `Activation` trigger + `activation` set | **`$ActivationData`** — authoritative; use over `$Record` (see note below) |
|
|
329
|
-
| `IndivRelatedRecord` trigger (`object` + `recordTriggerType` set; Journey Builder) | **`$Input`** — the triggering individual-related record; **NOT `$Record`** (see note below) |
|
|
330
|
-
| `Segment` trigger (`object` = the segment's DMO) | `$Record`: the current segment member, `$Record.<field>`, never the bare field name (see `segment-triggered.md`) |
|
|
331
|
-
| `BroadcastNoTrigger`, `RecordQuery`, `List`, or `CampaignMember` trigger | `$Input` (Broadcast: `$Input.<segmentOnApiName>.<field>`; see [Broadcast](#broadcast-dynamic-segment-fan-out)) |
|
|
332
|
-
| `object` is set, record-triggered (NOT `Activation` or `IndivRelatedRecord` — most cases) | `$Record` |
|
|
333
|
-
| `DataCloudDataChange` (`object` = a DMO) | `$Record` (the changed DMO record; NOT `$Event`) |
|
|
334
|
-
| (`RecordBeforeSave` or `RecordAfterSave`) + `recordTriggerType` = Update or CreateAndUpdate | `$Record__Prior` |
|
|
335
|
-
| `FormSubmissionEvent` trigger + `form` set | `$Form` — the submitted answers, `$Form.<field>` (field names from the form; NOT `$Event` or `$Record`) |
|
|
336
|
-
| Automation event + `eventName`/`eventType` set | `$Event` |
|
|
337
|
-
| `OnDemandNoTrigger` + `dataGraph` set | `$SelectedIndividual` (the person the caller passed; the data graph must be rooted on Unified Individual or Individual; see [On-Demand](#on-demand-ondemandnotrigger)) |
|
|
338
|
-
|
|
339
|
-
> **`Activation` trigger — `$ActivationData` wins over `$Record`.** An `Activation` flow sets `object` too, so the builder also exposes `$Record` ("Triggering <Object>"). This overlap is **not** symmetric: `$ActivationData` is the canonical activation payload and the default read/write target; `$Record` is the underlying core record and must **not** be the default. Attribute names come from the activation's `activationRecordSchema` (e.g. `$ActivationData.AccountType`, not `$ActivationData.Type`). Full guidance and a worked example: [Activation-Triggered](#activation-triggered-data-cloud-activation-payload).
|
|
340
|
-
|
|
341
|
-
> **`IndivRelatedRecord` trigger — `$Input`, not `$Record`.** An Individual Related Record-Triggered (Engagement/Journey) flow sets `object` + `recordTriggerType`, so the builder *also* offers `$Record` ("Triggering <Object>") and a flow referencing it still passes save-time validation — but at runtime `$Record` is reserved for the Unified-Individual context and does **not** carry the triggering record. The triggering individual-related record is the bare **`$Input`** SObject (its object = the Start `object`, e.g. `Lead`); reference fields as `$Input.<FieldApiName>` (e.g. `$Input.Status`). Full guidance and the bare-reference gotcha: [Engagement / Journey-Triggered](#engagement--journey-triggered-indivrelatedrecord--required-for-mid-flow-wait-until-event).
|
|
342
|
-
|
|
343
|
-
Reference as `elementReference` literal strings: `"$Record"`, `"$Record__Prior"`, `"$ActivationData"`.
|
|
344
|
-
|
|
345
|
-
| `recordTriggerType` | `$Record` | `$Record__Prior` |
|
|
346
|
-
|---|---|---|
|
|
347
|
-
| `Create` | Available | NOT available — save error: "element doesn't exist" |
|
|
348
|
-
| `Update` | Available (new values) | Available (pre-update values) |
|
|
349
|
-
| `CreateAndUpdate` | Available (new values) | Available (pre-update values for updates) |
|
|
350
|
-
| `Delete` | Available (read-only) | NOT available |
|
|
351
|
-
|
|
352
|
-
## Scheduled Paths
|
|
353
|
-
|
|
354
|
-
Only available for `AutoLaunchedFlow` + `RecordAfterSave`.
|
|
355
|
-
- **`Create`**: always available once object is selected
|
|
356
|
-
- **`Update` / `CreateAndUpdate`**: require `doesRequireRecordChangedToMeetCriteria: true` + at least one filter
|
|
357
|
-
|
|
358
|
-
The `start.connector` = Immediate path (synchronous). `scheduledPaths[]` = time-delayed async branches.
|
|
359
|
-
|
|
360
|
-
### scheduledPaths Metadata Shape
|
|
361
|
-
|
|
362
|
-
`scheduledPaths` is an array directly inside the `start` object.
|
|
363
|
-
|
|
364
|
-
| Field | Type | Notes |
|
|
365
|
-
|---|---|---|
|
|
366
|
-
| `label` | string | Omitted for `AsyncAfterCommit` and `ApprovalRecall` path types |
|
|
367
|
-
| `name` | string | API name; unique within flow |
|
|
368
|
-
| `offsetNumber` | number | Positive = after; negative = before |
|
|
369
|
-
| `offsetUnit` | string | `"Minutes"`, `"Hours"`, `"Days"`, `"Weeks"`, `"Months"` — NOT `"DaysAfter"` / `"DaysBefore"` (UI strings, not valid metadata) |
|
|
370
|
-
| `timeSource` | string | `"RecordTriggerEvent"` or `"RecordField"` |
|
|
371
|
-
| `recordField` | string | Required when `timeSource: "RecordField"`; field API name (e.g., `"CloseDate"`); omit otherwise |
|
|
372
|
-
| `pathType` | string or null | `null` = standard; `"AsyncAfterCommit"` = async after commit; `"ApprovalRecall"` = requires org permission |
|
|
373
|
-
| `connector` | Connector | Edge to first element in this path; required |
|
|
374
|
-
| `maxBatchSize` | number | Range 1–200; omit when not needed |
|
|
375
|
-
|
|
376
|
-
```json
|
|
377
|
-
"start": {
|
|
378
|
-
"triggerType": "RecordAfterSave",
|
|
379
|
-
"object": "Opportunity",
|
|
380
|
-
"recordTriggerType": "Create",
|
|
381
|
-
"scheduledPaths": [
|
|
382
|
-
{
|
|
383
|
-
"label": "Follow Up 3 Days After Create",
|
|
384
|
-
"name": "Follow_Up_3_Days_After_Create",
|
|
385
|
-
"offsetNumber": 3,
|
|
386
|
-
"offsetUnit": "Days",
|
|
387
|
-
"timeSource": "RecordTriggerEvent",
|
|
388
|
-
"connector": { "targetReference": "Send_Follow_Up_Email", "isGoTo": false },
|
|
389
|
-
"pathType": null
|
|
390
|
-
}
|
|
391
|
-
],
|
|
392
|
-
"connector": { "targetReference": "Immediate_Action", "isGoTo": false }
|
|
393
|
-
}
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
## Run-As User Context
|
|
397
|
-
|
|
398
|
-
Configured at **flow root** (`metadata.runInMode`) — NOT on the Start element. The UI picker surfaces this only for autolaunched no-trigger flows, but metadata writing accepts it for any flow type and it is runtime-effective on screen flows as well.
|
|
399
|
-
|
|
400
|
-
| Mode | Behavior |
|
|
401
|
-
|---|---|
|
|
402
|
-
| `SystemModeWithoutSharing` | Runs as system; ignores sharing rules — use for background jobs, cross-user data access |
|
|
403
|
-
| `SystemModeWithSharing` | Runs as system; respects sharing rules |
|
|
404
|
-
| *(not set)* | Runs as invoking user — use for subflows from Screen Flows, user-context operations |
|
|
405
|
-
|
|
406
|
-
Orchestration, Evaluation, Auto Approval Evaluation, and Approval Workflow flows default to `SystemModeWithoutSharing` on creation.
|
|
407
|
-
|
|
408
|
-
## Validation Rules and Constraints
|
|
409
|
-
|
|
410
|
-
- `triggerType` blank → save error
|
|
411
|
-
- `object` blank for record-triggered or scheduled → save error
|
|
412
|
-
- `recordTriggerType` blank for record-triggered → save error
|
|
413
|
-
- `filterFormula` blank when filter mode is formula → save error
|
|
414
|
-
- `filterLogic` blank or null for scheduled flows → save error
|
|
415
|
-
- `filterFormula` + `filters[]` both present → save error: "Cannot specify both filters and filterFormula"
|
|
416
|
-
- `doesRequireRecordChangedToMeetCriteria` auto-set to `false` when `recordTriggerType` is not `Update` or `CreateAndUpdate`
|
|
417
|
-
- `maxBatchSize` only persisted when `CustomBatchSize` feature enabled; scheduled flows require API runtime v63+
|
|
418
|
-
- `$Record__Prior` reference in a Create flow → save error: "element doesn't exist"
|
|
419
|
-
- DML elements in a Before Save flow → runtime failure (saves fine, fails silently when triggered)
|
|
420
|
-
- `elementReference` value in record-triggered or Scheduled Start `filters[]` → blocks activation: `RECORDFILTER_NON_PRIMITIVE` — only literal typed values allowed
|
|
421
|
-
- **Workaround for reference-based Start filtering — record-triggered ONLY**: use `filterFormula` with `filterLogic: "formula_evaluates_to_true"` — formulas can evaluate `$Flow.CurrentDate`, `$Record.Field`, etc.
|
|
422
|
-
- **This workaround does NOT apply to `triggerType: Scheduled`.** Scheduled flows reject `filterFormula` outright (`FORMULA_EXPRESSION_INVALID`, `InvalidDraft`) — formula entry criteria is record-triggered-only. For a Scheduled flow that needs formula/reference-based selection, use literal `filters[]` + a body Decision, or a precomputed formula field on the object. See the Scheduled section above.
|
|
423
|
-
- **`$Record__Prior` in entry criteria + `doesRequireRecordChangedToMeetCriteria: true` → blocks activation** (`FORMULA_EXPRESSION_INVALID`, saves as InvalidDraft with `isSuccess: true` — inspect `warnings`). Full rule, detection, and fix: [[flow.shared.anti-patterns]] #33.
|
|
424
|
-
- A mid-flow `WaitUntilEvent` element requires `triggerType: IndivRelatedRecord` (or `Segment`); a no-trigger `AutoLaunchedFlow` rejects it with `ELEMENT_SUBTYPE_NOT_SUPPORTED_FOR_PROCESSTYPE`. For `IndivRelatedRecord`, `object` + `recordTriggerType` are required — a blank `object` blocks activation.
|
|
425
|
-
|
|
426
|
-
## Common Patterns
|
|
427
|
-
|
|
428
|
-
- **Run only on meaningful field changes**: `recordTriggerType: Update` + filter conditions on fields of interest + `doesRequireRecordChangedToMeetCriteria: true`
|
|
429
|
-
- **Trigger on a prior-vs-new comparison** (e.g. "new Amount > 20% over old Amount", "Stage moved backward"): `recordTriggerType: Update`, `doesRequireRecordChangedToMeetCriteria` **omitted/`false`**, entry criteria left broad (or `filterFormula` referencing `$Record__Prior` with the flag off), then a **Decision** element in the body does the `$Record__Prior.Field` vs `$Record.Field` comparison. Setting the flag `true` here breaks the Start — see Validation Rules.
|
|
430
|
-
- **Process all open cases daily**: `triggerType: Scheduled`, `object: Case`, `frequency: Daily`, filter `Status != Closed`
|
|
431
|
-
- **Follow-up email 3 days after create**: `RecordAfterSave` + `Create` + scheduled path `offsetNumber: 3`, `offsetUnit: "Days"`, `timeSource: "RecordTriggerEvent"`
|
|
432
|
-
- **Platform event handler**: `triggerType: PlatformEvent`, `object` = event API name (e.g., `"Payment_Page_Change__e"`), access fields via `$Record`
|
|
433
|
-
- **Autolaunched from Apex with elevated access**: triggerType absent, `AutoLaunchedFlow`, `runInMode: SystemModeWithoutSharing` at flow root
|
|
434
|
-
- **Screen flow with elevated access**: `processType: Flow`, triggerType absent, `runInMode: SystemModeWithoutSharing` at flow root — bypasses record sharing for all users
|
|
435
|
-
- **Stamp a default field value before save**: `RecordBeforeSave` + Assignment to `$Record.<FieldName>` — no `recordUpdates` needed
|
|
436
|
-
|
|
437
|
-
## AI Agent Guidelines
|
|
438
|
-
|
|
439
|
-
### Pre-Generation Checks
|
|
440
|
-
|
|
441
|
-
1. Determine `processType` BEFORE writing Start — all Start fields depend on it.
|
|
442
|
-
2. For record-triggered flows: verify `object` is a valid SObject API name and `recordTriggerType` is set; use full enum strings (`RecordBeforeSave`, `RecordAfterSave`, `RecordBeforeDelete`) — short forms (`BeforeSave`, `AfterSave`, `BeforeDelete`) are invalid.
|
|
443
|
-
3. For Before Save (`RecordBeforeSave`): confirm the flow body has NO `recordCreates`, `recordUpdates`, `recordDeletes`, or `recordLookups` — these save fine but fail silently at runtime.
|
|
444
|
-
4. For Scheduled flows: include `filterLogic` (save error if missing) and emit the full `schedule` block (`frequency`, `startDate`, `startTime`) — omit the block entirely if `frequency` is unset.
|
|
445
|
-
5. For scheduled paths (AfterSave): verify `recordTriggerType` is `Update` or `CreateAndUpdate` + `doesRequireRecordChangedToMeetCriteria: true` + at least one filter.
|
|
446
|
-
6. `doesRequireRecordChangedToMeetCriteria` is only valid for `Update` or `CreateAndUpdate`; omit for `Create` and `Delete`. When the entry criteria compares against prior values (`$Record__Prior.*` in `filters`/`filterFormula` — e.g. "new Amount > old Amount"), do NOT set the flag `true`: it invalidates the Start with `FORMULA_EXPRESSION_INVALID`. Move the prior-vs-new comparison into a body Decision, or leave the flag `false`.
|
|
447
|
-
7. Use `filterFormula` OR `filters[]`, never both (save error).
|
|
448
|
-
8. For PlatformEvent: use `object` = event API name — do NOT emit `eventName` or `eventType` (they cause save failure: `Can not construct instance of com.sforce.soap.tooling.wsc.InvocableActionType`).
|
|
449
|
-
9. For Autolaunched (no trigger): omit `triggerType` entirely — NEVER emit `"triggerType": "None"`; it is a serialization error; place `runInMode` at `metadata.runInMode`, not on Start.
|
|
450
|
-
10. For a marketing flow (its `triggerType` is on the list in `shared/fault-paths/fault-paths.md` § Marketing Flows — Fault Paths Only When Asked): add no `faultConnector` or error-handling branch unless the user asks for error handling, and don't ask about it or offer it in the plan. A flow with no `triggerType` (item 9) is not a marketing flow.
|
|
451
|
-
|
|
452
|
-
## Aura/Server Functions
|
|
453
|
-
|
|
454
|
-
- `getTriggerTypeInfo` — configuration for a trigger type for dynamic Start element setup
|
|
455
|
-
- `getFlowEntries` — available flow types and supported trigger type options
|
|
456
|
-
- `getIsPauseSupported` — whether Wait/Pause element is available for current process type + trigger type
|
|
457
|
-
- `getIsReadModeEnabled` — whether read mode (flow insights) is available
|
|
458
|
-
- `getFrpQuickAccess` — flow-level quick access options for record-triggered flows (FRP feature)
|
|
459
|
-
|
|
460
|
-
## Metadata Shape
|
|
461
|
-
|
|
462
|
-
`metadata.start` is a **singleton object** (not an array). Include only fields relevant to the `triggerType`.
|
|
463
|
-
|
|
464
|
-
`label`, `name`, and `description` are NOT valid on the Start element.
|
|
465
|
-
|
|
466
|
-
### Common fields (all trigger types)
|
|
467
|
-
|
|
468
|
-
| Field | Type | Required | Notes |
|
|
469
|
-
|---|---|---|---|
|
|
470
|
-
| `triggerType` | string | conditional | Required for record-triggered, scheduled, and event flows. Must be absent (key not present) for autolaunched/screen flows — NEVER use `"None"` or `""`. Valid values: `"RecordBeforeSave"`, `"RecordAfterSave"`, `"RecordBeforeDelete"`, `"Scheduled"`, `"PlatformEvent"` |
|
|
471
|
-
| `connector` | Connector | yes | Edge from Start → first downstream element |
|
|
472
|
-
| `locationX` / `locationY` | number | yes | Canvas position |
|
|
473
|
-
|
|
474
|
-
### Record-triggered fields (`RecordBeforeSave`, `RecordAfterSave`, `RecordBeforeDelete`)
|
|
475
|
-
|
|
476
|
-
| Field | Type | Required | Notes |
|
|
477
|
-
|---|---|---|---|
|
|
478
|
-
| `object` | string | yes | sObject API name |
|
|
479
|
-
| `recordTriggerType` | string | yes | `Create`, `Update`, `CreateAndUpdate`, or `Delete` |
|
|
480
|
-
| `doesRequireRecordChangedToMeetCriteria` | boolean | conditional | Only for Update/CreateAndUpdate; forced `false` when filterLogic is no_conditions |
|
|
481
|
-
| `filters` | array | yes | RecordFilter objects; `[]` valid — omit `filterLogic` when empty |
|
|
482
|
-
| `filterLogic` | string | conditional | `"and"`, `"or"`, expression, or `"formula_evaluates_to_true"`; omitted when no conditions |
|
|
483
|
-
| `filterFormula` | string | conditional | Only when `filterLogic: "formula_evaluates_to_true"` |
|
|
484
|
-
| `scheduledPaths` | array | no | AfterSave only — see [Scheduled Paths](#scheduled-paths) |
|
|
485
|
-
| `isAsync` | boolean | conditional | `true` only for AfterSave flows running async after DB commit; omit for standard AfterSave; set by UI automatically — do not emit manually |
|
|
486
|
-
|
|
487
|
-
### Scheduled fields (`triggerType: Scheduled`)
|
|
488
|
-
|
|
489
|
-
| Field | Type | Required | Notes |
|
|
490
|
-
|---|---|---|---|
|
|
491
|
-
| `schedule` | object | yes | `{ frequency, startDate, startTime, endDate?, endTime? }` — omit entire block if `frequency` unset. On save, `startTime`/`endTime`/`startDate`/`endDate` must be wire strings (`"HH:mm:ss.SSS"` / `"YYYY-MM-DD"`), never the retrieve read-back form (`{timeInMillis}` / epoch millis) — see the Scheduled section above and `shared/anti-patterns.md` item 39. |
|
|
492
|
-
| `object` | string | conditional | sObject API name (record-batch scheduled flows) |
|
|
493
|
-
| `filters` / `filterLogic` | — | conditional | As record-triggered; `filterLogic` required for scheduled flows |
|
|
494
|
-
| `flowRunAsUser` | string | no | User impersonation; omit when not needed |
|
|
495
|
-
| `maxBatchSize` | number | no | Only when `isCustomBatchSizeSupported` is true |
|
|
496
|
-
|
|
497
|
-
`schedule.frequency` for `Scheduled` flows must be one of `Once`, `Daily`, or `Weekly`. Enhanced-scheduling fields (`frequencyNumber`, `daysOfWeekToRun`, `dayOfMonthToRun`) are Segment-only — see the Scheduled section above.
|
|
498
|
-
|
|
499
|
-
### PlatformEvent fields (`triggerType: PlatformEvent`)
|
|
500
|
-
|
|
501
|
-
| Field | Type | Required | Notes |
|
|
502
|
-
|---|---|---|---|
|
|
503
|
-
| `object` | string | yes | Event API name (e.g., `Payment_Page_Change__e`) — verify with `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/platform/event-types", queryParams: { eventType: "Runtime" })`; if its category is unknown, also query `Setup` and `ManagedSetup` explicitly |
|
|
504
|
-
| `inputs` | array | conditional | InputParameter objects bound to event-payload fields |
|
|
505
|
-
| `versionString` | string | no | Default `""` |
|
|
506
|
-
| `filters` / `filterLogic` | — | no | Filter the event payload |
|
|
507
|
-
|
|
508
|
-
**INVALID fields** (cause save failure): `eventName`, `eventType` — do NOT emit these for PlatformEvent flows. Use `object` instead.
|
|
509
|
-
|
|
510
|
-
### Capability fields (`triggerType: Capability`)
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
| Field | Type | Required | Notes |
|
|
514
|
-
|---|---|---|---|
|
|
515
|
-
| `capabilityTypes` | array | yes | `[{ capability: string, inputs: [{ name, dataType, isCollection?, sobjectType? }] }]` |
|
|
516
|
-
|
|
517
|
-
`capabilityTypes[i].inputs[j].dataType` is a data type value (`"String"`, `"Number"`, `"SObject"`, `"Apex"`, …) — **not** a value-field `*DataType`.
|
|
518
|
-
|
|
519
|
-
### RecordFilter Shape
|
|
520
|
-
|
|
521
|
-
See [[flow.shared.record-filter]] for the full field/operator/value shape, operator reference, value types, and filterLogic co-presence contract.
|
|
522
|
-
|
|
523
|
-
**Start-specific**: **record-triggered** `start` elements support `filterFormula` as an alternative to `filters[]`; `filterFormula` / `filterLogic: "formula_evaluates_to_true"` is **INVALID on `triggerType: Scheduled`** (yields `FORMULA_EXPRESSION_INVALID` + `InvalidDraft` — see the `filterFormula` vs `filters` note below). Both record-triggered and Scheduled Start elements reject `elementReference` in `filters[]`. See the restriction callout in [[flow.shared.record-filter]] for details, the Scheduled fallback (literal `filters[]` + body Decision), and workarounds.
|
|
524
|
-
|
|
525
|
-
See [[flow.shared.record-filter]] §filterLogic Co-Presence Contract for the full rule: omit `filterLogic` when `filters: []`, never emit the literal string `"no_conditions"`.
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
### `filterFormula` vs `filters` — mutually exclusive
|
|
529
|
-
|
|
530
|
-
- **Standard**: `filters[]` + `filterLogic` (`"and"`, `"or"`, or expression)
|
|
531
|
-
- **Formula**: `filterLogic: "formula_evaluates_to_true"` + `filterFormula: "<expression>"` — no_conditions omission rule does NOT apply in formula mode. **Formula mode is record-triggered-only — it is INVALID on `triggerType: Scheduled`** (Scheduled supports literal `filters[]` only; a `filterFormula` there yields `FORMULA_EXPRESSION_INVALID` + `InvalidDraft`).
|
|
532
|
-
|
|
533
|
-
### filterFormula Reference Syntax
|
|
534
|
-
|
|
535
|
-
`filterFormula` is a formula expression — use `{!reference}` syntax for system variables and flow resources, same as Formula resources and inline formulas. See `examples/filterFormula-dateRange.json` for a worked example with date arithmetic, and [[flow.shared.formula-expression]] §3 for full merge-field syntax rules.
|
|
536
|
-
|
|
537
|
-
### RecordBeforeSave — minimal example
|
|
538
|
-
|
|
539
|
-
See `examples/beforeSave.json`. `filterLogic` omitted — no entry conditions (no_conditions omission rule).
|