@salesforce/afv-skills 1.63.0 → 1.65.0
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/agentforce-gpt-email-generation-configure/SKILL.md +312 -0
- package/skills/agentforce-offline-experimentation-run/SKILL.md +253 -0
- package/skills/agentforce-offline-experimentation-run/scripts/build_report.py +796 -0
- package/skills/agentforce-offline-experimentation-run/scripts/resolve-token.sh +111 -0
- package/skills/agentforce-offline-experimentation-run/scripts/sfap_replay.py +1053 -0
- package/skills/agentforce-wizard-ui-forecasting-analytics-components-configure/SKILL.md +64 -0
- package/skills/agentforce-wizard-ui-sales-einstein-components-configure/SKILL.md +46 -0
- package/skills/automation-company-profile-info-query/SKILL.md +51 -0
- package/skills/automation-digital-wallet-configure/SKILL.md +689 -0
- package/skills/automation-flow-coordinate/SKILL.md +95 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/action-call.md +1569 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/conversation-messaging.md +96 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-sms-message.json +23 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/examples/send-to-journey-no-fields.json +31 -0
- package/skills/automation-flow-coordinate/references/elements/action-call/send-to-journey.md +179 -0
- package/skills/automation-flow-coordinate/references/elements/exit-rule/examples/event-email-link-click.json +13 -0
- package/skills/automation-flow-coordinate/references/elements/exit-rule/exit-rule.md +83 -0
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/examples/forward-to-bot-or-agent.json +69 -0
- package/skills/automation-flow-coordinate/references/elements/forward-to-bot-or-agent/forward-to-bot-or-agent.md +274 -0
- package/skills/automation-flow-coordinate/references/elements/start/audience-common.md +192 -0
- package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md +130 -0
- package/skills/automation-flow-coordinate/references/elements/start/data-cloud-data-change-triggered.md +92 -0
- package/skills/automation-flow-coordinate/references/elements/start/form-submission-triggered.md +88 -0
- package/skills/automation-flow-coordinate/references/elements/start/segment-triggered.md +152 -0
- package/skills/automation-flow-coordinate/references/elements/start/start.md +539 -0
- package/skills/automation-flow-coordinate/references/elements/subflow/subflow.md +152 -0
- package/skills/automation-flow-coordinate/references/elements/wait/wait.md +497 -0
- package/skills/automation-flow-coordinate/references/recipes/author/author.md +868 -0
- package/skills/automation-flow-coordinate/references/recipes/summarize/element-generic.md +300 -0
- package/skills/automation-flow-coordinate/references/recipes/summarize/reference-resolution.md +292 -0
- package/skills/automation-flow-coordinate/references/recipes/summarize/summarize.md +323 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/examples/debug-output-template.md +109 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/shape.md +219 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/shared-stages/intent-analyzer.md +180 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/debug.md +175 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/promote.md +255 -0
- package/skills/automation-flow-coordinate/references/recipes/testing/workflows/save-debug.md +212 -0
- package/skills/automation-flow-coordinate/references/resources/variable/variable.md +171 -0
- package/skills/automation-flow-coordinate/references/shared/anti-patterns.md +786 -0
- package/skills/automation-flow-coordinate/references/shared/end/end.md +267 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/README.md +69 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/predictions.jsonl +80 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/eval/prompts.jsonl +116 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/flow-type-resolver.md +321 -0
- package/skills/automation-flow-coordinate/references/shared/flow-type-resolver/taxonomy.json +320 -0
- package/skills/automation-flow-coordinate/references/shared/server-functions.md +597 -0
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +21 -11
- package/skills/automation-sandbox-post-copy-config-generate/assets/config_template.json +10 -0
- package/skills/automation-sandbox-post-copy-config-generate/assets/json_schema.json +33 -1
- package/skills/automation-sandbox-post-copy-config-generate/references/configuration_catalog.md +44 -1
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +132 -124
- package/skills/automation-sandbox-post-copy-configure/references/flow_activation_path.md +151 -0
- package/skills/automation-sandbox-post-copy-configure/references/scheduled_apex_path.md +55 -9
- package/skills/automotive-cloud-appraisal-management-settings-configure/SKILL.md +69 -0
- package/skills/automotive-cloud-dealer-essentials-configure/SKILL.md +78 -0
- package/skills/automotive-cloud-ground-agent-data-pipelines-configure/SKILL.md +373 -0
- package/skills/automotive-cloud-ground-mfg-agent-data-pipelines-configure/SKILL.md +273 -0
- package/skills/automotive-cloud-mfg-agent-data-pipelines-configure/SKILL.md +259 -0
- package/skills/automotive-cloud-mfg-sales-concierge-agent-create/SKILL.md +369 -0
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-configure/SKILL.md +542 -0
- package/skills/automotive-cloud-mfg-sales-concierge-foundation-coordinate/SKILL.md +159 -0
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-agent-create/SKILL.md +349 -0
- package/skills/automotive-cloud-mfg-sales-concierge-orchestrator-configure/SKILL.md +505 -0
- package/skills/automotive-cloud-sales-concierge-agent-create/SKILL.md +380 -0
- package/skills/automotive-cloud-sales-concierge-foundation-configure/SKILL.md +567 -0
- package/skills/automotive-cloud-sales-concierge-foundation-coordinate/SKILL.md +159 -0
- package/skills/automotive-cloud-sales-concierge-orchestrator-agent-create/SKILL.md +360 -0
- package/skills/automotive-cloud-sales-concierge-orchestrator-configure/SKILL.md +539 -0
- package/skills/automotive-cloud-sales-concierge-search-grounding-configure/SKILL.md +358 -0
- package/skills/commerce-b2b-merchant-quote-configure/SKILL.md +602 -0
- package/skills/commerce-b2b-store-configure/SKILL.md +251 -0
- package/skills/commerce-credit-memo-create/SKILL.md +139 -0
- package/skills/commerce-delivery-business-hours-configure/SKILL.md +277 -0
- package/skills/commerce-delivery-estimation-apply/SKILL.md +155 -0
- package/skills/commerce-delivery-estimation-configure/SKILL.md +377 -0
- package/skills/commerce-delivery-routing-specs-integrate/SKILL.md +174 -0
- package/skills/commerce-estimate-bopis-query/SKILL.md +279 -0
- package/skills/commerce-estimate-delivery-date-query/SKILL.md +349 -0
- package/skills/commerce-fees-apply/SKILL.md +227 -0
- package/skills/commerce-fulfillment-routing-analyze/SKILL.md +200 -0
- package/skills/commerce-guest-buyer-create/SKILL.md +173 -0
- package/skills/commerce-location-bopis-configure/SKILL.md +378 -0
- package/skills/commerce-location-business-hours-configure/SKILL.md +235 -0
- package/skills/commerce-location-delivery-processing-time-configure/SKILL.md +309 -0
- package/skills/commerce-location-graph-integrate/SKILL.md +131 -0
- package/skills/commerce-location-shipping-carrier-method-configure/SKILL.md +755 -0
- package/skills/commerce-location-temporary-operating-hours-configure/SKILL.md +331 -0
- package/skills/commerce-merchant-buyer-groups-configure/SKILL.md +579 -0
- package/skills/commerce-merchant-buyer-user-onboarding-create/SKILL.md +626 -0
- package/skills/commerce-merchant-catalog-configure/SKILL.md +614 -0
- package/skills/commerce-merchant-extension-provider-configure/SKILL.md +368 -0
- package/skills/commerce-merchant-insights-account-health-churn-analyze/SKILL.md +118 -0
- package/skills/commerce-merchant-insights-inventory-returns-analyze/SKILL.md +65 -0
- package/skills/commerce-merchant-insights-order-shopper-get/SKILL.md +90 -0
- package/skills/commerce-merchant-insights-product-performance-analyze/SKILL.md +72 -0
- package/skills/commerce-merchant-insights-query/SKILL.md +279 -0
- package/skills/commerce-merchant-storefront-guest-access-configure/SKILL.md +656 -0
- package/skills/commerce-order-summary-change-apply/SKILL.md +375 -0
- package/skills/commerce-product-details-get/SKILL.md +363 -0
- package/skills/commerce-product-search/SKILL.md +563 -0
- package/skills/commerce-react-storefront-create/SKILL.md +350 -0
- package/skills/commerce-return-order-summary-create/SKILL.md +513 -0
- package/skills/commerce-search-relevance-analyze/SKILL.md +757 -0
- package/skills/commerce-temporary-processing-time-override-create/SKILL.md +274 -0
- package/skills/communications-initial-setup-configure/SKILL.md +630 -0
- package/skills/communications-multisite-configure/SKILL.md +571 -0
- package/skills/communications-revenue-cloud-settings-configure/SKILL.md +74 -0
- package/skills/communications-smb-fiber-catalog-create/SKILL.md +413 -0
- package/skills/communications-tmf-integrate/SKILL.md +1368 -0
- package/skills/consumer-goods-promotion-bo-api-deploy/SKILL.md +54 -107
- package/skills/consumer-goods-promotion-bo-api-deploy/assets/set-comment-value/payloads/copy.json +1 -1
- package/skills/consumer-goods-promotion-bo-api-deploy/references/conventions-and-payload-rules.md +82 -5
- package/skills/consumer-goods-promotion-bo-api-deploy/references/generate-and-wire.md +35 -2
- package/skills/consumer-goods-promotion-bo-api-deploy/references/preflight-and-seed-queries.md +149 -0
- package/skills/consumer-goods-promotion-bo-api-deploy/references/smoke-and-verify.md +17 -1
- package/skills/consumer-goods-visit-activity-act4-questions-assign/SKILL.md +448 -0
- package/skills/consumer-goods-visit-activity-act5-standard-create/SKILL.md +269 -0
- package/skills/consumer-goods-visit-activity-act6-assortment-configure/SKILL.md +271 -0
- package/skills/consumer-goods-visit-activity-act7-account-scoping-create/SKILL.md +382 -0
- package/skills/consumer-goods-visit-activity-act8-plan-attach-create/SKILL.md +373 -0
- package/skills/consumer-goods-visit-activity-act9-proof-validate/SKILL.md +389 -0
- package/skills/consumer-goods-visit-and-activity-act1-specification-create/SKILL.md +338 -0
- package/skills/consumer-goods-visit-and-activity-act2-template-create/SKILL.md +547 -0
- package/skills/consumer-goods-visit-and-activity-act3-definition-create/SKILL.md +346 -0
- package/skills/consumer-goods-visit-and-activity-configure/SKILL.md +1110 -0
- package/skills/crm-analytics-adoption-insights-configure/SKILL.md +224 -0
- package/skills/crm-analytics-custom-report-type-lightning-configure/SKILL.md +418 -0
- package/skills/crm-analytics-dashboards-configure/SKILL.md +731 -0
- package/skills/crm-analytics-operational-analytics-metadata-bridge-migrate/SKILL.md +233 -0
- package/skills/crm-analytics-report-notifications-ui-configure/SKILL.md +184 -0
- package/skills/crm-analytics-sharing-inheritance-coverage-analyze/SKILL.md +167 -0
- package/skills/crm-analytics-sonic-getting-started-configure/SKILL.md +55 -0
- package/skills/crm-analytics-tableau-next-app-deploy/SKILL.md +1350 -0
- package/skills/crm-analytics-tableau-next-c360-basemodel-validate/SKILL.md +1862 -0
- package/skills/crm-analytics-tableau-next-datacloud-validate/SKILL.md +83 -0
- package/skills/crm-analytics-tableau-next-provisioning-validate/SKILL.md +81 -0
- package/skills/data360-activation-create/SKILL.md +104 -0
- package/skills/data360-activation-external-platform-get/SKILL.md +49 -0
- package/skills/data360-activation-target-create/SKILL.md +93 -0
- package/skills/data360-activation-v2-create/SKILL.md +456 -0
- package/skills/data360-audience-dmo-get/SKILL.md +38 -0
- package/skills/data360-calculated-affinity-create/SKILL.md +82 -0
- package/skills/data360-calculated-insight-create/SKILL.md +148 -0
- package/skills/data360-catalog-metadata-create/SKILL.md +183 -0
- package/skills/data360-code-extension-create/SKILL.md +115 -0
- package/skills/data360-communication-capping-create/SKILL.md +227 -0
- package/skills/data360-connection-create/SKILL.md +491 -0
- package/skills/data360-content-lens-create/SKILL.md +181 -0
- package/skills/data360-data-action-create/SKILL.md +126 -0
- package/skills/data360-data-action-target-create/SKILL.md +181 -0
- package/skills/data360-data-clean-room-create/SKILL.md +238 -0
- package/skills/data360-data-governance-create/SKILL.md +746 -0
- package/skills/data360-data-graph-create/SKILL.md +82 -0
- package/skills/data360-data-harmonized-model-object-reference-create/SKILL.md +38 -0
- package/skills/data360-data-lake-object-create/SKILL.md +207 -0
- package/skills/data360-data-model-object-catalog-get/SKILL.md +49 -0
- package/skills/data360-data-model-object-create/SKILL.md +128 -0
- package/skills/data360-data-model-object-mapping-create/SKILL.md +106 -0
- package/skills/data360-data-space-create/SKILL.md +161 -0
- package/skills/data360-data-streams-create/SKILL.md +324 -0
- package/skills/data360-engagement-signal-get/SKILL.md +38 -0
- package/skills/data360-experiment-create/SKILL.md +82 -0
- package/skills/data360-goal-based-campaign-create/SKILL.md +192 -0
- package/skills/data360-harmonization-process-history-get/SKILL.md +38 -0
- package/skills/data360-harmonized-unstructured-dmo-create/SKILL.md +84 -0
- package/skills/data360-identity-resolution-create/SKILL.md +115 -0
- package/skills/data360-intelligent-document-processing-create/SKILL.md +148 -0
- package/skills/data360-knowledge-graph-construction-create/SKILL.md +93 -0
- package/skills/data360-knowledge-graph-create/SKILL.md +216 -0
- package/skills/data360-knowledge-space-mcp-configure/SKILL.md +475 -0
- package/skills/data360-machine-learning-mcp-configure/SKILL.md +697 -0
- package/skills/data360-multi-org-mcp-configure/SKILL.md +117 -0
- package/skills/data360-secondary-index-mcp-configure/SKILL.md +126 -0
- package/skills/data360-segment-mcp-configure/SKILL.md +159 -0
- package/skills/data360-semantic-calculated-dimension-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-calculated-measurement-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-data-object-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-dimension-mcp-configure/SKILL.md +38 -0
- package/skills/data360-semantic-engine-mcp-configure/SKILL.md +62 -0
- package/skills/data360-semantic-measurement-mcp-configure/SKILL.md +38 -0
- package/skills/data360-semantic-metric-mcp-configure/SKILL.md +93 -0
- package/skills/data360-semantic-model-mcp-configure/SKILL.md +115 -0
- package/skills/data360-standard-mapping-mcp-configure/SKILL.md +38 -0
- package/skills/data360-tenant-lifecycle-mcp-configure/SKILL.md +73 -0
- package/skills/dx-devops-conflict-resolve/SKILL.md +1 -5
- package/skills/dx-devops-pipeline-manage/SKILL.md +1 -5
- package/skills/dx-devops-project-manage/SKILL.md +1 -5
- package/skills/dx-devops-promote/SKILL.md +1 -5
- package/skills/dx-devops-request-status/SKILL.md +1 -5
- package/skills/dx-lifecycle-center/SKILL.md +120 -0
- package/skills/dx-lifecycle-center/examples/workflows.md +175 -0
- package/skills/dx-lifecycle-center/references/connect-api.md +123 -0
- package/skills/dx-lifecycle-center/references/connect-org.md +184 -0
- package/skills/dx-lifecycle-center/references/deploy.md +153 -0
- package/skills/dx-lifecycle-center/references/error-handling.md +21 -0
- package/skills/dx-lifecycle-center/references/hub-org.md +37 -0
- package/skills/dx-lifecycle-center/references/list-orgs.md +99 -0
- package/skills/dx-lifecycle-center/references/request-body.md +75 -0
- package/skills/dx-lifecycle-center/references/troubleshooting.md +31 -0
- package/skills/dx-lifecycle-center/scripts/poll-deploy-status.sh +200 -0
- package/skills/dx-lifecycle-center/scripts/resolve-environment.sh +120 -0
- package/skills/dx-org-devhub-configure/SKILL.md +1 -3
- package/skills/dx-org-shape-manage/SKILL.md +1 -5
- package/skills/dx-org-snapshot-manage/SKILL.md +1 -3
- package/skills/education-cloud-academic-calendar-generate/SKILL.md +1 -3
- package/skills/education-cloud-course-catalog-migrate/SKILL.md +1 -3
- package/skills/education-cloud-domain-configure/SKILL.md +1 -3
- package/skills/education-cloud-multi-campus-configure/SKILL.md +1 -3
- package/skills/education-cloud-student-recruitment-agent-configure/SKILL.md +1 -5
- package/skills/experience-afv-query/SKILL.md +234 -0
- package/skills/experience-agentforce-vibes-in-react-configure/SKILL.md +63 -0
- package/skills/experience-apex-components-configure/SKILL.md +69 -0
- package/skills/experience-apex-pages-configure/SKILL.md +107 -0
- package/skills/experience-app-home-configure/SKILL.md +76 -0
- package/skills/experience-aura-lightning-out-access-configure/SKILL.md +58 -0
- package/skills/experience-briefcase-configure/SKILL.md +287 -0
- package/skills/experience-community-flexi-page-list-create/SKILL.md +74 -0
- package/skills/experience-community-template-definition-list-query/SKILL.md +48 -0
- package/skills/experience-community-theme-definition-list-query/SKILL.md +38 -0
- package/skills/experience-content-assets-configure/SKILL.md +86 -0
- package/skills/experience-custom-domain-create/SKILL.md +727 -0
- package/skills/experience-defer-rendering-workspace-page-setup-configure/SKILL.md +41 -0
- package/skills/experience-field-service-app-builder-configure/SKILL.md +187 -0
- package/skills/experience-flow-category-configure/SKILL.md +117 -0
- package/skills/experience-formula-configure/SKILL.md +358 -0
- package/skills/experience-global-actions-configure/SKILL.md +69 -0
- package/skills/experience-global-publisher-layouts-configure/SKILL.md +79 -0
- package/skills/experience-instrumentation-configure/SKILL.md +64 -0
- package/skills/experience-lex-engagement-configure/SKILL.md +50 -0
- package/skills/experience-lightning-bolt-open/SKILL.md +12 -0
- package/skills/experience-lightning-out-configure/SKILL.md +129 -0
- package/skills/experience-lightning-preview-configure/SKILL.md +67 -0
- package/skills/experience-lightning-types-query/SKILL.md +98 -0
- package/skills/experience-malware-scan-configure/SKILL.md +71 -0
- package/skills/experience-my-salesforce-configure/SKILL.md +126 -0
- package/skills/experience-navigation-menus-configure/SKILL.md +235 -0
- package/skills/experience-notification-types-configure/SKILL.md +206 -0
- package/skills/experience-notifications-configure/SKILL.md +75 -0
- package/skills/experience-record-discovery-query/SKILL.md +227 -0
- package/skills/experience-regenerate-previews-open/SKILL.md +94 -0
- package/skills/experience-sales-cloud-mab-configure/SKILL.md +254 -0
- package/skills/experience-schema-builder-open/SKILL.md +38 -0
- package/skills/experience-simple-record-home-configure/SKILL.md +110 -0
- package/skills/experience-static-resources-configure/SKILL.md +74 -0
- package/skills/experience-ui-bundle-2gp-deploy/SKILL.md +1 -3
- package/skills/experience-ui-bundle-features-generate/SKILL.md +1 -5
- package/skills/experience-ui-bundle-mfa-configure/SKILL.md +1 -3
- package/skills/field-service-data-capture-form-deployer-configure/SKILL.md +23 -2
- package/skills/field-service-data-capture-form-designer-configure/SKILL.md +13 -3
- package/skills/field-service-data-capture-migrate/SKILL.md +1 -3
- package/skills/field-service-mobile-branding-configure/SKILL.md +17 -3
- package/skills/field-service-objective-designer-configure/SKILL.md +72 -379
- package/skills/field-service-prework-brief-deployer-configure/SKILL.md +10 -537
- package/skills/field-service-scheduling-policy-designer-query/SKILL.md +65 -1093
- package/skills/{field-service-setup-orchestrator-get → field-service-setup-coordinate}/SKILL.md +18 -3
- package/skills/field-service-sobject-create-configure/SKILL.md +13 -213
- package/skills/field-service-voice-to-form-configure/SKILL.md +40 -11
- package/skills/field-service-work-plan-configure/SKILL.md +253 -0
- package/skills/field-service-work-rule-designer-configure/SKILL.md +121 -95
- package/skills/fsc-actionable-segmentation-settings-configure/SKILL.md +180 -0
- package/skills/fsc-digital-origination-bre-decision-matrix-foundation-create/SKILL.md +196 -0
- package/skills/fsc-digital-origination-bre-disclosures-consent-configure/SKILL.md +106 -0
- package/skills/fsc-digital-origination-bre-document-upload-configure/SKILL.md +96 -0
- package/skills/fsc-digital-origination-bre-permissions-assign/SKILL.md +111 -0
- package/skills/fsc-digital-origination-bre-setup-coordinate/SKILL.md +250 -0
- package/skills/fsc-digital-origination-bre-stp-eligibility-configure/SKILL.md +122 -0
- package/skills/fsc-digital-origination-coordinate/SKILL.md +653 -0
- package/skills/fsc-digital-origination-demo-run/SKILL.md +225 -0
- package/skills/fsc-digital-origination-execution-guardrails-validate/SKILL.md +112 -0
- package/skills/fsc-digital-origination-initial-setup-configure/SKILL.md +396 -0
- package/skills/fsc-digital-origination-pricing-setup-coordinate/SKILL.md +336 -0
- package/skills/fsc-digital-origination-pricing-setup-data-foundation-create/SKILL.md +208 -0
- package/skills/fsc-digital-origination-pricing-setup-procedure-create/SKILL.md +375 -0
- package/skills/fsc-digital-origination-product-setup-act1-permissions-assign/SKILL.md +83 -0
- package/skills/fsc-digital-origination-product-setup-coordinate/SKILL.md +248 -0
- package/skills/fsc-digital-origination-sample-data-create/SKILL.md +206 -0
- package/skills/fsc-document-checklist-settings-configure/SKILL.md +57 -0
- package/skills/fsc-flexible-hierarchy-configure/SKILL.md +148 -0
- package/skills/fsc-flexible-hierarchy-foundation-configure/SKILL.md +1430 -0
- package/skills/fsc-flexible-hierarchy-graph-config-create/SKILL.md +471 -0
- package/skills/fsc-flexible-hierarchy-rule-based-graph-deploy/SKILL.md +429 -0
- package/skills/fsc-pricing-product-configurator-configure/SKILL.md +150 -0
- package/skills/fsc-pricing-salesforce-omnistudio-switch/SKILL.md +123 -0
- package/skills/fsc-product-act2-catalog-categories-create/SKILL.md +82 -0
- package/skills/fsc-product-act3-attributes-create/SKILL.md +249 -0
- package/skills/fsc-product-act4-classification-assignment-create/SKILL.md +196 -0
- package/skills/fsc-product-act5-considerations-get/SKILL.md +44 -0
- package/skills/fsc-stage-management-apex-flow-deploy/SKILL.md +384 -0
- package/skills/fsc-stage-management-compliant-data-sharing-configure/SKILL.md +144 -0
- package/skills/fsc-stage-management-decision-matrices-create/SKILL.md +107 -0
- package/skills/fsc-stage-management-definition-assignments-create/SKILL.md +189 -0
- package/skills/fsc-stage-management-definition-create/SKILL.md +108 -0
- package/skills/fsc-stage-management-permissions-assign/SKILL.md +143 -0
- package/skills/fsc-stage-management-transitions-configure/SKILL.md +139 -0
- package/skills/health-cloud-appt-booking-config-configure/SKILL.md +135 -0
- package/skills/health-cloud-appt-booking-url-config-configure/SKILL.md +134 -0
- package/skills/health-cloud-care-provider-affl-role-config-configure/SKILL.md +136 -0
- package/skills/health-cloud-care-provider-search-config-configure/SKILL.md +134 -0
- package/skills/health-cloud-care-requests-create/SKILL.md +178 -0
- package/skills/health-cloud-initial-configure/SKILL.md +511 -0
- package/skills/health-cloud-patient-appointment-scheduling-configure/SKILL.md +1374 -0
- package/skills/health-cloud-provider-search-settings-configure/SKILL.md +924 -0
- package/skills/health-cloud-referral-management-coordinate/SKILL.md +513 -0
- package/skills/health-cloud-timeline-configure/SKILL.md +622 -0
- package/skills/health-cloud-virtual-visit-config-configure/SKILL.md +135 -0
- package/skills/industries-account-score-settings-query/SKILL.md +78 -0
- package/skills/industries-actionable-list-data-sources-dmo-configure/SKILL.md +177 -0
- package/skills/industries-ad-product-availability-search/SKILL.md +399 -0
- package/skills/industries-advanced-account-forecast-settings-configure/SKILL.md +628 -0
- package/skills/industries-advanced-therapy-management-settings-configure/SKILL.md +73 -0
- package/skills/industries-atm-settings-starter-configure/SKILL.md +76 -0
- package/skills/industries-batch-document-ai-configure/SKILL.md +196 -0
- package/skills/industries-behavioral-health-app-settings-configure/SKILL.md +71 -0
- package/skills/industries-branch-management-settings-configure/SKILL.md +89 -0
- package/skills/industries-bre-decision-table-access-configure/SKILL.md +367 -0
- package/skills/industries-brokerage-settings-configure/SKILL.md +41 -0
- package/skills/industries-calendar-sync-settings-configure/SKILL.md +89 -0
- package/skills/industries-care-request-settings-configure/SKILL.md +218 -0
- package/skills/industries-case-management-intelligence-settings-configure/SKILL.md +54 -0
- package/skills/industries-catalog-process-attributes-products-configure/SKILL.md +380 -0
- package/skills/industries-catalog-process-fulfillment-configure/SKILL.md +216 -0
- package/skills/industries-catalog-process-intake-configure/SKILL.md +219 -0
- package/skills/industries-catalog-process-knowledge-configure/SKILL.md +153 -0
- package/skills/industries-catalog-process-preprocessor-configure/SKILL.md +168 -0
- package/skills/industries-cds-general-settings-configure/SKILL.md +69 -0
- package/skills/industries-claim-financial-settings-configure/SKILL.md +169 -0
- package/skills/industries-clinical-data-model-settings-configure/SKILL.md +136 -0
- package/skills/industries-clinical-data-model-settings-starter-configure/SKILL.md +105 -0
- package/skills/industries-collection-plan-settings-configure/SKILL.md +132 -0
- package/skills/industries-comms-service-console-settings-configure/SKILL.md +159 -0
- package/skills/industries-compliance-configure/SKILL.md +102 -0
- package/skills/industries-compliance-document-extraction-setup-configure/SKILL.md +76 -0
- package/skills/industries-contact-center-app-layout-configure/SKILL.md +88 -0
- package/skills/industries-contact-center-components-configure/SKILL.md +96 -0
- package/skills/industries-contact-center-path-knowledge-configure/SKILL.md +95 -0
- package/skills/industries-contact-center-user-access-assign/SKILL.md +96 -0
- package/skills/industries-course-waitlist-config-configure/SKILL.md +162 -0
- package/skills/industries-crisis-center-settings-configure/SKILL.md +84 -0
- package/skills/industries-custom-object-settings-configure/SKILL.md +94 -0
- package/skills/industries-data-cloud-integration-configure/SKILL.md +88 -0
- package/skills/industries-data-space-feature-mappings-configure/SKILL.md +245 -0
- package/skills/industries-decision-matrix-builder-configure/SKILL.md +78 -0
- package/skills/industries-decision-table-hbase-configure/SKILL.md +87 -0
- package/skills/industries-decision-table-version-configure/SKILL.md +74 -0
- package/skills/industries-decision-tables-builder-configure/SKILL.md +253 -0
- package/skills/industries-decision-tables-configure/SKILL.md +439 -0
- package/skills/industries-energy-utilities-configure/SKILL.md +251 -0
- package/skills/industries-eu-cloud-multisite-configure/SKILL.md +1008 -0
- package/skills/industries-eu-new-connections-configure/SKILL.md +30 -0
- package/skills/industries-explainability-msg-template-configure/SKILL.md +135 -0
- package/skills/industries-expression-set-message-token-configure/SKILL.md +135 -0
- package/skills/industries-field-service-settings-configure/SKILL.md +82 -0
- package/skills/industries-form-framework-settings-configure/SKILL.md +30 -0
- package/skills/industries-fsc-ai-settings-configure/SKILL.md +57 -0
- package/skills/industries-fsc-association-engine-settings-configure/SKILL.md +172 -0
- package/skills/industries-fsc-b2b-settings-configure/SKILL.md +61 -0
- package/skills/industries-fsc-insurance-settings-configure/SKILL.md +58 -0
- package/skills/industries-fsc-visa-fulfillment-setup-configure/SKILL.md +103 -0
- package/skills/industries-fsc-wealth-agent-settings-configure/SKILL.md +117 -0
- package/skills/industries-fsc-wealth-settings-configure/SKILL.md +99 -0
- package/skills/industries-fundraising-gift-entry-settings-configure/SKILL.md +120 -0
- package/skills/industries-fundraising-rfm-configure/SKILL.md +128 -0
- package/skills/industries-fundraising-settings-configure/SKILL.md +145 -0
- package/skills/industries-fundraising-source-code-gen-configure/SKILL.md +299 -0
- package/skills/industries-google-maps-api-key-settings-configure/SKILL.md +87 -0
- package/skills/industries-grantmaking-intelligence-settings-open/SKILL.md +58 -0
- package/skills/industries-hc-score-category-settings-configure/SKILL.md +167 -0
- package/skills/industries-health-engagement-settings-configure/SKILL.md +218 -0
- package/skills/industries-home-health-agentforce-setup-configure/SKILL.md +131 -0
- package/skills/industries-home-health-bundling-policy-create/SKILL.md +50 -0
- package/skills/industries-home-health-entity-labels-configure/SKILL.md +29 -0
- package/skills/industries-home-health-fsl-package-deploy/SKILL.md +71 -0
- package/skills/industries-home-health-fsl-settings-validate/SKILL.md +27 -0
- package/skills/industries-home-health-guided-setup-care-and-skill-get/SKILL.md +80 -0
- package/skills/industries-home-health-guided-setup-configure/SKILL.md +836 -0
- package/skills/industries-home-health-guided-setup-enable-org-fsl-get/SKILL.md +55 -0
- package/skills/industries-home-health-guided-setup-get-org-ready-get/SKILL.md +61 -0
- package/skills/industries-home-health-licenses-assign/SKILL.md +27 -0
- package/skills/industries-home-health-operating-hours-create/SKILL.md +40 -0
- package/skills/industries-home-health-scheduling-policy-create/SKILL.md +41 -0
- package/skills/industries-home-health-service-objective-create/SKILL.md +22 -0
- package/skills/industries-home-health-skills-create/SKILL.md +31 -0
- package/skills/industries-home-health-users-create/SKILL.md +29 -0
- package/skills/industries-icm-act3-toggles-configure/SKILL.md +198 -0
- package/skills/industries-icm-act5-genai-suggested-assessments-configure/SKILL.md +361 -0
- package/skills/industries-icm-act6-mcg-integration-configure/SKILL.md +550 -0
- package/skills/industries-integrated-care-management-configure/SKILL.md +168 -0
- package/skills/industries-object-enablement-configure/SKILL.md +86 -0
- package/skills/industries-tpm-system-processing-service-configure/SKILL.md +64 -0
- package/skills/insurance-brokerage-agency-billing-configure/SKILL.md +1 -3
- package/skills/integration-apex-settings-configure/SKILL.md +61 -0
- package/skills/marketing-e360-email-archiving-configure/SKILL.md +73 -0
- package/skills/marketing-message-test/SKILL.md +1 -3
- package/skills/nonprofit-fundraising-configure/SKILL.md +240 -0
- package/skills/nonprofit-fundraising-configure/references/gotchas.md +26 -0
- package/skills/nonprofit-fundraising-configure/references/mcp-invocation.md +678 -0
- package/skills/nonprofit-fundraising-configure/references/permission-targeting.md +35 -0
- package/skills/nonprofit-volunteer-management-model-get/SKILL.md +166 -0
- package/skills/nonprofit-volunteer-management-model-get/references/entities.md +315 -0
- package/skills/nonprofit-volunteer-management-model-get/references/relationships.md +175 -0
- package/skills/nonprofit-volunteer-management-model-get/references/themes.md +143 -0
- package/skills/nonprofit-volunteer-management-records-create/SKILL.md +121 -0
- package/skills/nonprofit-volunteer-management-records-create/references/field-guide.md +284 -0
- package/skills/nonprofit-volunteer-management-records-create/references/mcp-invocation.md +248 -0
- package/skills/nonprofit-volunteer-management-records-create/references/review-format.md +140 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/expand-series.py +632 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/render-review-table.py +419 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/tests/test_expand_series.py +690 -0
- package/skills/nonprofit-volunteer-management-records-create/scripts/tests/test_render_review_table.py +421 -0
- package/skills/nonprofit-volunteer-management-structure-generate/SKILL.md +119 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/configuration-decisions.md +159 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/discovery-interview.md +137 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/edge-cases.md +48 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/mcp-invocation.md +75 -0
- package/skills/nonprofit-volunteer-management-structure-generate/references/plan-output.md +141 -0
- package/skills/platform-custom-field-generate/SKILL.md +1 -0
- package/skills/platform-custom-field-generate/references/advanced-picklists.md +5 -5
- package/skills/platform-custom-metadata-type-generate/SKILL.md +3 -0
- package/skills/platform-custom-object-generate/SKILL.md +4 -0
- package/skills/platform-custom-permissions-configure/SKILL.md +687 -0
- package/skills/platform-custom-setting-generate/SKILL.md +3 -0
- package/skills/platform-datamask-run/SKILL.md +1 -5
- package/skills/platform-label-workbench-import-create/SKILL.md +67 -0
- package/skills/platform-permission-set-generate/SKILL.md +3 -0
- package/skills/platform-privacy-agent-settings-configure/SKILL.md +752 -0
- package/skills/platform-salesforce-connect-adapter-generate/SKILL.md +1 -3
- package/skills/platform-sandbox-configure/SKILL.md +1 -3
- package/skills/platform-value-set-generate/SKILL.md +3 -0
- package/skills/sales-call-scoring-configure/SKILL.md +1 -5
- package/skills/service-agentforce-channel-configure/SKILL.md +1 -3
- package/skills/service-agentforce-human-escalation-configure/SKILL.md +1 -3
- package/skills/service-catalog-template-coordinate/SKILL.md +1 -3
- package/skills/service-concierge-portal-generate/SKILL.md +1 -3
- package/skills/service-email-to-case-configure/SKILL.md +1 -5
- package/skills/service-itsm-agentic-setup-agent-runtime-access-assign/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-agentforce-studio-validate/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -5
- package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +1 -0
- package/skills/service-itsm-agentic-setup-itsm-agentforce-permset-assign/SKILL.md +1 -3
- package/skills/service-itsm-agentic-setup-uel-user-create/SKILL.md +1 -9
- package/skills/service-itsm-incident-mgmt-configure/SKILL.md +1 -5
- package/skills/service-itsm-incident-priority-configure/SKILL.md +1 -3
- package/skills/service-itsm-slack-itservice-configure/SKILL.md +1 -3
- package/skills/service-itsm-swarming-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-debug/SKILL.md +1 -3
- package/skills/service-itsm-teams-employee-agent-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-itdesk-configure/SKILL.md +1 -3
- package/skills/service-itsm-teams-itservice-configure/SKILL.md +1 -3
- package/skills/service-native-voice-recording-transcription-configure/SKILL.md +1 -3
- package/skills/service-omni-agent-users-create/SKILL.md +1 -3
- package/skills/service-omni-agent-work-sharing-configure/SKILL.md +1 -3
- package/skills/service-omni-attribute-routing-configure/SKILL.md +1 -3
- package/skills/service-omni-base-settings-configure/SKILL.md +1 -3
- package/skills/service-omni-channel-inventory-analyze/SKILL.md +1 -3
- package/skills/service-omni-channel-limits-analyze/SKILL.md +1 -3
- package/skills/service-omni-channel-setup-coordinate/SKILL.md +1 -3
- package/skills/service-omni-command-center-analyze/SKILL.md +1 -3
- package/skills/service-omni-command-center-configure/SKILL.md +1 -3
- package/skills/service-omni-permission-set-assign/SKILL.md +1 -3
- package/skills/service-omni-presence-status-deploy/SKILL.md +1 -3
- package/skills/service-omni-presence-user-config-deploy/SKILL.md +1 -3
- package/skills/service-omni-queue-deploy/SKILL.md +1 -3
- package/skills/service-omni-queue-members-assign/SKILL.md +1 -3
- package/skills/service-omni-queue-routing-config-deploy/SKILL.md +1 -3
- package/skills/service-omni-routing-flow-deploy/SKILL.md +1 -3
- package/skills/service-omni-service-channel-configure/SKILL.md +1 -3
- package/skills/service-omni-sidebar-configure/SKILL.md +1 -3
- package/skills/service-omni-skills-based-routing-configure/SKILL.md +1 -3
- package/skills/service-omni-supervisor-config-deploy/SKILL.md +1 -3
- package/skills/service-omni-supervisor-permset-assign/SKILL.md +1 -3
- package/skills/service-omni-supervisor-surface-deploy/SKILL.md +1 -3
- package/skills/service-omni-supervisor-users-create/SKILL.md +1 -3
- package/skills/service-omni-work-skill-routing-configure/SKILL.md +1 -3
- package/skills/tableau-next-asset-create/README.md +0 -65
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-element-forward-to-bot-or-agent
|
|
3
|
+
license: LICENSE.txt has complete terms
|
|
4
|
+
description: "Load when authoring a Forward to Bot/Agent element (`forwardToBotOrAgent` action call) in a marketing flow. Covers the mandatory WaitUntilEvent companion, the cross-element link via `associatedWaitConfiguration`, channel and event-type scoping, processType constraints (NOT Journey), and when to add a fault path. TRIGGER on: 'forward to bot', 'forward to agent', 'forwardToBotOrAgent', 'route replies to agent', 'conversational agent handoff', 'route inbound replies', 'send replies to bot'. DO NOT load for any other action call type."
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.0"
|
|
7
|
+
related-skills: flow-element-action-call, flow-element-wait
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Forward to Bot/Agent
|
|
11
|
+
|
|
12
|
+
`forwardToBotOrAgent` covers two distinct use cases. Identify the correct one before authoring anything.
|
|
13
|
+
|
|
14
|
+
## Which mode do you need?
|
|
15
|
+
|
|
16
|
+
| Mode | When to use | `modeSelector` wire value | WaitUntilEvent needed? |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| **Outreach Initiation (BEA)** | BEA sends the first email to a set of contactable records | `"InitiateConversation"` | **No** |
|
|
19
|
+
| **Reply Routing** | Agent handles a customer's inbound reply to an upstream send | `"ManageReplies"` | **Yes** |
|
|
20
|
+
|
|
21
|
+
- **"Forward to a Buyer Engagement Agent", "route contacts to BEA", "send email outreach via an agent"** → **Outreach Initiation**. Jump to [Outreach Initiation (BEA)](#outreach-initiation-bea). Skip "The Mandatory Pair" entirely.
|
|
22
|
+
- **"Route replies to an agent", "handle customer responses"** → **Reply Routing**. The action must always follow an upstream send action and a matching WaitUntilEvent. Do not author it in isolation.
|
|
23
|
+
|
|
24
|
+
## Reference File Index
|
|
25
|
+
|
|
26
|
+
| File | Purpose |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `examples/bea-outreach-initiation.json` | Outreach Initiation (BEA) forwardToBotOrAgent (`modeSelector: "InitiateConversation"`) + required flow-level metadata — no WaitUntilEvent |
|
|
29
|
+
| `examples/forward-to-bot-or-agent.json` | Reply Routing: WaitUntilEvent (email response) + forwardToBotOrAgent pair — verified against live describe |
|
|
30
|
+
|
|
31
|
+
## Outreach Initiation (BEA)
|
|
32
|
+
|
|
33
|
+
Use `forwardToBotOrAgent` with `modeSelector: "InitiateConversation"` to have a Buyer Engagement Agent (BEA) send the first email to a set of contactable records (Individuals or Contacts for example). It runs in an `AutoLaunchedFlow`; a `Segment` trigger is the verified and most common case, but any trigger that supplies the audience works (see [processType Constraints](#processtype-constraints)). No WaitUntilEvent is needed.
|
|
34
|
+
|
|
35
|
+
**Fixed action properties:**
|
|
36
|
+
- `actionType` / `actionName` / `nameSegment`: `forwardToBotOrAgent`
|
|
37
|
+
- `flowTransactionModel`: `"CurrentTransaction"`
|
|
38
|
+
- `storeOutputAutomatically`: `true`
|
|
39
|
+
- `outputParameters`: `[]`
|
|
40
|
+
- `faultConnector`: omit (platform accepts without it; add a fault path if error handling is desired)
|
|
41
|
+
- Requires an explicit `ends[]` terminal node; wire `connector.targetReference` to its `name`.
|
|
42
|
+
- Set `areMetricsLoggedToDataCloud: true` at the top-level `metadata` for BEA outreach flows.
|
|
43
|
+
|
|
44
|
+
### Parameters
|
|
45
|
+
|
|
46
|
+
| Name | Type | Required | Notes |
|
|
47
|
+
|---|---|---|---|
|
|
48
|
+
| `channel` | string | **yes** | `"Email"` for email outreach |
|
|
49
|
+
| `routingType` | string | **yes** | Always `"AgentforceServiceAgent"` for BEA outreach |
|
|
50
|
+
| `agentId` | string | **yes** | BotDefinition record ID (`0Xx…`). Resolve via SOQL through `dispatch_readonly`: `{ url: "/services/data/vXX.0/query", method: "GET", queryParams: { q: "SELECT Id, MasterLabel, Type FROM BotDefinition" } }` — filter `Type = 'ExternalCopilot'` and match the agent by label. (Or, for a Data Cloud DMO lookup, the Data 360 tool `d360_query_sql` via `dispatch`: `dispatch({ url: "/services/data/vXX.0/ssot/mcp/execute", method: "POST", body: { toolName: "d360_query_sql", paramsJson: "{\"input\": {\"sql\": \"SELECT ssot__Id__c, ssot__DeveloperName__c FROM ssot__Bot__dlm LIMIT 10\"}}" } })`; the `ssot__Id__c` value is the BotDefinition ID.) Then verify the agent has an active version: `SELECT Id, Status FROM BotVersion WHERE BotDefinitionId = '<0Xx…>'` — at least one row must have `Status = 'Active'`. |
|
|
51
|
+
| `modeSelector` | string | **yes** | `"InitiateConversation"` — exact wire value. Do NOT use `"Initial Outbound"`. |
|
|
52
|
+
| `maxOutreachAttempts` | number | no | Nudge count (e.g. `3`). **Not returned by `GET /services/data/vXX.0/flowbuilder/action/invocable-action-details`** — set directly via `numberValue`. |
|
|
53
|
+
| `timeBetweenOutreach` | number | no | Nudge interval in **minutes** (e.g. `60`). Not in descriptor; set via `numberValue`. |
|
|
54
|
+
| `fromAddress` | string | **yes (runtime; schema-optional)** | `SenderEmailAddress` record ID (`35a…`). Resolve via SOQL: `SELECT Id, DisplayName, Username, IsAgentConversationalActive, MessagingChannelId FROM SenderEmailAddress` — pick a row where `IsAgentConversationalActive = true` and `MessagingChannelId` is non-null (those mark an agent-usable sender); match by `DisplayName`/`Username` to the intended sender. `GET /services/data/vXX.0/flowbuilder/action/org-wide-email-addresses` is unreliable for this (returns empty on many orgs) — use the SOQL query; if still blocked, ask the user for the record ID. **Required for the message to actually send — omitting it causes a silent send failure even when the flow validates and activates cleanly.** |
|
|
55
|
+
| `communicationSubscriptionId` | string | **yes (runtime; schema-optional)** | `CommSubscription` record ID (`0Xl…`). Resolve via SOQL: `SELECT Id, Name FROM CommSubscription` — pick deliberately based on which subscription the outreach should send under (governs consent; do not just take the first row). **Required for the message to actually send — omitting it causes a silent send failure even when the flow validates and activates cleanly.** |
|
|
56
|
+
|
|
57
|
+
> `maxOutreachAttempts`, `timeBetweenOutreach`, `fromAddress`, and `communicationSubscriptionId` are hidden parameters — they do **not** appear in `GET /services/data/vXX.0/flowbuilder/action/invocable-action-details` output. Do not call that tool expecting to find them; use the table above directly.
|
|
58
|
+
|
|
59
|
+
**Dead-end tools — do not call for BEA outreach:**
|
|
60
|
+
- `GET /services/data/vXX.0/flowbuilder/action/org-wide-email-addresses` — returns empty on some orgs; cannot reliably resolve `fromAddress` IDs
|
|
61
|
+
- `GET /services/data/vXX.0/flowbuilder/action/invocable-action-parameter-enum-values` for `channelType` on `forwardToBotOrAgent` — always returns empty; `channelType` is not a parameter for this action (use `channel`)
|
|
62
|
+
- `GET /services/data/vXX.0/flowbuilder/action/invocable-action-details` — will not surface the four hidden params listed above; don't spend tool calls waiting for them to appear
|
|
63
|
+
|
|
64
|
+
### Silent send failure — the commonly-missed pair
|
|
65
|
+
|
|
66
|
+
A flow with `forwardToBotOrAgent` can **validate clean and activate successfully — yet the message never sends**, either silently (flow reports "completed," no email delivered) or with:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
INTERNAL_ERROR: Message didn't send because internal error occurred while trying to send message
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
The usual cause: **`fromAddress` and `communicationSubscriptionId` are missing from the flow element**. The Agent Builder UI can display these as populated because they are inherited defaults from the agent — but a flow-level F2A element does **not** inherit those defaults. The flow must set both explicitly.
|
|
73
|
+
|
|
74
|
+
> "Activated but nothing sent" → suspect missing `fromAddress` / `communicationSubscriptionId` first, before investigating channel setup, consent records, or audience membership.
|
|
75
|
+
|
|
76
|
+
### Minimal example
|
|
77
|
+
|
|
78
|
+
See `examples/bea-outreach-initiation.json` for the full fragment — the `forwardToBotOrAgent`
|
|
79
|
+
ActionCall (all fixed properties and input parameters above) plus the flow-level `ends[]` and
|
|
80
|
+
`areMetricsLoggedToDataCloud` metadata that a BEA outreach flow also requires.
|
|
81
|
+
|
|
82
|
+
## The Mandatory Pair
|
|
83
|
+
|
|
84
|
+
Every `forwardToBotOrAgent` must be preceded in the same flow by a `WaitUntilEvent`
|
|
85
|
+
element that waits for a response to a specific upstream send. The two elements are
|
|
86
|
+
linked by `associatedWaitConfiguration`.
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
[Send action] → [WaitUntilEvent (response event)]
|
|
90
|
+
│ event path │ timeout path
|
|
91
|
+
▼ ▼
|
|
92
|
+
[forwardToBotOrAgent] [no-reply handler]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Build in this order: send action → WaitUntilEvent → forwardToBotOrAgent.
|
|
96
|
+
|
|
97
|
+
**Channel scoping.** One send → one response WaitUntilEvent → one forwardToBotOrAgent.
|
|
98
|
+
Match the wait event type to the *specific channel* the user asks to route replies
|
|
99
|
+
from. If the user says "route replies from that email" and "you don't need to manage
|
|
100
|
+
RCS replies", add only the email response pair — do not add an RCS pair.
|
|
101
|
+
|
|
102
|
+
## Step 1 — WaitUntilEvent (Wait for Send Response)
|
|
103
|
+
|
|
104
|
+
`elementSubtype: "WaitUntilEvent"`. Never approximate with a classic Wait or
|
|
105
|
+
WaitDuration — engagement events cannot be bound on those types.
|
|
106
|
+
|
|
107
|
+
### Event branch
|
|
108
|
+
|
|
109
|
+
| Channel | `automationEventType` | `automationEventName` |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| Email reply | `trgrOnEmailResponseEngagement` | `trgrOnEmailResponseEngagement` |
|
|
112
|
+
| SMS reply | `trgrOnSmsResponseEngagement` | `trgrOnSmsResponseEngagement` |
|
|
113
|
+
| RCS reply | `trgrOnRcsResponseEngagement` | `trgrOnRcsResponseEngagement` |
|
|
114
|
+
| WhatsApp reply | `trgrOnWhatsAppResponseEngmt` | `trgrOnWhatsAppResponseEngmt` |
|
|
115
|
+
|
|
116
|
+
> **`automationEventName` = `automationEventType`** — confirmed via live retrieve. The `default__` prefix form (e.g. `"default__trgrOnEmailResponseEngagement"`) was not a valid value in the tested org; the platform stored `"NotFound"` when it was used — confirm this behavior holds in your target org.
|
|
117
|
+
|
|
118
|
+
> Always confirm what events are provisioned in the org before authoring — the table above reflects one org's baseline. Use **`GET /services/data/vXX.0/flowbuilder/action/invocable-events`** with `processType: "AutoLaunchedFlow"` and `triggerType: "Segment"` (the Connect OAS param names — NOT `flowProcessType`/`flowTriggerType`). It returns `invocableActions[]`; use each entry's `type` as `automationEventType` and `name` as `automationEventName`.
|
|
119
|
+
|
|
120
|
+
**`associatedContent` is required** on every messaging response event's
|
|
121
|
+
`inputParameters`. Bind it by `elementReference` to the upstream send action element
|
|
122
|
+
(not a string template ID):
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
"inputParameters": [
|
|
126
|
+
{ "name": "associatedContent", "value": { "elementReference": "Send_Marketing_Email" } }
|
|
127
|
+
]
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Omitting `associatedContent` blocks activation:
|
|
131
|
+
`"Required parameter 'associatedContent' is missing or empty"`.
|
|
132
|
+
|
|
133
|
+
Set `recordTriggerType: "Create"` on the event branch. Do **not** set `offset` on the event branch — omit it (leave null). Setting `offset: 0` is rejected or stored as a no-op.
|
|
134
|
+
Leave `outputParameters: []` — the agent handles the inbound message; there is
|
|
135
|
+
nothing to capture here for the forward pattern.
|
|
136
|
+
|
|
137
|
+
### Timeout branch
|
|
138
|
+
|
|
139
|
+
Route the timeout branch to a "no reply received" path.
|
|
140
|
+
|
|
141
|
+
| Field | Value |
|
|
142
|
+
|---|---|
|
|
143
|
+
| `offset` | 1–365 (required) |
|
|
144
|
+
| `offsetUnit` | `Days` / `Hours` / `Weeks` |
|
|
145
|
+
| `inputParameters` | `[]` |
|
|
146
|
+
| `outputParameters` | `[]` |
|
|
147
|
+
|
|
148
|
+
### Required shape rules (see also `../wait/wait.md`)
|
|
149
|
+
|
|
150
|
+
- `defaultConnectorLabel: "Default"` — required even on simplified subtypes or save
|
|
151
|
+
is rejected (`Required field is missing: defaultConnectorLabel`).
|
|
152
|
+
- No `defaultConnector`, no `faultConnector` on `WaitUntilEvent`.
|
|
153
|
+
- No `maxBatchSize` — rejected on `AutoLaunchedFlow`.
|
|
154
|
+
- The **event-branch waitEvent's `name`** is the value you reference in Step 2.
|
|
155
|
+
|
|
156
|
+
## Step 2 — forwardToBotOrAgent ActionCall
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
actionType: "forwardToBotOrAgent"
|
|
160
|
+
actionName: "forwardToBotOrAgent"
|
|
161
|
+
hasCallout: true → marketing flow: faultConnector only when the user asks for error handling; any other flow type: wire one
|
|
162
|
+
isAsync: false
|
|
163
|
+
allowsTransactionControl: true
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Parameters
|
|
167
|
+
|
|
168
|
+
| Name | Required | Type | Notes |
|
|
169
|
+
|---|---|---|---|
|
|
170
|
+
| `channel` | **yes** | string | Messaging channel. No static picklist — verify at author time. Describe says valid values include `"SMS"` and `"WhatsApp"`; use `"Email"` for email-reply routing (confirm per org). |
|
|
171
|
+
| `associatedWaitConfiguration` | **yes** | CrossElementRef | Reference to the event-branch waitEvent in the preceding WaitUntilEvent — see syntax below |
|
|
172
|
+
| `messagingChannelId` | no | string | Marked `configurationOnly` — `elementReference` is rejected at save time (`INPUTPARAM_INCOMPATIBLE_CONFIGURATION_ONLY`). Cannot be set to `$Context.MessagingChannelId` via element reference. Omit unless you have a static channel ID to hard-code. |
|
|
173
|
+
| `agentId` | no | string | ID of the Agentforce Service Agent or bot |
|
|
174
|
+
| `routingType` | no | string | `"Omni Flow"`, `"Omni Queue"`, or `"AgentforceServiceAgent"` (confirmed enum value for routing to an Agentforce Service Agent) |
|
|
175
|
+
| `modeSelector` | no | string | `"InitiateConversation"` for BEA Outreach Initiation (verified via `GET /services/data/vXX.0/flowbuilder/action/invocable-action-details` on `forwardToBotOrAgent`). `"Initial Outbound"` is **NOT** a valid wire value. For Reply Routing, use `"ManageReplies"`. |
|
|
176
|
+
|
|
177
|
+
Output: `messageId` (string) — ID of the inbound message. Capture via
|
|
178
|
+
`storeOutputAutomatically: true`.
|
|
179
|
+
|
|
180
|
+
### `associatedWaitConfiguration` syntax
|
|
181
|
+
|
|
182
|
+
The value is the WaitUntilEvent element's **`name`** — the API name of the Wait element only, not including any event name suffix:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"name": "associatedWaitConfiguration",
|
|
187
|
+
"value": { "stringValue": "Wait_For_Email_Reply" }
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
> `associatedWaitConfiguration` has `complexType: "CrossElementRef"` in the action descriptor — that is a Flow Builder UI hint, not a wire-format directive. The Tooling API rejects `elementReference` here with `INPUTPARAM_INCOMPATIBLE_CONFIGURATION_ONLY`. Always use `stringValue` with the element name alone (no `.EventName` suffix).
|
|
192
|
+
|
|
193
|
+
### Connector and fault connector
|
|
194
|
+
|
|
195
|
+
A forward `connector` to the next element (or an End node) is **required** — omitting it leaves the action with no exit path and the flow will be invalid. *(When the forward target is an End in `AUTO_LAYOUT_CANVAS` at resolved `apiVersion` ≥ 68.0, point the connector at an explicit `ends[]` End — its own dedicated End or a shared End converged with other non-fault branches, both valid; below 68.0 and on any Free-Form flow, omit the connector instead. See `shared/anti-patterns.md` item 38 and `shared/end/end.md`.)*
|
|
196
|
+
|
|
197
|
+
`hasCallout: true` — the action can throw at runtime on routing failures. It usually runs in a marketing flow (a `Segment` or `IndivRelatedRecord` trigger). There, add a `faultConnector` only when the user asks for error handling; the platform accepts the action without one. In any other flow type, wire one (the default rule). See `shared/fault-paths/fault-paths.md` § Marketing Flows — Fault Paths Only When Asked.
|
|
198
|
+
|
|
199
|
+
### Example `inputParameters`
|
|
200
|
+
|
|
201
|
+
```json
|
|
202
|
+
"inputParameters": [
|
|
203
|
+
{ "name": "channel", "value": { "stringValue": "Email" } },
|
|
204
|
+
{ "name": "associatedWaitConfiguration", "value": { "stringValue": "Wait_For_Email_Reply" } },
|
|
205
|
+
{ "name": "agentId", "value": { "stringValue": "<agent-id>" } }
|
|
206
|
+
]
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## processType Constraints
|
|
210
|
+
|
|
211
|
+
| processType | triggerType | Supported |
|
|
212
|
+
|---|---|---|
|
|
213
|
+
| `AutoLaunchedFlow` | `Segment` | **yes** — confirmed via `GET /services/data/vXX.0/flowbuilder/action/invocable-actions` |
|
|
214
|
+
| `AutoLaunchedFlow` | `IndivRelatedRecord` | likely yes — same catalog; confirm with `GET /services/data/vXX.0/flowbuilder/action/invocable-actions` |
|
|
215
|
+
| `Journey` | — | **NO** — `Journey` (label: "Audience-Driven Flow") does not support `forwardToBotOrAgent` or `WaitUntilEvent`; do not use it |
|
|
216
|
+
|
|
217
|
+
When the user's request involves a segment, audience, or marketing flow: use
|
|
218
|
+
`processType: AutoLaunchedFlow` + `triggerType: Segment`. Never use `Journey`.
|
|
219
|
+
|
|
220
|
+
Always confirm at author time: `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/schema/flow-capabilities", queryParams: { processType, triggerType })` and
|
|
221
|
+
verify both `WaitUntilEvent` and `ActionCall` appear in `.elements`.
|
|
222
|
+
|
|
223
|
+
## Anti-Patterns
|
|
224
|
+
|
|
225
|
+
```jsonc
|
|
226
|
+
// WRONG #1 — forwardToBotOrAgent with no preceding WaitUntilEvent in REPLY ROUTING mode.
|
|
227
|
+
// Applies ONLY when the intent is to route a customer's inbound reply to an agent.
|
|
228
|
+
// For modeSelector="InitiateConversation" (BEA Outreach Initiation in a Segment flow),
|
|
229
|
+
// NO WaitUntilEvent is needed or expected — omitting it is correct.
|
|
230
|
+
|
|
231
|
+
// WRONG #2 — Missing associatedContent on the WaitUntilEvent event branch.
|
|
232
|
+
// Blocks activation: "Required parameter 'associatedContent' is missing or empty".
|
|
233
|
+
{ "automationEventType": "trgrOnEmailResponseEngagement", "inputParameters": [] }
|
|
234
|
+
|
|
235
|
+
// WRONG #3 — associatedWaitConfiguration using elementReference.
|
|
236
|
+
// The parameter is configurationOnly; elementReference is rejected with
|
|
237
|
+
// INPUTPARAM_INCOMPATIBLE_CONFIGURATION_ONLY. Always use stringValue.
|
|
238
|
+
{ "name": "associatedWaitConfiguration", "value": { "elementReference": "Wait_For_Email_Reply" } }
|
|
239
|
+
// must be:
|
|
240
|
+
{ "name": "associatedWaitConfiguration", "value": { "stringValue": "Wait_For_Email_Reply" } }
|
|
241
|
+
|
|
242
|
+
// WRONG #4 — associatedWaitConfiguration with dot-notation value.
|
|
243
|
+
// The "ElementName.WaitEventName" form is rejected — use the element name alone.
|
|
244
|
+
{ "name": "associatedWaitConfiguration", "value": { "stringValue": "Wait_For_Email_Reply.Email_Reply_Event" } }
|
|
245
|
+
// must be:
|
|
246
|
+
{ "name": "associatedWaitConfiguration", "value": { "stringValue": "Wait_For_Email_Reply" } }
|
|
247
|
+
|
|
248
|
+
// WRONG #5 — The user asked for error handling, but forwardToBotOrAgent has no faultConnector.
|
|
249
|
+
// hasCallout is true. When the user did not ask and the flow is a marketing flow (the usual case for
|
|
250
|
+
// Reply Routing and BEA Outreach Initiation), omit it. In any other flow type, always wire one.
|
|
251
|
+
{ "actionName": "forwardToBotOrAgent", "connector": { "targetReference": "End" } }
|
|
252
|
+
// faultConnector missing
|
|
253
|
+
|
|
254
|
+
// WRONG #6 — processType Journey.
|
|
255
|
+
// Journey does not support forwardToBotOrAgent or WaitUntilEvent.
|
|
256
|
+
|
|
257
|
+
// WRONG #7 — Adding an RCS WaitUntilEvent when the user said
|
|
258
|
+
// "you should not need to manage RCS replies".
|
|
259
|
+
// Only build the pair for channels the user explicitly wants to route.
|
|
260
|
+
|
|
261
|
+
// WRONG #8 — flowTransactionModel: "Automatic".
|
|
262
|
+
// Does NOT fix a send failure. It moves the transaction boundary so the
|
|
263
|
+
// runtime error is swallowed and the flow reports "success" while still
|
|
264
|
+
// sending nothing. Keep "CurrentTransaction" so real send errors surface.
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Debugging — "activated but not sending"
|
|
268
|
+
|
|
269
|
+
When the flow activates cleanly but no message is delivered:
|
|
270
|
+
|
|
271
|
+
1. **Audience**: verify the segment contains records with a valid, non-opted-out address.
|
|
272
|
+
2. **Active agent version**: `SELECT Id, Status FROM BotVersion WHERE BotDefinitionId = '<0Xx…>'` — at least one row must be `Active`.
|
|
273
|
+
3. **Missing send parameters**: confirm `fromAddress` and `communicationSubscriptionId` are both present on the F2A element and each resolves to a current, valid record (re-query `SenderEmailAddress` / `CommSubscription` as shown in the parameters table above). A missing or stale value in either is the prime suspect.
|
|
274
|
+
4. **Transaction model**: confirm `flowTransactionModel` is `CurrentTransaction`, not `Automatic` — `Automatic` swallows the runtime send error so the flow reports success while sending nothing.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-element-start-audience-common
|
|
3
|
+
license: LICENSE.txt has complete terms
|
|
4
|
+
description: "Shared build contract for ALL audience-triggered flows — the run schedule, top-level `timeZoneSidKey`, top-level `dataSpace`, optional `dataGraph`, re-entry (`entryType`), the save-and-activate gates, and the builder round-trip defaults common to `triggerType` `Segment`, `List`, `CampaignMember`, and `RecordQuery` (they all share Core's `BaseAudienceTriggerTypeHandler`). Load this FIRST, then load the per-trigger binding guide: `segment-triggered.md`, `list-campaignmember.md`, or `recordquery.md`. Covers only what is identical across the four; the audience binding and record context live in the per-trigger files. DO NOT load for RecordAfterSave, Scheduled, PlatformEvent, or any non-audience trigger."
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.0"
|
|
7
|
+
related-skills: flow-element-start, flow-flow-properties, flow-element-wait
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Audience-Triggered Flows — Shared Contract
|
|
11
|
+
|
|
12
|
+
Load this **first** for any audience-style trigger, then load the matching
|
|
13
|
+
binding guide for how the audience is bound and referenced:
|
|
14
|
+
|
|
15
|
+
| Trigger | UI name | Audience | Binding guide |
|
|
16
|
+
|---|---|---|---|
|
|
17
|
+
| `Segment` | Segment Flow | a marketing **Segment**'s individuals (Data Cloud) | `segment-triggered.md` |
|
|
18
|
+
| `List` | List Flow | an **Actionable List**'s members | `list-campaignmember.md` |
|
|
19
|
+
| `CampaignMember` | Campaign Member Flow | a **Campaign**'s members (Contacts/Leads) | `list-campaignmember.md` |
|
|
20
|
+
| `RecordQuery` | Record Query | **all records of one SObject** matching a filter | `recordquery.md` |
|
|
21
|
+
|
|
22
|
+
All four enter an audience of members when the flow runs and share one Core base
|
|
23
|
+
— `BaseAudienceTriggerTypeHandler` (→ `DefaultScheduledTriggerTypeHandler`) —
|
|
24
|
+
which is why the run schedule, `timeZoneSidKey`, `dataSpace`, `dataGraph`,
|
|
25
|
+
`entryType`, and the save-and-activate gates below are **identical** across them.
|
|
26
|
+
The only per-trigger differences are the **audience binding** and the
|
|
27
|
+
**record-context handle** — both documented in the per-trigger guides.
|
|
28
|
+
|
|
29
|
+
## Reference File Index
|
|
30
|
+
|
|
31
|
+
| File | Purpose |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `examples/segment-weekly-schedule.json` | Weekly run-schedule start-element example (schedule shape is shared by all four triggers) |
|
|
34
|
+
| `segment-triggered.md` | Bind + reference a `Segment` audience |
|
|
35
|
+
| `list-campaignmember.md` | Bind + reference a `List` or `CampaignMember` audience |
|
|
36
|
+
| `recordquery.md` | Bind + reference a `RecordQuery` audience |
|
|
37
|
+
|
|
38
|
+
## processType, activation, and Draft status
|
|
39
|
+
|
|
40
|
+
- **processType** is always `AutoLaunchedFlow` for all four triggers. Author it for
|
|
41
|
+
both `POST /services/data/vXX.0/flowbuilder/flow/actions/save` and legacy `saveAndValidateFlow`
|
|
42
|
+
lifecycles. Do not substitute `Journey` based on the builder surface name or a
|
|
43
|
+
Connect enum member.
|
|
44
|
+
- Keep `processType: "AutoLaunchedFlow"` when activation must happen in the UI. A
|
|
45
|
+
save yields a **Draft**; activation is a user action in the builder (the
|
|
46
|
+
`POST /services/data/vXX.0/flowbuilder/flow/{flowId}/actions/activate` endpoint (activateFlow — DO
|
|
47
|
+
NOT DISPATCH, quarantined) is disabled for every flow type — a 404 from it does
|
|
48
|
+
NOT indicate a process-type mismatch). Open the version with
|
|
49
|
+
`builderType=JourneyBuilder` and let the user activate it there. See
|
|
50
|
+
`../../shared/preview-renderer.md`.
|
|
51
|
+
- With the Core HTTP lifecycle, **omitting `start.triggerType`** makes Core
|
|
52
|
+
validate the flow as a plain autolaunched flow; audience-only actions then fail
|
|
53
|
+
with `ACTIONCALL_NOT_SUPPORTED_FOR_PROCESSTYPE`. Always set the trigger type.
|
|
54
|
+
- A Core save with `isSuccess: true` and `status: "InvalidDraft"` is **not**
|
|
55
|
+
complete. Fix every missing/blocking warning and save again until
|
|
56
|
+
`status: "Draft"`. A save returning `isSuccess: true` **with warnings** is not
|
|
57
|
+
"done" — clear all four `WARNING_BLOCK_ACTIVATION` gates below or the draft
|
|
58
|
+
can't be activated.
|
|
59
|
+
|
|
60
|
+
## Requirements to save-and-activate (all four triggers)
|
|
61
|
+
|
|
62
|
+
Inherited from `BaseAudienceTriggerTypeHandler`. Each validates as
|
|
63
|
+
`isSuccess: true` even while missing, but each is a `WARNING_BLOCK_ACTIVATION`
|
|
64
|
+
that stops the draft going live — set all four on the **first** save:
|
|
65
|
+
|
|
66
|
+
1. **Audience selection** — per-trigger; see the binding guide. (`Segment`:
|
|
67
|
+
`start.segment` + `start.object`; `List`/`CampaignMember`: `start.listAction`;
|
|
68
|
+
`RecordQuery`: `start.object`.) Each has its own missing-audience error.
|
|
69
|
+
2. **Run schedule** — `start.schedule.frequency` is required (see [Run schedule](#run-schedule)).
|
|
70
|
+
Missing → `FLOW_SCHEDULE_INFORMATION_INCOMPLETE`.
|
|
71
|
+
3. **Time zone** — top-level `metadata.timeZoneSidKey` (see [timeZoneSidKey](#timezonesidkey--top-level-and-required)).
|
|
72
|
+
Missing → `TIME_ZONE_REQUIRED_FOR_TRIGGER_TYPE`.
|
|
73
|
+
4. **Data space** — top-level `metadata.dataSpace` (see [Set the data space](#set-the-data-space)).
|
|
74
|
+
Missing → `DATA_SPACE_REQUIRED_FOR_FLOW_TYPE`.
|
|
75
|
+
|
|
76
|
+
Fault paths are **not** among these requirements. An audience-triggered flow is
|
|
77
|
+
a marketing flow: add a `faultConnector` or error-handling branch only when the
|
|
78
|
+
user asks for error handling. A flow with no fault paths saves and activates.
|
|
79
|
+
See `../../shared/fault-paths/fault-paths.md` § Marketing Flows — Fault Paths Only When Asked.
|
|
80
|
+
|
|
81
|
+
## Run schedule
|
|
82
|
+
|
|
83
|
+
An audience flow's cadence is its **run schedule** (`start.schedule`) — NOT a
|
|
84
|
+
Scheduled-flow trigger. The fields below are the ones the platform's validator
|
|
85
|
+
actually checks, and its feedback is misleading: it reports a *missing* timezone
|
|
86
|
+
when the value is merely mis-placed, and conditional-field errors only surface
|
|
87
|
+
after a save. So a wrong shape almost never self-corrects — get it exact up front.
|
|
88
|
+
|
|
89
|
+
- **`frequency: "OnActivate"`** runs when the flow is activated and needs **no**
|
|
90
|
+
`startDate`/`startTime` — the right default when the prompt names no cadence.
|
|
91
|
+
- Every other frequency needs `startDate` + `startTime`.
|
|
92
|
+
|
|
93
|
+
| Field | Type | When | Notes |
|
|
94
|
+
|---|---|---|---|
|
|
95
|
+
| `frequency` | string | always | One of `OnActivate`, `Once`, `Hourly`, `Daily`, `Weekdays`, `Weekly`, `Monthly`, `Yearly` |
|
|
96
|
+
| `startDate` | string (date) | always (except `OnActivate`) | e.g. `"2026-06-01"` |
|
|
97
|
+
| `startTime` | string (time) | always (except `OnActivate`) | e.g. `"09:00:00.000"` |
|
|
98
|
+
| `frequencyNumber` | integer ≥ 1 | required for `Hourly`, `Weekly`, `Monthly` | number of units between runs |
|
|
99
|
+
| `daysOfWeekToRun` | string | required for `Weekly` | numeric day codes — see below |
|
|
100
|
+
| `dayOfMonthToRun` | integer | required for `Monthly` | `1`–`31`, or `-1` for last day of month |
|
|
101
|
+
|
|
102
|
+
- **`Weekly`:** set `frequencyNumber` (integer ≥ 1) **and `daysOfWeekToRun` as a comma-separated string of numeric day codes** — **1=Sunday, 2=Monday, 3=Tuesday, 4=Wednesday, 5=Thursday, 6=Friday, 7=Saturday.** Use the NUMBER, not the day name, and not a list: "every Tuesday" → `"3"`; "Monday and Wednesday" → `"2,4"`; "Tuesday and Thursday" → `"3,5"`. The platform enforces the regex `^([1-7](,[1-7])*)$`; a day name like `"Tuesday"` is rejected with "Enter a valid value for the Days of Week to Run field."
|
|
103
|
+
- **`Monthly`:** set `dayOfMonthToRun` (a scalar integer `1`–`31`, or `-1` for the last day). `dayOfMonthToRun` is allowed ONLY for `Monthly`.
|
|
104
|
+
- **`Daily` takes NO `frequencyNumber`.** `frequencyNumber` is allowed only for `Hourly`, `Weekly`, and `Monthly` — setting it on a `Daily` (or `Weekdays`/`Yearly`/`Once`) schedule fails with `INVALID_FIELD_FOR_CONFLICTING_FIELD_VALUE`. **There is no N-day-interval frequency**: "every 3 days" is NOT expressible as a single schedule. Model it as plain `Daily` (dropping the interval) or with an in-flow `Wait` loop — do NOT emit `Daily` + `frequencyNumber: 3`.
|
|
105
|
+
- **`Weekdays`** is a standalone frequency meaning Monday–Friday. It takes neither `frequencyNumber` nor `daysOfWeekToRun` — both are rejected.
|
|
106
|
+
- **Value caps:** `Hourly` `frequencyNumber` ≤ 168; `Monthly` `frequencyNumber` ≤ 12; both ≥ 1. `dayOfMonthToRun` out of range (not 1–31 and not -1) fails with `WAITEVENT_INVALID_VALUE`; a malformed `daysOfWeekToRun` string fails with `FLOW_START_INPUT_REQUIRED`.
|
|
107
|
+
|
|
108
|
+
### Worked example — "every Tuesday and Thursday at 9 AM Eastern"
|
|
109
|
+
|
|
110
|
+
See `examples/segment-weekly-schedule.json` for the start-element shape — note
|
|
111
|
+
`daysOfWeekToRun` is the numeric-code string `"3,5"` (Tue + Thu), never
|
|
112
|
+
`["Tuesday","Thursday"]`. The required `timeZoneSidKey` (`"America/New_York"`) is
|
|
113
|
+
**not** part of that snippet: it lives at the flow's top level
|
|
114
|
+
(`metadata.timeZoneSidKey`, a sibling of `start`), per the placement rule below —
|
|
115
|
+
never inside `schedule` or on the Start element.
|
|
116
|
+
|
|
117
|
+
## timeZoneSidKey — top-level and REQUIRED
|
|
118
|
+
|
|
119
|
+
- **`timeZoneSidKey` is a REQUIRED top-level flow property — a sibling of `start` inside `metadata` (`metadata.timeZoneSidKey`), NEVER `start.timeZoneSidKey`.** Both omitting it and mis-placing it on the start element fail as `TIME_ZONE_REQUIRED_FOR_TRIGGER_TYPE` (the placement error misleadingly reads as "no timezone supplied").
|
|
120
|
+
- Value is an IANA timezone id, e.g. `"America/New_York"`. A bogus id fails with `INVALID_TIME_ZONE`.
|
|
121
|
+
- **Which value when the user is silent: default to the org default timezone — do NOT ask the user to pick one.** Resolve the org default from the org itself (`SELECT TimeZoneSidKey FROM Organization`, the running user's `TimeZoneSidKey`, or the `timeZoneSidKey` on an existing active flow in the org). Only use a specific IANA id when the user explicitly names a timezone. Because an audience flow *cannot* omit `timeZoneSidKey` (unlike a plain AutoLaunchedFlow, which must omit it), "default timezone" here means **auto-fill the org default**, never blank. See the Wait timezone rule in `../wait/wait.md`.
|
|
122
|
+
|
|
123
|
+
## Set the data space
|
|
124
|
+
|
|
125
|
+
Required. Set `dataSpace` on the **top-level** flow object (`metadata.dataSpace`,
|
|
126
|
+
API ≥ 258) to a data space's `name` (e.g. `"default"`), resolved through `dispatch`/`dispatch_readonly` by
|
|
127
|
+
**either** path:
|
|
128
|
+
- SOQL via `dispatch_readonly({ url: "/services/data/vXX.0/query", method: "GET", queryParams: { q: "SELECT Id, Name FROM DataSpace" } })` → `records[]`, each `{Id, Name}`. Use `Name`.
|
|
129
|
+
- the Data 360 tool `d360_dataspace_list` (`dispatch` POST to `/services/data/vXX.0/ssot/mcp/execute`, `paramsJson: "{\"batchSize\": 50, \"offset\": 0}"`) → `result.dataSpaces[]`, each `{id, label, name, status}`. Use `name`, not `id` or `label` — this path also yields `label`/`status`.
|
|
130
|
+
|
|
131
|
+
1. Only one data space → use it silently.
|
|
132
|
+
2. Multiple + user specified one → match by `name`/`label` and use that.
|
|
133
|
+
3. Multiple + user didn't specify → ask which data space to use. Do not guess a default.
|
|
134
|
+
|
|
135
|
+
- **List/CampaignMember/RecordQuery audiences are Core records (ActionableList / Campaign / an SObject), not Data-Cloud assets, so their home data space isn't resolvable through the Data 360 tool** — default to the org default and surface the assumption at the plan gate. The SOQL path above still resolves the data space itself either way.
|
|
136
|
+
- For `sendToJourney` (a Segment flow), also require the selected business unit's `businessUnitsToDataSpaces[].dataSpaceName` to equal this `name`. Follow `../action-call/send-to-journey.md` for business-unit and Journey selection.
|
|
137
|
+
|
|
138
|
+
## Set the data graph
|
|
139
|
+
|
|
140
|
+
Optional. Set `dataGraph` on the **start element** (`metadata.start.dataGraph`) to
|
|
141
|
+
a data graph's `developerName`, resolved via the Data 360 tool
|
|
142
|
+
`d360_datagraph_metadata` (`dispatch`): `dispatch({ url: "/services/data/vXX.0/ssot/mcp/execute", method: "POST", body: { toolName: "d360_datagraph_metadata", paramsJson: "{\"dataspace\": \"<the dataSpace name from above>\"}" } })` → `result.dataGraphMetadata[]`, each `{developerName, dataspaceName, dgObject: {developerName: <backing DMO>, relatedObjects: [...], ...}}`. Omit
|
|
143
|
+
`dataGraphEntityName` in `paramsJson` to list every graph in that data space; add a
|
|
144
|
+
specific `"dataGraphEntityName"` to fetch just that graph's full schema. (This
|
|
145
|
+
metadata tool is the source for the graph's backing DMO and related-object schema;
|
|
146
|
+
a `DataGraph` SOQL query returns only `DataGraphApiName`/`PrimaryDmo`/`Status`, not
|
|
147
|
+
`relatedObjects`.)
|
|
148
|
+
|
|
149
|
+
1. User specifies a data graph → use its `developerName`. If no data space was specified, use that graph's own `dataspaceName`.
|
|
150
|
+
2. User specifies both → verify the graph's `dataspaceName` matches the data space chosen above. If it doesn't, ask the user how to proceed.
|
|
151
|
+
3. User does NOT specify a data graph → leave it blank.
|
|
152
|
+
|
|
153
|
+
## Re-entry — `entryType` on the Start element
|
|
154
|
+
|
|
155
|
+
`entryType` governs whether — and *when* — a single member who has **already
|
|
156
|
+
entered** the flow may enter it **again**. Omit unless the prompt restricts re-entry.
|
|
157
|
+
|
|
158
|
+
| Re-entry for a member who already entered | `entryType` |
|
|
159
|
+
|---|---|
|
|
160
|
+
| may enter again any time, even while a prior run is still in progress (default) | omit (= `Always`) |
|
|
161
|
+
| may enter again, but only after finishing the current run — no two overlapping runs for the same member | `AfterCompletion` |
|
|
162
|
+
| may never enter more than once | `Never` |
|
|
163
|
+
|
|
164
|
+
Write `entryType` only as `AfterCompletion` or `Never`. When the prompt says
|
|
165
|
+
nothing about re-entry, leave `entryType` out of the Start. A made-up value such
|
|
166
|
+
as `AllRecords` stops the flow from activating: `'AllRecords' is not a valid value for the enum 'FlowEntryType'`.
|
|
167
|
+
|
|
168
|
+
## Record context ($Input / $Record) — globals available
|
|
169
|
+
|
|
170
|
+
The **per-trigger member handle** is documented in each binding guide, because it
|
|
171
|
+
differs by trigger: List / CampaignMember / RecordQuery expose the member row on
|
|
172
|
+
`$Input.…`; **Segment exposes the member as `$Record`** (a row of the segment's DMO,
|
|
173
|
+
e.g. `$Record.ssot__FirstName__c`; see `segment-triggered.md`). The global
|
|
174
|
+
availability:
|
|
175
|
+
|
|
176
|
+
| Global | Available? | Notes |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| `$Input` | Yes for List / CampaignMember / RecordQuery; No for Segment | Trigger-input container. Member handle is per-trigger; **not** exposed for Segment. |
|
|
179
|
+
| `$Record` | Segment only | In a Segment flow, the current member (a row of the `segmentOnApiName` DMO): write `$Record.<field>`, never the bare field name. Not available for List / CampaignMember / RecordQuery. |
|
|
180
|
+
| `$Contact` / `$Lead` / `$Prospect` | No | Not exposed for audience triggers — use `$Input` (List/CampaignMember/RecordQuery) or `$Record` (Segment). |
|
|
181
|
+
| `$Flow.*` | Yes | `CurrentDate`, `CurrentDateTime`, `InterviewStartTime`, `InterviewGuid`, `FaultMessage` |
|
|
182
|
+
|
|
183
|
+
## What the builder normalizes on save (round-trip defaults)
|
|
184
|
+
|
|
185
|
+
A save through the builder rewrites the metadata with a default skeleton.
|
|
186
|
+
Engine-supplied — do NOT hand-author, and don't treat their appearance on a
|
|
187
|
+
retrieve as drift:
|
|
188
|
+
|
|
189
|
+
- **Metadata level:** `accessType: "NamespaceRestricted"`, `areMetricsLoggedToDataCloud: true`, every element collection present as `[]`.
|
|
190
|
+
- **`schedule`** with `OnActivate`: `dayOfMonthToRun: 0`, `frequencyNumber: 0` (zero placeholders — not a cadence).
|
|
191
|
+
- The save stays on the same Draft version (no new version created).
|
|
192
|
+
- The **per-binding** skeleton (the `listAction` FlowActionCall fields, or the RecordQuery Start skeleton) is documented in the binding guides.
|
package/skills/automation-flow-coordinate/references/elements/start/automation-event-triggered.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flow-element-start-automation-event-triggered
|
|
3
|
+
license: LICENSE.txt has complete terms
|
|
4
|
+
description: "Load when building an Automation Event-triggered flow — triggerType `AutomationEvent`, processType `AutoLaunchedFlow` — that FIRES when an email-engagement event occurs (email open, link click, bounce, or response). Covers discovering the event at runtime (`GET /services/data/vXX.0/flowbuilder/action/invocable-events` + describe), the start-element shape (`eventName`/`eventType`), the inputs that make the flow activatable, and the hard line between an event-TRIGGERED flow (this) vs a flow that WAITS mid-flow on an engagement event (IndivRelatedRecord + WaitUntilEvent) vs a PlatformEvent flow. NOT for Marketing form submission — Flow Builder lists Form Submission under Automation Event, but it is triggerType `FormSubmissionEvent` (load `form-submission-triggered.md`). DO NOT load for any other trigger type."
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.0"
|
|
7
|
+
related-skills: flow-element-start, flow-flow-properties
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Automation Event-Triggered (OOTB Email-Engagement Flow)
|
|
11
|
+
|
|
12
|
+
Load this when `triggerType` is `AutomationEvent`. It is the complete build guide for the Automation Event start element; the base `start.md` carries only the routing stub.
|
|
13
|
+
|
|
14
|
+
The whole flow FIRES when an email-engagement event occurs for an individual — an email is opened, a link is clicked, the email bounces, or the recipient responds.
|
|
15
|
+
|
|
16
|
+
- **triggerType**: `AutomationEvent`. Author **`processType: "AutoLaunchedFlow"`** (headless). Do not substitute `Journey` based on the builder surface name.
|
|
17
|
+
- The event is chosen ON the start element via **`eventName` + `eventType`** — NOT `actionName`/`actionType`, which match neither element (a mid-flow Wait Until Event uses its own `automationEventName`/`automationEventType`, and the start uses `eventName`/`eventType` — see the disambiguation below).
|
|
18
|
+
- Requires a Marketing/engagement-provisioned org: the Automation Event trigger and its events are license-gated and do not exist on a plain org. If the trigger type or an event is unavailable, STOP and tell the user the org is not provisioned — do NOT fall back to another trigger type.
|
|
19
|
+
|
|
20
|
+
## Discover the event — don't hard-code it
|
|
21
|
+
|
|
22
|
+
Automation Events run on the same invocable-action framework as Action Call actions, so you discover them the same way you discover actions: list what the org offers, then describe the one you pick. Treat discovery as the source of truth for the event's trigger string and its inputs; the event-specific notes later in this file cover only the handful of things discovery does NOT tell you.
|
|
23
|
+
|
|
24
|
+
> **One shared discovery endpoint — read this before using it.** `invocable-events` is the org's single event-discovery endpoint, and its API description is written around the Wait-Until-Event case ("the events a Wait Until Event element can wait on"). It nonetheless enumerates the SAME engagement/automation event catalog that the AutomationEvent **start** trigger fires on — there is no separate start-trigger discovery endpoint. The only difference is how the discovered event is referenced downstream: an AutomationEvent **start** uses the BARE `trgrOn…` value in `eventName`/`eventType` (this guide), whereas a mid-flow Wait Until Event uses the `default__`-prefixed form in `automationEventName`/`automationEventType` (see `../wait/wait.md`). So discover the event here, then put the **bare** value on the start.
|
|
25
|
+
|
|
26
|
+
1. **List the available events.** Call `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/action/invocable-events", queryParams: { processType: "AutoLaunchedFlow" })` to enumerate the engagement/automation events the org actually exposes. Read the descriptors from the response `invocableActions[]` — each row's `name` is the event's exact trigger string (its `type` echoes the same value). Match the user's intent (opened / link clicked / bounced / responded) to a row and take its exact `name`. Do NOT guess or hard-code the string — use what discovery returns. (Optional query params to narrow the list: `triggerType`, `builderType`, `dataSpace`, `actionType`, `namePattern`, `limit`.)
|
|
27
|
+
2. **Set the trigger identity from it.** Put that exact string in BOTH `eventName` and `eventType` (they always carry the identical value — see Start element shape).
|
|
28
|
+
3. **Describe the chosen event to learn its inputs.** Call `dispatch_readonly(method: "GET", url: "/services/data/vXX.0/flowbuilder/action/invocable-action-details", queryParams: { actionType: "<the row's type>", actionName: "<the row's name>" })` for the event. The describe output lists its input parameters and marks which are required (`isRequired`). For the email-engagement events this is where `associatedContent` (and, for link click, `specificLink`) come back as required inputs — read them from describe rather than assuming. See "Fill the required inputs" below for the values these inputs expect.
|
|
29
|
+
|
|
30
|
+
If `GET /services/data/vXX.0/flowbuilder/action/invocable-events` returns nothing or the intended event is missing, the org is not engagement-provisioned — STOP and tell the user (see the provisioning note above).
|
|
31
|
+
|
|
32
|
+
> **Form Submission is not built here.** When discovery is scoped to `triggerType: "AutomationEvent"`, it also returns a `trgrOnFormSubmission` row labeled "Form Submission". Never put it in `eventName`/`eventType` — that shape is rejected (invalid event name, `InvalidDraft`). A flow that runs when someone submits a Marketing form is `triggerType: FormSubmissionEvent`; STOP here and load `form-submission-triggered.md`.
|
|
33
|
+
|
|
34
|
+
## Do NOT confuse with the look-alikes
|
|
35
|
+
|
|
36
|
+
**Choosing between these is a flow-type classification decision — owned by the
|
|
37
|
+
flow-type-resolver reference (`../../shared/flow-type-resolver/flow-type-resolver.md`).**
|
|
38
|
+
Fire-on-event vs. run-then-wait is its `taxonomy.json`
|
|
39
|
+
fire-on-event-vs-run-then-wait bad pair, and the `AutomationEvent` / `IndivRelatedRecord`
|
|
40
|
+
(+ `Segment`) / `PlatformEvent` types are its categories; resolve there, not here. Once the
|
|
41
|
+
type is resolved, this is the build detail — **where the event is set** for each:
|
|
42
|
+
|
|
43
|
+
| Trigger type | Where the event is set |
|
|
44
|
+
|---|---|
|
|
45
|
+
| `AutomationEvent` start (this guide) — flow FIRES when an email is opened/clicked/bounced/responded-to | `eventName`/`eventType` on the **start** |
|
|
46
|
+
| `IndivRelatedRecord` (or `Segment`) + a `WaitUntilEvent` element — flow runs first, then PAUSES until the engagement event (see `start.md` and `../wait/wait.md`) | `automationEventName`/`automationEventType` on the **wait** element |
|
|
47
|
+
| `PlatformEvent` start — react to a Platform Event (`__e`) message | `object` = event API name (never `eventName`/`eventType`) |
|
|
48
|
+
| `FormSubmissionEvent` start — flow FIRES when someone submits a Marketing form (listed under Automation Event in Flow Builder, but NOT an `AutomationEvent`; see `form-submission-triggered.md`) | `form` = the form's content FQN on the **start** (never `eventName`/`eventType`) |
|
|
49
|
+
|
|
50
|
+
Do NOT resolve marketer intent to **`AdminAutomationEvent`** — that is a separate admin variant, not the OOTB engagement trigger.
|
|
51
|
+
|
|
52
|
+
## Start element shape
|
|
53
|
+
|
|
54
|
+
| Field | Value |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `triggerType` | `"AutomationEvent"` |
|
|
57
|
+
| `eventName` | the event's exact trigger string — from discovery (see above) |
|
|
58
|
+
| `eventType` | the SAME trigger string as `eventName` (both fields carry the identical value in every saved Automation Event flow) |
|
|
59
|
+
| `processType` (flow root) | `"AutoLaunchedFlow"` |
|
|
60
|
+
|
|
61
|
+
**Required:** start `inputs[]` (`associatedContent`, plus `specificLink` for link-click) and a flow-level `dataSpace` — see [Fill the required inputs](#fill-the-required-inputs--start-inputs--data-space) below; without them the flow saves but comes back `InvalidDraft`. Optional: entry `conditions`/`conditionLogic` (default: No Conditions). `$Event` is available in the flow body once `eventName`/`eventType` are set.
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
"start": {
|
|
65
|
+
"locationX": 0, "locationY": 0,
|
|
66
|
+
"triggerType": "AutomationEvent",
|
|
67
|
+
"eventName": "trgrOnEmailOpenEngagement",
|
|
68
|
+
"eventType": "trgrOnEmailOpenEngagement",
|
|
69
|
+
"connector": { "targetReference": "<first element>", "isGoTo": false }
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
*Note: the snippet above shows the trigger-identity fields only (the event string is illustrative — use the one `GET /services/data/vXX.0/flowbuilder/action/invocable-events` returns). A valid, activatable flow also needs the start `inputs[]` and flow-level `dataSpace` described under "Fill the required inputs" below.*
|
|
74
|
+
|
|
75
|
+
## Fill the required inputs — start inputs + data space
|
|
76
|
+
|
|
77
|
+
An Automation Event start SAVES even when incomplete, but the saved flow comes back **`InvalidDraft`** (cannot be activated) unless it ALSO supplies the fields below. **Saving is not validating** — emit all of these on the first save so the generated flow is activatable, not merely persistable. Discovery (describe) tells you WHICH inputs the event requires; the notes here tell you what VALUES to put in them and add the one field discovery can't surface (`dataSpace`).
|
|
78
|
+
|
|
79
|
+
| Field | Where | Required for | Value |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| `associatedContent` | start **input parameter** (STRING) | all email-engagement events | Id of the Managed Content whose engagement is monitored (the email/message content) |
|
|
82
|
+
| `specificLink` | start **input parameter** (STRING) | **email link click only** | the link to watch, or `"ANY"` to match any link |
|
|
83
|
+
| `dataSpace` | **flow-level** field (NOT a start input, so it does NOT appear in describe) | all email-engagement events | a Data Space developer name that resolves on the org (commonly `"default"`) |
|
|
84
|
+
|
|
85
|
+
**Populate start `inputs[]` here — the one AutoLaunched exception.** AutomationEvent engagement flows are AutoLaunched, yet they REQUIRE start input parameters; do NOT drop them under the general "no start inputs on AutoLaunched flows" guidance. The shape is the standard start `inputs[]` (`name` + `value`), same as a PlatformEvent start:
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
"start": {
|
|
89
|
+
"triggerType": "AutomationEvent",
|
|
90
|
+
"eventName": "trgrOnEmailLinkClickEngagement",
|
|
91
|
+
"eventType": "trgrOnEmailLinkClickEngagement",
|
|
92
|
+
"inputs": [
|
|
93
|
+
{ "name": "associatedContent", "value": { "stringValue": "<Managed Content Id>" } },
|
|
94
|
+
{ "name": "specificLink", "value": { "stringValue": "ANY" } }
|
|
95
|
+
],
|
|
96
|
+
"connector": { "targetReference": "<first element>", "isGoTo": false }
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The data space is a **flow-root** field, not a start field, and is NOT one of the event's discoverable inputs — set it yourself:
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{ "processType": "AutoLaunchedFlow", "dataSpace": "default", "start": { "...": "..." } }
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- **`associatedContent`** is required for all email-engagement events; its value is a Managed Content record Id that exists on the org.
|
|
107
|
+
- **`specificLink`** is required ONLY for the email link-click event; the other events do not take it. Use `"ANY"` to fire on any link.
|
|
108
|
+
- **`dataSpace`** must resolve to a Data Space on the target org (`"default"` is the common value). Set it on the first save — omitting it blocks activation with `DATA_SPACE_REQUIRED_FOR_FLOW_TYPE`.
|
|
109
|
+
- These require an engagement/content-provisioned org (see the provisioning note above): the Managed Content record and the Data Space must actually exist, or the flow saves as `InvalidDraft` (missing content) or fails to save at all (no Data Space backend).
|
|
110
|
+
- **No fault paths unless asked.** An `AutomationEvent` flow is a marketing flow: add a `faultConnector` or error-handling branch only when the user asks for error handling. A bounce event is an engagement trigger, not a request for error handling. See `../../shared/fault-paths/fault-paths.md` § Marketing Flows — Fault Paths Only When Asked.
|
|
111
|
+
|
|
112
|
+
## Special treatment — what discovery does NOT tell you
|
|
113
|
+
|
|
114
|
+
Discovery gives you the event's trigger string and its required inputs. These few things it does not surface, so they stay called out here:
|
|
115
|
+
|
|
116
|
+
- **Version floors (functional prerequisite):** email open / link click / bounce require API version 254+; response requires 260+. If the flow's API version is below the floor for the chosen event, that event is unavailable — describe won't flag this, so check the flow's API version.
|
|
117
|
+
- **`associatedContent` value differs by surface:** on an Automation Event *start* (this guide) it is a Managed Content Id passed as a `stringValue` (see the snippet above); on a *mid-flow* Wait Until Event it is an element reference — see `../wait/wait.md`. Do not carry one shape into the other.
|
|
118
|
+
|
|
119
|
+
For reference, the OOTB core email-engagement events you will typically see returned by `GET /services/data/vXX.0/flowbuilder/action/invocable-events` (discovery is authoritative — always use the exact string it returns):
|
|
120
|
+
|
|
121
|
+
| User intent | trigger string |
|
|
122
|
+
|---|---|
|
|
123
|
+
| Email is **opened** | `trgrOnEmailOpenEngagement` |
|
|
124
|
+
| A **link** in the email is **clicked** | `trgrOnEmailLinkClickEngagement` (the "Link" variant — not `trgrOnEmailClickEngagement`) |
|
|
125
|
+
| Email **bounces** | `trgrOnEmailBounceEngagement` |
|
|
126
|
+
| Recipient **responds** to the email | `trgrOnEmailResponseEngagement` |
|
|
127
|
+
|
|
128
|
+
## Out of scope — MCE email click (STOP and ask)
|
|
129
|
+
|
|
130
|
+
`trgrOnMceEmailClickEngagement` (Marketing Cloud Engagement email link click) is NOT part of the OOTB core-email flavor. It requires MCE provisioning and pairs only with a `SEND_TO_MCE_EMAIL` send, never the core Send Email. If the user asks for an MCE email-engagement trigger, STOP and confirm the org has MCE provisioning before proceeding — do NOT emit `trgrOnMceEmailClickEngagement` on a core-email flow.
|