@daeda/mcp-pro 0.1.28 → 0.1.30
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/dist/index.js +3610 -336
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -637,17 +637,41 @@ var ACTION_TYPE_CATALOG_ROW_SCHEMA = z6.object({
|
|
|
637
637
|
connectionType: z6.string(),
|
|
638
638
|
usageCount: z6.number(),
|
|
639
639
|
exampleActionsJson: z6.string(),
|
|
640
|
-
|
|
640
|
+
recommendedCreateExamplesJson: z6.string(),
|
|
641
|
+
fieldSchemaJson: z6.string(),
|
|
642
|
+
resourceRequirementsJson: z6.string(),
|
|
643
|
+
createGuidanceText: z6.string()
|
|
641
644
|
});
|
|
642
|
-
var
|
|
645
|
+
var ENROLLMENT_TRIGGER_CATALOG_ROW_SCHEMA = z6.object({
|
|
646
|
+
catalogId: z6.string(),
|
|
647
|
+
criteriaType: z6.string(),
|
|
648
|
+
shortcutKind: z6.string(),
|
|
643
649
|
eventTypeId: z6.string(),
|
|
644
650
|
name: z6.string(),
|
|
645
|
-
description: z6.string()
|
|
651
|
+
description: z6.string(),
|
|
652
|
+
requiresRefinementFilters: z6.boolean(),
|
|
653
|
+
refinementNote: z6.string(),
|
|
654
|
+
officialFilterTemplate: z6.string(),
|
|
655
|
+
officialFiltersExampleJson: z6.string(),
|
|
656
|
+
officialCriteriaExampleJson: z6.string(),
|
|
657
|
+
criteriaShapeJson: z6.string(),
|
|
658
|
+
triggerCategoryId: z6.string(),
|
|
659
|
+
modernCategoryId: z6.string(),
|
|
660
|
+
triggerGroupLabel: z6.string(),
|
|
661
|
+
requiredScopesJson: z6.string(),
|
|
662
|
+
requiredGatesJson: z6.string(),
|
|
663
|
+
requiredObjectTypeIdsJson: z6.string(),
|
|
664
|
+
parameterSchemaJson: z6.string(),
|
|
665
|
+
sampleWorkflowId: z6.string(),
|
|
666
|
+
sampleWorkflowName: z6.string(),
|
|
667
|
+
usageGuidance: z6.string(),
|
|
668
|
+
preferredForJson: z6.string(),
|
|
669
|
+
avoidForJson: z6.string()
|
|
646
670
|
});
|
|
647
671
|
var workflowsPayloadSchema = z6.object({
|
|
648
672
|
workflows: z6.array(WORKFLOW_ROW_SCHEMA),
|
|
649
673
|
actionTypeCatalog: z6.array(ACTION_TYPE_CATALOG_ROW_SCHEMA),
|
|
650
|
-
|
|
674
|
+
enrollmentTriggerCatalog: z6.array(ENROLLMENT_TRIGGER_CATALOG_ROW_SCHEMA)
|
|
651
675
|
});
|
|
652
676
|
var TABLE_STATEMENTS6 = [
|
|
653
677
|
`CREATE TABLE IF NOT EXISTS workflows (
|
|
@@ -678,36 +702,75 @@ var TABLE_STATEMENTS6 = [
|
|
|
678
702
|
connection_type TEXT NOT NULL,
|
|
679
703
|
usage_count INTEGER NOT NULL,
|
|
680
704
|
example_actions_json TEXT NOT NULL,
|
|
681
|
-
|
|
705
|
+
recommended_create_examples_json TEXT NOT NULL,
|
|
706
|
+
field_schema_json TEXT NOT NULL,
|
|
707
|
+
resource_requirements_json TEXT NOT NULL,
|
|
708
|
+
create_guidance_text TEXT NOT NULL
|
|
682
709
|
)`,
|
|
683
710
|
`CREATE INDEX IF NOT EXISTS idx_action_type_catalog_category ON action_type_catalog(category)`,
|
|
684
|
-
`
|
|
685
|
-
|
|
711
|
+
`DROP TABLE IF EXISTS workflow_event_types`,
|
|
712
|
+
`CREATE TABLE IF NOT EXISTS workflow_enrollment_triggers (
|
|
713
|
+
catalog_id TEXT NOT NULL PRIMARY KEY,
|
|
714
|
+
criteria_type TEXT NOT NULL,
|
|
715
|
+
shortcut_kind TEXT NOT NULL,
|
|
716
|
+
event_type_id TEXT NOT NULL,
|
|
686
717
|
name TEXT NOT NULL,
|
|
687
|
-
description TEXT NOT NULL
|
|
718
|
+
description TEXT NOT NULL,
|
|
719
|
+
requires_refinement_filters TEXT NOT NULL,
|
|
720
|
+
refinement_note TEXT NOT NULL,
|
|
721
|
+
official_filter_template TEXT NOT NULL,
|
|
722
|
+
official_filters_example_json TEXT NOT NULL,
|
|
723
|
+
official_criteria_example_json TEXT NOT NULL,
|
|
724
|
+
criteria_shape_json TEXT NOT NULL,
|
|
725
|
+
trigger_category_id TEXT NOT NULL,
|
|
726
|
+
modern_category_id TEXT NOT NULL,
|
|
727
|
+
trigger_group_label TEXT NOT NULL,
|
|
728
|
+
required_scopes_json TEXT NOT NULL,
|
|
729
|
+
required_gates_json TEXT NOT NULL,
|
|
730
|
+
required_object_type_ids_json TEXT NOT NULL,
|
|
731
|
+
parameter_schema_json TEXT NOT NULL,
|
|
732
|
+
sample_workflow_id TEXT NOT NULL,
|
|
733
|
+
sample_workflow_name TEXT NOT NULL,
|
|
734
|
+
usage_guidance TEXT NOT NULL,
|
|
735
|
+
preferred_for_json TEXT NOT NULL,
|
|
736
|
+
avoid_for_json TEXT NOT NULL
|
|
688
737
|
)`
|
|
689
738
|
];
|
|
690
739
|
var QUERY_DOCS7 = [
|
|
691
740
|
'- The "workflows" table has: workflow_id, name, description, type, flow_type, object_type_id, is_enabled, created_at, updated_at, revision_id, start_action_id, enrollment_criteria_json, suppression_list_ids_json, time_windows_json, blocked_dates_json, actions_json',
|
|
692
|
-
'- The "action_type_catalog" table has: action_type_id, name, category, connection_type, usage_count, example_actions_json, field_schema_json',
|
|
741
|
+
'- The "action_type_catalog" table has: action_type_id, name, category, connection_type, usage_count, example_actions_json, recommended_create_examples_json, field_schema_json, resource_requirements_json, create_guidance_text',
|
|
693
742
|
"- actions_json contains synced workflow graphs for portal reference, but may include unsupported or portal-specific actions. Do not use it to discover action types for new workflows.",
|
|
694
743
|
"- Filter active workflows: WHERE is_enabled = 'true'",
|
|
695
744
|
"- Use json_extract_string() to query JSON fields like enrollment_criteria_json or actions_json",
|
|
696
745
|
"- Query action_type_catalog to discover supported workflow action types before constructing workflows",
|
|
697
746
|
"- category is 'built_in' for the supported workflow action types surfaced to the LLM",
|
|
698
|
-
"- field_schema_json documents required fields for supported actions; example_actions_json
|
|
747
|
+
"- field_schema_json documents required fields for supported actions; example_actions_json contains curated fixture-derived examples for reference",
|
|
748
|
+
"- Use recommended_create_examples_json as the preferred template source when constructing new workflow actions",
|
|
749
|
+
"- Use resource_requirements_json to see whether an action needs IDs like listId, user_ids, flow_id, sequenceId, subscriptionId, inbox IDs, or association label IDs before creation",
|
|
750
|
+
"- create_guidance_text captures action-specific creation tips discovered through live validation",
|
|
699
751
|
"- Workflow suppression lists can be cross-referenced: json_extract_string(workflows.suppression_list_ids_json, '$[0]') = lists.list_id",
|
|
700
|
-
'- The "
|
|
701
|
-
"- Query
|
|
752
|
+
'- The "workflow_enrollment_triggers" table has: catalog_id, criteria_type, shortcut_kind, event_type_id, name, description, requires_refinement_filters, refinement_note, official_filter_template, official_filters_example_json, official_criteria_example_json, criteria_shape_json, trigger_category_id, modern_category_id, trigger_group_label, required_scopes_json, required_gates_json, required_object_type_ids_json, parameter_schema_json, sample_workflow_id, sample_workflow_name, usage_guidance, preferred_for_json, avoid_for_json',
|
|
753
|
+
"- Query workflow_enrollment_triggers to find valid eventTypeId values for EVENT_BASED enrollment criteria UNIFIED_EVENTS branches by filtering criteria_type = 'EVENT_BASED' and shortcut_kind = 'EVENT_TRIGGER_SHORTCUT'",
|
|
702
754
|
"- IMPORTANT: eventTypeId identifies the EVENT (e.g. '4-655002' for property change), NOT the CRM object type (e.g. '0-3' for deals)",
|
|
703
|
-
"-
|
|
704
|
-
"-
|
|
705
|
-
"-
|
|
755
|
+
"- Query workflow_enrollment_triggers when using create_workflow/update_workflow enrollment_trigger shortcuts keyed by catalog_id, but only for rows where shortcut_kind = 'EVENT_TRIGGER_SHORTCUT'",
|
|
756
|
+
"- catalog_id maps browser trigger catalog entries and synthetic enrollment examples to confirmed or curated API payload templates",
|
|
757
|
+
"- criteria_type tells you whether the row is EVENT_BASED, LIST_BASED, or MANUAL",
|
|
758
|
+
"- shortcut_kind = 'EVENT_TRIGGER_SHORTCUT' means the row can be used with enrollment_trigger; shortcut_kind = 'CRITERIA_EXAMPLE' means use it as a reference when hand-authoring enrollment_criteria",
|
|
759
|
+
"- event_type_id is only meaningful for EVENT_BASED rows; blank values mean the row is a LIST_BASED or MANUAL reference example",
|
|
760
|
+
"- requires_refinement_filters = 'true' means the event needs event-specific PROPERTY filters inside the event branch; read refinement_note and official_filters_example_json before hand-authoring criteria",
|
|
761
|
+
"- official_filter_template identifies which confirmed payload family HubSpot accepted for that trigger",
|
|
762
|
+
"- official_filters_example_json contains the confirmed event-branch refinement filters, if any",
|
|
763
|
+
"- official_criteria_example_json contains a full enrollmentCriteria example for the row's criteria_type",
|
|
764
|
+
"- criteria_shape_json contains a reusable skeleton with placeholders for hand-authoring enrollment_criteria",
|
|
765
|
+
"- parameter_schema_json describes the extra fields required by each enrollment_trigger shortcut; it will be empty for LIST_BASED and MANUAL reference rows",
|
|
766
|
+
"- required_object_type_ids_json constrains which workflow object_type_id values can use the trigger",
|
|
767
|
+
"- sample_workflow_id and sample_workflow_name point to a real harvested workflow definition for reference",
|
|
768
|
+
"- usage_guidance, preferred_for_json, and avoid_for_json explain when to choose LIST_BASED, MANUAL, or EVENT_BASED patterns"
|
|
706
769
|
];
|
|
707
770
|
var workflowsPlugin = {
|
|
708
771
|
name: "workflows",
|
|
709
|
-
schemaVersion:
|
|
710
|
-
tableNames: ["workflows", "action_type_catalog", "
|
|
772
|
+
schemaVersion: 9,
|
|
773
|
+
tableNames: ["workflows", "action_type_catalog", "workflow_enrollment_triggers"],
|
|
711
774
|
ddlStatements: TABLE_STATEMENTS6,
|
|
712
775
|
initStrategy: "eager",
|
|
713
776
|
queryDocs: QUERY_DOCS7,
|
|
@@ -722,7 +785,10 @@ var workflowsPlugin = {
|
|
|
722
785
|
`SELECT COUNT(*) as count FROM action_type_catalog`
|
|
723
786
|
);
|
|
724
787
|
const eventTypeReader = await conn.runAndReadAll(
|
|
725
|
-
`SELECT COUNT(
|
|
788
|
+
`SELECT COUNT(DISTINCT event_type_id) as count FROM workflow_enrollment_triggers WHERE event_type_id != ''`
|
|
789
|
+
);
|
|
790
|
+
const enrollmentTriggerReader = await conn.runAndReadAll(
|
|
791
|
+
`SELECT COUNT(*) as count FROM workflow_enrollment_triggers`
|
|
726
792
|
);
|
|
727
793
|
const workflowCount = Number(
|
|
728
794
|
workflowsReader.getRowObjects()[0].count
|
|
@@ -733,6 +799,9 @@ var workflowsPlugin = {
|
|
|
733
799
|
const eventTypeCount = Number(
|
|
734
800
|
eventTypeReader.getRowObjects()[0].count
|
|
735
801
|
);
|
|
802
|
+
const enrollmentTriggerCount = Number(
|
|
803
|
+
enrollmentTriggerReader.getRowObjects()[0].count
|
|
804
|
+
);
|
|
736
805
|
let syncError = null;
|
|
737
806
|
try {
|
|
738
807
|
const errorReader = await conn.runAndReadAll(
|
|
@@ -751,6 +820,7 @@ var workflowsPlugin = {
|
|
|
751
820
|
workflowCount,
|
|
752
821
|
actionTypeCount,
|
|
753
822
|
eventTypeCount,
|
|
823
|
+
enrollmentTriggerCount,
|
|
754
824
|
...syncError ? { syncError } : {}
|
|
755
825
|
}
|
|
756
826
|
};
|
|
@@ -784,14 +854,38 @@ var workflowsPlugin = {
|
|
|
784
854
|
parsed.actionTypeCatalog.map((row) => row.connectionType),
|
|
785
855
|
parsed.actionTypeCatalog.map((row) => String(row.usageCount)),
|
|
786
856
|
parsed.actionTypeCatalog.map((row) => row.exampleActionsJson),
|
|
787
|
-
parsed.actionTypeCatalog.map((row) => row.
|
|
857
|
+
parsed.actionTypeCatalog.map((row) => row.recommendedCreateExamplesJson),
|
|
858
|
+
parsed.actionTypeCatalog.map((row) => row.fieldSchemaJson),
|
|
859
|
+
parsed.actionTypeCatalog.map((row) => row.resourceRequirementsJson),
|
|
860
|
+
parsed.actionTypeCatalog.map((row) => row.createGuidanceText)
|
|
788
861
|
])
|
|
789
862
|
),
|
|
790
863
|
Effect7.flatMap(
|
|
791
|
-
() => replaceTable("
|
|
792
|
-
parsed.
|
|
793
|
-
parsed.
|
|
794
|
-
parsed.
|
|
864
|
+
() => replaceTable("workflow_enrollment_triggers", [
|
|
865
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.catalogId),
|
|
866
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.criteriaType),
|
|
867
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.shortcutKind),
|
|
868
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.eventTypeId),
|
|
869
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.name),
|
|
870
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.description),
|
|
871
|
+
parsed.enrollmentTriggerCatalog.map((row) => String(row.requiresRefinementFilters)),
|
|
872
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.refinementNote),
|
|
873
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.officialFilterTemplate),
|
|
874
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.officialFiltersExampleJson),
|
|
875
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.officialCriteriaExampleJson),
|
|
876
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.criteriaShapeJson),
|
|
877
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.triggerCategoryId),
|
|
878
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.modernCategoryId),
|
|
879
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.triggerGroupLabel),
|
|
880
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.requiredScopesJson),
|
|
881
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.requiredGatesJson),
|
|
882
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.requiredObjectTypeIdsJson),
|
|
883
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.parameterSchemaJson),
|
|
884
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.sampleWorkflowId),
|
|
885
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.sampleWorkflowName),
|
|
886
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.usageGuidance),
|
|
887
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.preferredForJson),
|
|
888
|
+
parsed.enrollmentTriggerCatalog.map((row) => row.avoidForJson)
|
|
795
889
|
])
|
|
796
890
|
),
|
|
797
891
|
Effect7.asVoid
|
|
@@ -1618,6 +1712,20 @@ async function openDatabaseConnection(portalId, _encryptionKey, options2) {
|
|
|
1618
1712
|
if (mode === "read_only" && !fs3.existsSync(sourcePath)) {
|
|
1619
1713
|
throw new Error(`Replica database not found for portal ${portalId}: ${sourcePath}`);
|
|
1620
1714
|
}
|
|
1715
|
+
if (mode === "read_only") {
|
|
1716
|
+
const instance2 = await DuckDBInstance.create(":memory:");
|
|
1717
|
+
const connection2 = await instance2.connect();
|
|
1718
|
+
const escapedPath = escapeSqlString(sourcePath);
|
|
1719
|
+
await connection2.run(`ATTACH '${escapedPath}' AS portal_replica (READ_ONLY)`);
|
|
1720
|
+
await connection2.run("USE portal_replica");
|
|
1721
|
+
return {
|
|
1722
|
+
instance: instance2,
|
|
1723
|
+
connection: connection2,
|
|
1724
|
+
mode,
|
|
1725
|
+
sourcePath,
|
|
1726
|
+
replicaFingerprint: getReplicaFingerprint(portalId)
|
|
1727
|
+
};
|
|
1728
|
+
}
|
|
1621
1729
|
const instance = await DuckDBInstance.create(sourcePath);
|
|
1622
1730
|
const connection = await instance.connect();
|
|
1623
1731
|
return {
|
|
@@ -9063,15 +9171,15 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9063
9171
|
"0-3": {
|
|
9064
9172
|
actionTypeId: "0-3",
|
|
9065
9173
|
name: "Create task",
|
|
9066
|
-
description: "Create a new HubSpot task for the enrolled record",
|
|
9174
|
+
description: "Create a new HubSpot task for the enrolled record. IMPORTANT: on CONTACT_FLOW, HubSpot may return HTTP 500 unless the task explicitly associates to the enrolled contact using associations + use_explicit_associations.",
|
|
9067
9175
|
connectionType: "SINGLE_CONNECTION",
|
|
9068
9176
|
fields: [
|
|
9069
9177
|
{ name: "task_type", type: "string", required: true, description: "Task type: TODO" },
|
|
9070
9178
|
{ name: "subject", type: "string", required: true, description: "Task subject line" },
|
|
9071
|
-
{ name: "body", type: "string", required:
|
|
9179
|
+
{ name: "body", type: "string", required: true, description: "Task body (HTML)" },
|
|
9072
9180
|
{ name: "priority", type: "string", required: false, description: "Priority: NONE, LOW, MEDIUM, HIGH" },
|
|
9073
|
-
{ name: "associations", type: "array", required: false, description: "Association targets" },
|
|
9074
|
-
{ name: "use_explicit_associations", type: "string", required: false, description: "'true' to use explicit associations" }
|
|
9181
|
+
{ name: "associations", type: "array", required: false, description: "Association targets. On CONTACT_FLOW, use [{ target: { associationCategory: 'HUBSPOT_DEFINED', associationTypeId: 204 }, value: { type: 'ENROLLED_OBJECT' } }]." },
|
|
9182
|
+
{ name: "use_explicit_associations", type: "string", required: false, description: "'true' to use explicit associations. On CONTACT_FLOW create-task actions, set this to 'true' with the enrolled-contact association to avoid HubSpot HTTP 500 errors." }
|
|
9075
9183
|
]
|
|
9076
9184
|
},
|
|
9077
9185
|
"0-4": {
|
|
@@ -9089,7 +9197,7 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9089
9197
|
description: "Set, edit, copy, or clear property values for enrolled or associated records",
|
|
9090
9198
|
connectionType: "SINGLE_CONNECTION",
|
|
9091
9199
|
fields: [
|
|
9092
|
-
{ name: "
|
|
9200
|
+
{ name: "property_name", type: "string", required: true, description: "Internal property name to set" },
|
|
9093
9201
|
{ name: "value", type: "object", required: true, description: "MUST include type: 'STATIC_VALUE' when setting a value, e.g. { type: 'STATIC_VALUE', staticValue: 'value' }. Omitting type causes HTTP 500." },
|
|
9094
9202
|
{ name: "association", type: "object", required: false, description: "Association spec if setting on an associated record: { associationCategory: 'HUBSPOT_DEFINED', associationTypeId: <number> }" }
|
|
9095
9203
|
]
|
|
@@ -9143,12 +9251,11 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9143
9251
|
"0-15": {
|
|
9144
9252
|
actionTypeId: "0-15",
|
|
9145
9253
|
name: "Go to workflow",
|
|
9146
|
-
description: "Enroll record in another workflow of the same type.
|
|
9254
|
+
description: "Enroll the record in another workflow of the same type.",
|
|
9147
9255
|
connectionType: "SINGLE_CONNECTION",
|
|
9148
9256
|
fields: [
|
|
9149
|
-
{ name: "flow_id", type: "string", required: true, description: "ID of the target workflow
|
|
9150
|
-
]
|
|
9151
|
-
apiIncompatible: true
|
|
9257
|
+
{ name: "flow_id", type: "string", required: true, description: "ID of the target workflow" }
|
|
9258
|
+
]
|
|
9152
9259
|
},
|
|
9153
9260
|
"0-18": {
|
|
9154
9261
|
actionTypeId: "0-18",
|
|
@@ -9178,10 +9285,11 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9178
9285
|
"0-29": {
|
|
9179
9286
|
actionTypeId: "0-29",
|
|
9180
9287
|
name: "Delay until an event occurs",
|
|
9181
|
-
description: "Delay enrolled records until a specified event occurs.
|
|
9288
|
+
description: "Delay enrolled records until a specified event occurs.",
|
|
9182
9289
|
connectionType: "SINGLE_CONNECTION",
|
|
9183
|
-
fields: [
|
|
9184
|
-
|
|
9290
|
+
fields: [
|
|
9291
|
+
{ name: "expiration_minutes", type: "string", required: true, description: "How long the workflow should wait for the event before timing out" }
|
|
9292
|
+
]
|
|
9185
9293
|
},
|
|
9186
9294
|
"0-30": {
|
|
9187
9295
|
actionTypeId: "0-30",
|
|
@@ -9195,7 +9303,10 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9195
9303
|
name: "Set marketing contact status",
|
|
9196
9304
|
description: "Mark contact as marketing or non-marketing",
|
|
9197
9305
|
connectionType: "SINGLE_CONNECTION",
|
|
9198
|
-
fields: [
|
|
9306
|
+
fields: [
|
|
9307
|
+
{ name: "targetContact", type: "string", required: true, description: "Target contact token or fetched object reference, usually '{{ enrolled_object }}' in contact workflows" },
|
|
9308
|
+
{ name: "marketableType", type: "string", required: true, description: "Marketing status to apply, e.g. 'MARKETABLE' or 'MARKETABLE_UNTIL_RENEWAL'" }
|
|
9309
|
+
]
|
|
9199
9310
|
},
|
|
9200
9311
|
"0-35": {
|
|
9201
9312
|
actionTypeId: "0-35",
|
|
@@ -9204,9 +9315,9 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9204
9315
|
connectionType: "SINGLE_CONNECTION",
|
|
9205
9316
|
fields: [
|
|
9206
9317
|
{ name: "date", type: "object", required: true, description: "Date spec \u2014 MUST include type: { type: 'STATIC_VALUE', staticValue: '<unix ms>' } or { type: 'OBJECT_PROPERTY', propertyName: '<name>' }. Omitting type causes HTTP 500." },
|
|
9207
|
-
{ name: "delta", type: "string", required:
|
|
9208
|
-
{ name: "time_unit", type: "string", required:
|
|
9209
|
-
{ name: "time_of_day", type: "object", required: true, description: "Required time of day: { hour: number, minute: number }. HubSpot UI rejects delay-until-date actions without it." }
|
|
9318
|
+
{ name: "delta", type: "string", required: true, description: "Offset from the date (e.g. '0')" },
|
|
9319
|
+
{ name: "time_unit", type: "string", required: true, description: "Unit for delta: DAYS, HOURS, MINUTES" },
|
|
9320
|
+
{ name: "time_of_day", type: "object", required: true, description: "Required time of day: { hour: number, minute: number }. HubSpot UI rejects delay-until-date actions without it. If the workflow continues after this delay, the next action should be a STATIC_BRANCH on hs_delay_status rather than a direct business-action connection." }
|
|
9210
9321
|
]
|
|
9211
9322
|
},
|
|
9212
9323
|
"0-63809083": {
|
|
@@ -9273,35 +9384,49 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9273
9384
|
name: "Create associations",
|
|
9274
9385
|
description: "Create new CRM record associations",
|
|
9275
9386
|
connectionType: "SINGLE_CONNECTION",
|
|
9276
|
-
fields: [
|
|
9387
|
+
fields: [
|
|
9388
|
+
{ name: "fromObjectType", type: "string", required: true, description: "HubSpot object type ID of the enrolled record, e.g. '0-3' for deals" },
|
|
9389
|
+
{ name: "toObjectType", type: "string", required: true, description: "HubSpot object type ID of the associated record to create links to, e.g. '0-1' for contacts" },
|
|
9390
|
+
{ name: "createAssociationOnly", type: "string", required: true, description: "'true' or 'false' to control whether HubSpot should only create missing associations" },
|
|
9391
|
+
{ name: "labelToApply", type: "string", required: true, description: "Association label type ID to apply to the created association" },
|
|
9392
|
+
{ name: "matchBy", type: "string", required: true, description: "Association matching mode, e.g. 'fromAndToObjects'" },
|
|
9393
|
+
{ name: "enrolledObjectPropertyNameToMatch", type: "string", required: true, description: "Property name on the enrolled object used for matching. Prefer bare property names over 'objectTypeId/propertyName' prefixes." },
|
|
9394
|
+
{ name: "associatedObjectPropertyNameToMatch", type: "string", required: true, description: "Property name on the associated object used for matching. Prefer bare property names over 'objectTypeId/propertyName' prefixes." }
|
|
9395
|
+
]
|
|
9277
9396
|
},
|
|
9278
9397
|
"0-73444249": {
|
|
9279
9398
|
actionTypeId: "0-73444249",
|
|
9280
9399
|
name: "Apply association labels",
|
|
9281
9400
|
description: "Add a label to already-associated CRM records",
|
|
9282
9401
|
connectionType: "SINGLE_CONNECTION",
|
|
9283
|
-
fields: [
|
|
9284
|
-
|
|
9285
|
-
|
|
9286
|
-
|
|
9287
|
-
|
|
9288
|
-
|
|
9289
|
-
connectionType: "SINGLE_CONNECTION",
|
|
9290
|
-
fields: []
|
|
9402
|
+
fields: [
|
|
9403
|
+
{ name: "fromObjectType", type: "string", required: true, description: "HubSpot object type ID on the source side of the association pair" },
|
|
9404
|
+
{ name: "toObjectType", type: "string", required: true, description: "HubSpot object type ID on the destination side of the association pair" },
|
|
9405
|
+
{ name: "labelToApply", type: "string", required: true, description: "Association label type ID to apply" },
|
|
9406
|
+
{ name: "applyLabelToAllAssociatedObjects", type: "string", required: true, description: "'true' or 'false' to control whether the label applies to all associated objects" }
|
|
9407
|
+
]
|
|
9291
9408
|
},
|
|
9292
9409
|
"0-61139476": {
|
|
9293
9410
|
actionTypeId: "0-61139476",
|
|
9294
9411
|
name: "Remove association labels",
|
|
9295
9412
|
description: "Clear all current association labels",
|
|
9296
9413
|
connectionType: "SINGLE_CONNECTION",
|
|
9297
|
-
fields: [
|
|
9414
|
+
fields: [
|
|
9415
|
+
{ name: "fromObjectType", type: "string", required: true, description: "HubSpot object type ID on the source side of the association pair" },
|
|
9416
|
+
{ name: "toObjectType", type: "string", required: true, description: "HubSpot object type ID on the destination side of the association pair" },
|
|
9417
|
+
{ name: "labelToRemove", type: "string", required: true, description: "Association label type ID to remove" },
|
|
9418
|
+
{ name: "fullyDissociate", type: "string", required: true, description: "'true' or 'false' to control whether HubSpot should fully remove the association" }
|
|
9419
|
+
]
|
|
9298
9420
|
},
|
|
9299
9421
|
"0-169425243": {
|
|
9300
9422
|
actionTypeId: "0-169425243",
|
|
9301
9423
|
name: "Create note",
|
|
9302
|
-
description: "Create and associate a note with the enrolled record
|
|
9424
|
+
description: "Create and associate a note with the enrolled record",
|
|
9303
9425
|
connectionType: "SINGLE_CONNECTION",
|
|
9304
|
-
fields: [
|
|
9426
|
+
fields: [
|
|
9427
|
+
{ name: "note_body", type: "string", required: true, description: "HTML note body content" },
|
|
9428
|
+
{ name: "pin_note", type: "string", required: true, description: "'true' or 'false' to pin the created note" }
|
|
9429
|
+
]
|
|
9305
9430
|
},
|
|
9306
9431
|
"0-44475148": {
|
|
9307
9432
|
actionTypeId: "0-44475148",
|
|
@@ -9316,9 +9441,11 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9316
9441
|
"0-225935194": {
|
|
9317
9442
|
actionTypeId: "0-225935194",
|
|
9318
9443
|
name: "Validate and format phone number",
|
|
9319
|
-
description: "Format phone numbers for calling compatibility
|
|
9444
|
+
description: "Format phone numbers for calling compatibility",
|
|
9320
9445
|
connectionType: "SINGLE_CONNECTION",
|
|
9321
|
-
fields: [
|
|
9446
|
+
fields: [
|
|
9447
|
+
{ name: "defaultCountryCodeMode", type: "string", required: true, description: "Default country code mode, e.g. 'static_default_country_code', 'dynamic_default_country_code', or 'none'" }
|
|
9448
|
+
]
|
|
9322
9449
|
},
|
|
9323
9450
|
"0-177946906": {
|
|
9324
9451
|
actionTypeId: "0-177946906",
|
|
@@ -9409,14 +9536,18 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9409
9536
|
name: "Stop tracking intent signals",
|
|
9410
9537
|
description: "Deactivate ongoing intent signals tracking and enrichment",
|
|
9411
9538
|
connectionType: "SINGLE_CONNECTION",
|
|
9412
|
-
fields: [
|
|
9539
|
+
fields: [
|
|
9540
|
+
{ name: "targetCompany", type: "string", required: true, description: "Target company token or fetched object reference, usually '{{ enrolled_object }}' in company workflows" }
|
|
9541
|
+
]
|
|
9413
9542
|
},
|
|
9414
9543
|
"0-219160146": {
|
|
9415
9544
|
actionTypeId: "0-219160146",
|
|
9416
9545
|
name: "Track intent signals",
|
|
9417
9546
|
description: "Activate intent signal tracking and enrichment",
|
|
9418
9547
|
connectionType: "SINGLE_CONNECTION",
|
|
9419
|
-
fields: [
|
|
9548
|
+
fields: [
|
|
9549
|
+
{ name: "targetCompany", type: "string", required: true, description: "Target company token or fetched object reference, usually '{{ enrolled_object }}' in company workflows" }
|
|
9550
|
+
]
|
|
9420
9551
|
},
|
|
9421
9552
|
"1-179507819": {
|
|
9422
9553
|
actionTypeId: "1-179507819",
|
|
@@ -9442,6 +9573,180 @@ var BUILT_IN_ACTION_TYPES = {
|
|
|
9442
9573
|
};
|
|
9443
9574
|
var isApiIncompatibleActionType = (actionTypeId) => BUILT_IN_ACTION_TYPES[actionTypeId]?.apiIncompatible === true;
|
|
9444
9575
|
|
|
9576
|
+
// ../shared/pure/workflow-action-create-metadata.ts
|
|
9577
|
+
var WORKFLOW_ACTION_CREATE_METADATA_BY_ID = {
|
|
9578
|
+
"0-3": {
|
|
9579
|
+
resourceRequirements: [
|
|
9580
|
+
{
|
|
9581
|
+
fieldName: "associations",
|
|
9582
|
+
resourceKind: "association_label",
|
|
9583
|
+
resolutionMode: "not_exposed",
|
|
9584
|
+
sourceHint: "Use the enrolled object association payload for contact workflows",
|
|
9585
|
+
notes: "For CONTACT_FLOW task actions, HubSpot may return HTTP 500 unless the task explicitly associates to the enrolled contact via associationTypeId 204 and value.type ENROLLED_OBJECT."
|
|
9586
|
+
}
|
|
9587
|
+
],
|
|
9588
|
+
createGuidanceText: "For CONTACT_FLOW create-task actions, include associations with target { associationCategory: 'HUBSPOT_DEFINED', associationTypeId: 204 }, value { type: 'ENROLLED_OBJECT' }, and use_explicit_associations: 'true'. Omitting these can cause HubSpot to return HTTP 500 even when task_type, subject, and body are present."
|
|
9589
|
+
},
|
|
9590
|
+
"0-8": {
|
|
9591
|
+
resourceRequirements: [
|
|
9592
|
+
{
|
|
9593
|
+
fieldName: "user_ids",
|
|
9594
|
+
resourceKind: "user",
|
|
9595
|
+
resolutionMode: "queryable",
|
|
9596
|
+
sourceHint: "owners.user_id",
|
|
9597
|
+
notes: "Use HubSpot user IDs from the owners table user_id column, not owner_id."
|
|
9598
|
+
}
|
|
9599
|
+
],
|
|
9600
|
+
createGuidanceText: "Use minimal notification payloads and omit owner_properties unless you have a specific reason to target owners dynamically."
|
|
9601
|
+
},
|
|
9602
|
+
"0-9": {
|
|
9603
|
+
resourceRequirements: [
|
|
9604
|
+
{
|
|
9605
|
+
fieldName: "user_ids",
|
|
9606
|
+
resourceKind: "user",
|
|
9607
|
+
resolutionMode: "queryable",
|
|
9608
|
+
sourceHint: "owners.user_id",
|
|
9609
|
+
notes: "Use HubSpot user IDs from the owners table user_id column, not owner_id."
|
|
9610
|
+
}
|
|
9611
|
+
],
|
|
9612
|
+
createGuidanceText: "Use minimal notification payloads and omit owner_properties unless you have a specific reason to target owners dynamically."
|
|
9613
|
+
},
|
|
9614
|
+
"0-11": {
|
|
9615
|
+
resourceRequirements: [
|
|
9616
|
+
{
|
|
9617
|
+
fieldName: "user_ids",
|
|
9618
|
+
resourceKind: "user",
|
|
9619
|
+
resolutionMode: "queryable",
|
|
9620
|
+
sourceHint: "owners.user_id",
|
|
9621
|
+
notes: "CONTACT_FLOW requires target_property and overwrite_current_owner in addition to user_ids."
|
|
9622
|
+
}
|
|
9623
|
+
],
|
|
9624
|
+
createGuidanceText: "On CONTACT_FLOW, always send user_ids, target_property, and overwrite_current_owner together. Use owners.user_id values, never owner_id."
|
|
9625
|
+
},
|
|
9626
|
+
"0-15": {
|
|
9627
|
+
resourceRequirements: [
|
|
9628
|
+
{
|
|
9629
|
+
fieldName: "flow_id",
|
|
9630
|
+
resourceKind: "workflow",
|
|
9631
|
+
resolutionMode: "not_exposed",
|
|
9632
|
+
sourceHint: "HubSpot workflow ID",
|
|
9633
|
+
notes: "Target workflow should match the current workflow type."
|
|
9634
|
+
}
|
|
9635
|
+
],
|
|
9636
|
+
createGuidanceText: "Use a known target workflow ID of the same workflow type. Do not leave flow_id empty."
|
|
9637
|
+
},
|
|
9638
|
+
"0-35": {
|
|
9639
|
+
resourceRequirements: [],
|
|
9640
|
+
createGuidanceText: "When using STATIC_VALUE dates, send a future Unix-milliseconds timestamp. time_of_day is required for reliable creation. If the delay action continues to another step, route it into a STATIC_BRANCH that reads inputValue { actionId: '<delay_action_id>', dataKey: 'hs_delay_status', type: 'FIELD_DATA' } and continues from the DATE_MET_AS_PLANNED branch instead of connecting directly to the next business action."
|
|
9641
|
+
},
|
|
9642
|
+
"0-14": {
|
|
9643
|
+
resourceRequirements: [],
|
|
9644
|
+
createGuidanceText: "Prefer standard object types and explicit STATIC_VALUE property payloads for creation examples. Avoid portal-specific custom object IDs in default templates."
|
|
9645
|
+
},
|
|
9646
|
+
"0-63809083": {
|
|
9647
|
+
resourceRequirements: [
|
|
9648
|
+
{
|
|
9649
|
+
fieldName: "listId",
|
|
9650
|
+
resourceKind: "list",
|
|
9651
|
+
resolutionMode: "queryable",
|
|
9652
|
+
sourceHint: "lists.list_id"
|
|
9653
|
+
}
|
|
9654
|
+
],
|
|
9655
|
+
createGuidanceText: "Resolve listId from the lists table before creating the workflow."
|
|
9656
|
+
},
|
|
9657
|
+
"0-63863438": {
|
|
9658
|
+
resourceRequirements: [
|
|
9659
|
+
{
|
|
9660
|
+
fieldName: "listId",
|
|
9661
|
+
resourceKind: "list",
|
|
9662
|
+
resolutionMode: "queryable",
|
|
9663
|
+
sourceHint: "lists.list_id"
|
|
9664
|
+
}
|
|
9665
|
+
],
|
|
9666
|
+
createGuidanceText: "Resolve listId from the lists table before creating the workflow."
|
|
9667
|
+
},
|
|
9668
|
+
"0-43347357": {
|
|
9669
|
+
resourceRequirements: [
|
|
9670
|
+
{
|
|
9671
|
+
fieldName: "subscriptionId",
|
|
9672
|
+
resourceKind: "subscription_definition",
|
|
9673
|
+
resolutionMode: "not_exposed",
|
|
9674
|
+
sourceHint: "HubSpot communication subscription definition ID"
|
|
9675
|
+
}
|
|
9676
|
+
],
|
|
9677
|
+
createGuidanceText: "Use a real communication subscription definition ID. targetContact can often be '{{ enrolled_object }}' for contact workflows."
|
|
9678
|
+
},
|
|
9679
|
+
"0-46510720": {
|
|
9680
|
+
resourceRequirements: [
|
|
9681
|
+
{
|
|
9682
|
+
fieldName: "sequenceId",
|
|
9683
|
+
resourceKind: "sequence",
|
|
9684
|
+
resolutionMode: "not_exposed",
|
|
9685
|
+
sourceHint: "HubSpot sequence ID"
|
|
9686
|
+
},
|
|
9687
|
+
{
|
|
9688
|
+
fieldName: "userId",
|
|
9689
|
+
resourceKind: "user",
|
|
9690
|
+
resolutionMode: "queryable",
|
|
9691
|
+
sourceHint: "owners.user_id",
|
|
9692
|
+
notes: "Only needed when senderType is SPECIFIC_USER."
|
|
9693
|
+
}
|
|
9694
|
+
],
|
|
9695
|
+
createGuidanceText: "Use a real sequenceId. Prefer CONTACT_OWNER plus contactOwnerProperty for generic templates, or SPECIFIC_USER plus a valid owners.user_id."
|
|
9696
|
+
},
|
|
9697
|
+
"0-63189541": {
|
|
9698
|
+
resourceRequirements: [
|
|
9699
|
+
{
|
|
9700
|
+
fieldName: "labelToApply",
|
|
9701
|
+
resourceKind: "association_label",
|
|
9702
|
+
resolutionMode: "partially_queryable",
|
|
9703
|
+
sourceHint: "Association label typeId",
|
|
9704
|
+
notes: "May come from existing association labels or a label created earlier in the same plan."
|
|
9705
|
+
}
|
|
9706
|
+
],
|
|
9707
|
+
createGuidanceText: "For match fields, prefer bare property names over 'objectTypeId/propertyName' prefixes in create templates."
|
|
9708
|
+
},
|
|
9709
|
+
"0-73444249": {
|
|
9710
|
+
resourceRequirements: [
|
|
9711
|
+
{
|
|
9712
|
+
fieldName: "labelToApply",
|
|
9713
|
+
resourceKind: "association_label",
|
|
9714
|
+
resolutionMode: "partially_queryable",
|
|
9715
|
+
sourceHint: "Association label typeId"
|
|
9716
|
+
}
|
|
9717
|
+
],
|
|
9718
|
+
createGuidanceText: "Use an existing association label typeId for the relevant object pair."
|
|
9719
|
+
},
|
|
9720
|
+
"0-61139476": {
|
|
9721
|
+
resourceRequirements: [
|
|
9722
|
+
{
|
|
9723
|
+
fieldName: "labelToRemove",
|
|
9724
|
+
resourceKind: "association_label",
|
|
9725
|
+
resolutionMode: "partially_queryable",
|
|
9726
|
+
sourceHint: "Association label typeId"
|
|
9727
|
+
}
|
|
9728
|
+
],
|
|
9729
|
+
createGuidanceText: "Use an existing association label typeId for the relevant object pair."
|
|
9730
|
+
},
|
|
9731
|
+
"0-44475148": {
|
|
9732
|
+
resourceRequirements: [
|
|
9733
|
+
{
|
|
9734
|
+
fieldName: "Target Inbox",
|
|
9735
|
+
resourceKind: "inbox",
|
|
9736
|
+
resolutionMode: "not_exposed",
|
|
9737
|
+
sourceHint: "HubSpot conversation inbox ID"
|
|
9738
|
+
},
|
|
9739
|
+
{
|
|
9740
|
+
fieldName: "Conversation User",
|
|
9741
|
+
resourceKind: "user",
|
|
9742
|
+
resolutionMode: "queryable",
|
|
9743
|
+
sourceHint: "owners.user_id"
|
|
9744
|
+
}
|
|
9745
|
+
],
|
|
9746
|
+
createGuidanceText: "Use a real inbox ID and a real HubSpot user ID. Conversation User should be a HubSpot user ID, not an owner ID."
|
|
9747
|
+
}
|
|
9748
|
+
};
|
|
9749
|
+
|
|
9445
9750
|
// ../shared/pure/supported-workflow-actions.ts
|
|
9446
9751
|
var SUPPORTED_WORKFLOW_ACTION_KEYS = Object.keys(
|
|
9447
9752
|
WorkflowActionSchemasByDefinitionKey
|
|
@@ -9473,166 +9778,2666 @@ var SUPPORTED_WORKFLOW_ACTION_TYPES = SUPPORTED_WORKFLOW_ACTION_KEYS.map((action
|
|
|
9473
9778
|
required: true,
|
|
9474
9779
|
description: "Label for the fallback branch when no static branch value matches."
|
|
9475
9780
|
}
|
|
9476
|
-
]
|
|
9781
|
+
],
|
|
9782
|
+
resourceRequirements: [],
|
|
9783
|
+
createGuidanceText: "Use STATIC_BRANCH only when you need branching. The branch action references a prior action output via inputValue."
|
|
9477
9784
|
};
|
|
9478
9785
|
}
|
|
9479
9786
|
const builtInActionType = BUILT_IN_ACTION_TYPES[actionTypeId];
|
|
9480
9787
|
if (!builtInActionType) {
|
|
9481
9788
|
throw new Error(`Missing built-in metadata for supported workflow action '${actionTypeId}'`);
|
|
9482
9789
|
}
|
|
9790
|
+
const createMetadata = WORKFLOW_ACTION_CREATE_METADATA_BY_ID[actionTypeId];
|
|
9483
9791
|
return {
|
|
9484
9792
|
actionTypeId,
|
|
9485
9793
|
name: builtInActionType.name,
|
|
9486
9794
|
description: builtInActionType.description,
|
|
9487
9795
|
category: "built_in",
|
|
9488
9796
|
connectionType: builtInActionType.connectionType,
|
|
9489
|
-
fields: builtInActionType.fields
|
|
9797
|
+
fields: builtInActionType.fields,
|
|
9798
|
+
resourceRequirements: createMetadata?.resourceRequirements ?? [],
|
|
9799
|
+
createGuidanceText: createMetadata?.createGuidanceText ?? ""
|
|
9490
9800
|
};
|
|
9491
9801
|
});
|
|
9492
9802
|
var SUPPORTED_WORKFLOW_ACTION_TYPES_BY_ID = Object.fromEntries(
|
|
9493
9803
|
SUPPORTED_WORKFLOW_ACTION_TYPES.map((actionType) => [actionType.actionTypeId, actionType])
|
|
9494
9804
|
);
|
|
9495
9805
|
|
|
9496
|
-
// ../shared/
|
|
9497
|
-
var
|
|
9498
|
-
|
|
9499
|
-
|
|
9500
|
-
|
|
9501
|
-
|
|
9502
|
-
|
|
9503
|
-
|
|
9504
|
-
|
|
9505
|
-
|
|
9506
|
-
|
|
9507
|
-
|
|
9508
|
-
|
|
9509
|
-
|
|
9510
|
-
|
|
9511
|
-
|
|
9512
|
-
|
|
9513
|
-
|
|
9514
|
-
|
|
9515
|
-
|
|
9516
|
-
|
|
9517
|
-
|
|
9518
|
-
|
|
9519
|
-
|
|
9520
|
-
|
|
9521
|
-
|
|
9522
|
-
|
|
9523
|
-
|
|
9524
|
-
|
|
9525
|
-
|
|
9526
|
-
|
|
9527
|
-
|
|
9528
|
-
|
|
9529
|
-
|
|
9530
|
-
|
|
9531
|
-
|
|
9532
|
-
|
|
9533
|
-
|
|
9534
|
-
|
|
9535
|
-
}
|
|
9536
|
-
|
|
9537
|
-
|
|
9538
|
-
|
|
9539
|
-
|
|
9540
|
-
|
|
9541
|
-
|
|
9542
|
-
|
|
9543
|
-
|
|
9544
|
-
|
|
9545
|
-
|
|
9546
|
-
|
|
9547
|
-
|
|
9548
|
-
|
|
9549
|
-
|
|
9550
|
-
|
|
9551
|
-
|
|
9552
|
-
|
|
9553
|
-
|
|
9554
|
-
|
|
9555
|
-
|
|
9556
|
-
}
|
|
9557
|
-
|
|
9558
|
-
|
|
9559
|
-
|
|
9560
|
-
|
|
9561
|
-
|
|
9562
|
-
|
|
9563
|
-
|
|
9564
|
-
|
|
9565
|
-
|
|
9566
|
-
|
|
9567
|
-
|
|
9568
|
-
|
|
9569
|
-
|
|
9570
|
-
|
|
9571
|
-
|
|
9572
|
-
|
|
9573
|
-
|
|
9574
|
-
|
|
9575
|
-
|
|
9576
|
-
|
|
9577
|
-
|
|
9578
|
-
|
|
9579
|
-
|
|
9580
|
-
|
|
9581
|
-
|
|
9582
|
-
|
|
9583
|
-
|
|
9584
|
-
|
|
9585
|
-
|
|
9586
|
-
|
|
9587
|
-
|
|
9588
|
-
|
|
9589
|
-
|
|
9590
|
-
|
|
9591
|
-
|
|
9592
|
-
|
|
9593
|
-
|
|
9594
|
-
|
|
9595
|
-
|
|
9596
|
-
|
|
9597
|
-
|
|
9598
|
-
|
|
9599
|
-
|
|
9600
|
-
|
|
9601
|
-
|
|
9602
|
-
|
|
9603
|
-
|
|
9604
|
-
|
|
9605
|
-
|
|
9606
|
-
|
|
9607
|
-
|
|
9608
|
-
|
|
9609
|
-
|
|
9610
|
-
|
|
9611
|
-
|
|
9612
|
-
|
|
9613
|
-
}
|
|
9614
|
-
|
|
9615
|
-
|
|
9616
|
-
|
|
9617
|
-
|
|
9618
|
-
|
|
9619
|
-
|
|
9620
|
-
|
|
9621
|
-
|
|
9622
|
-
|
|
9623
|
-
|
|
9624
|
-
|
|
9625
|
-
|
|
9626
|
-
|
|
9627
|
-
|
|
9628
|
-
|
|
9629
|
-
|
|
9630
|
-
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
|
|
9634
|
-
|
|
9635
|
-
|
|
9806
|
+
// ../shared/data/workflow-enrollments/normalized-triggers.json
|
|
9807
|
+
var normalized_triggers_default = [
|
|
9808
|
+
{
|
|
9809
|
+
catalogId: "e_ad_interaction",
|
|
9810
|
+
eventTypeId: "4-1553675",
|
|
9811
|
+
eventTypeInnerId: 1553675,
|
|
9812
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9813
|
+
officialOperator: "HAS_COMPLETED",
|
|
9814
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9815
|
+
officialFiltersExample: [],
|
|
9816
|
+
triggerCategoryId: "digitalInteraction",
|
|
9817
|
+
modernCategoryId: "media",
|
|
9818
|
+
triggerGroupLabel: "",
|
|
9819
|
+
requiredScopes: [],
|
|
9820
|
+
requiredGates: [],
|
|
9821
|
+
sampleWorkflowId: "3953878259",
|
|
9822
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_ad_interaction",
|
|
9823
|
+
sampleStatus: "created"
|
|
9824
|
+
},
|
|
9825
|
+
{
|
|
9826
|
+
catalogId: "e_anon_public_quote_download",
|
|
9827
|
+
eventTypeId: "4-3687775",
|
|
9828
|
+
eventTypeInnerId: 3687775,
|
|
9829
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9830
|
+
officialOperator: "HAS_COMPLETED",
|
|
9831
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9832
|
+
officialFiltersExample: [],
|
|
9833
|
+
triggerCategoryId: "data",
|
|
9834
|
+
modernCategoryId: "crm",
|
|
9835
|
+
triggerGroupLabel: "Quote events",
|
|
9836
|
+
requiredScopes: [
|
|
9837
|
+
"cpq-quote-access"
|
|
9838
|
+
],
|
|
9839
|
+
requiredGates: [
|
|
9840
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
9841
|
+
],
|
|
9842
|
+
sampleWorkflowId: "3955861708",
|
|
9843
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_anon_public_quote_download",
|
|
9844
|
+
sampleStatus: "created"
|
|
9845
|
+
},
|
|
9846
|
+
{
|
|
9847
|
+
catalogId: "e_anon_quote_print",
|
|
9848
|
+
eventTypeId: "4-3687777",
|
|
9849
|
+
eventTypeInnerId: 3687777,
|
|
9850
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9851
|
+
officialOperator: "HAS_COMPLETED",
|
|
9852
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9853
|
+
officialFiltersExample: [],
|
|
9854
|
+
triggerCategoryId: "data",
|
|
9855
|
+
modernCategoryId: "crm",
|
|
9856
|
+
triggerGroupLabel: "Quote events",
|
|
9857
|
+
requiredScopes: [
|
|
9858
|
+
"cpq-quote-access"
|
|
9859
|
+
],
|
|
9860
|
+
requiredGates: [
|
|
9861
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
9862
|
+
],
|
|
9863
|
+
sampleWorkflowId: "3955726574",
|
|
9864
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_anon_quote_print",
|
|
9865
|
+
sampleStatus: "created"
|
|
9866
|
+
},
|
|
9867
|
+
{
|
|
9868
|
+
catalogId: "e_anon_quote_view",
|
|
9869
|
+
eventTypeId: "4-3687774",
|
|
9870
|
+
eventTypeInnerId: 3687774,
|
|
9871
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9872
|
+
officialOperator: "HAS_COMPLETED",
|
|
9873
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9874
|
+
officialFiltersExample: [],
|
|
9875
|
+
triggerCategoryId: "data",
|
|
9876
|
+
modernCategoryId: "crm",
|
|
9877
|
+
triggerGroupLabel: "Quote events",
|
|
9878
|
+
requiredScopes: [
|
|
9879
|
+
"cpq-quote-access"
|
|
9880
|
+
],
|
|
9881
|
+
requiredGates: [
|
|
9882
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
9883
|
+
],
|
|
9884
|
+
sampleWorkflowId: "3955726575",
|
|
9885
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_anon_quote_view",
|
|
9886
|
+
sampleStatus: "created"
|
|
9887
|
+
},
|
|
9888
|
+
{
|
|
9889
|
+
catalogId: "e_buyer_intent_company_saved_view_event",
|
|
9890
|
+
eventTypeId: "4-1887330",
|
|
9891
|
+
eventTypeInnerId: 1887330,
|
|
9892
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9893
|
+
officialOperator: "HAS_COMPLETED",
|
|
9894
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9895
|
+
officialFiltersExample: [],
|
|
9896
|
+
triggerCategoryId: "data",
|
|
9897
|
+
modernCategoryId: "buyer_company_insights",
|
|
9898
|
+
triggerGroupLabel: "Buyer Intent events",
|
|
9899
|
+
requiredScopes: [
|
|
9900
|
+
"breeze-intelligence-free"
|
|
9901
|
+
],
|
|
9902
|
+
requiredGates: [],
|
|
9903
|
+
sampleWorkflowId: "3955786941",
|
|
9904
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_buyer_intent_company_saved_view_event probe 1773636540776",
|
|
9905
|
+
sampleStatus: "created"
|
|
9906
|
+
},
|
|
9907
|
+
{
|
|
9908
|
+
catalogId: "e_call_ended",
|
|
9909
|
+
eventTypeId: "4-1741072",
|
|
9910
|
+
eventTypeInnerId: 1741072,
|
|
9911
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9912
|
+
officialOperator: "HAS_COMPLETED",
|
|
9913
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9914
|
+
officialFiltersExample: [],
|
|
9915
|
+
triggerCategoryId: "contactInteraction",
|
|
9916
|
+
modernCategoryId: "communication",
|
|
9917
|
+
triggerGroupLabel: "Call events",
|
|
9918
|
+
requiredScopes: [],
|
|
9919
|
+
requiredGates: [],
|
|
9920
|
+
sampleWorkflowId: "3953878256",
|
|
9921
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_call_ended",
|
|
9922
|
+
sampleStatus: "created"
|
|
9923
|
+
},
|
|
9924
|
+
{
|
|
9925
|
+
catalogId: "e_call_started",
|
|
9926
|
+
eventTypeId: "4-1733817",
|
|
9927
|
+
eventTypeInnerId: 1733817,
|
|
9928
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9929
|
+
officialOperator: "HAS_COMPLETED",
|
|
9930
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9931
|
+
officialFiltersExample: [],
|
|
9932
|
+
triggerCategoryId: "contactInteraction",
|
|
9933
|
+
modernCategoryId: "communication",
|
|
9934
|
+
triggerGroupLabel: "Call events",
|
|
9935
|
+
requiredScopes: [],
|
|
9936
|
+
requiredGates: [],
|
|
9937
|
+
sampleWorkflowId: "3953877202",
|
|
9938
|
+
sampleWorkflowName: "MCP Trigger Matrix - Call Started",
|
|
9939
|
+
sampleStatus: "created"
|
|
9940
|
+
},
|
|
9941
|
+
{
|
|
9942
|
+
catalogId: "e_clicked_cta",
|
|
9943
|
+
eventTypeId: "4-100216",
|
|
9944
|
+
eventTypeInnerId: 100216,
|
|
9945
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9946
|
+
officialOperator: "HAS_COMPLETED",
|
|
9947
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9948
|
+
officialFiltersExample: [],
|
|
9949
|
+
triggerCategoryId: "digitalInteraction",
|
|
9950
|
+
modernCategoryId: "media",
|
|
9951
|
+
triggerGroupLabel: "Website events",
|
|
9952
|
+
requiredScopes: [
|
|
9953
|
+
"cta-access"
|
|
9954
|
+
],
|
|
9955
|
+
requiredGates: [],
|
|
9956
|
+
sampleWorkflowId: "3955785953",
|
|
9957
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_clicked_cta",
|
|
9958
|
+
sampleStatus: "created"
|
|
9959
|
+
},
|
|
9960
|
+
{
|
|
9961
|
+
catalogId: "e_clicked_link_in_email_v2",
|
|
9962
|
+
eventTypeId: "4-666288",
|
|
9963
|
+
eventTypeInnerId: 666288,
|
|
9964
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9965
|
+
officialOperator: "HAS_COMPLETED",
|
|
9966
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9967
|
+
officialFiltersExample: [],
|
|
9968
|
+
triggerCategoryId: "contactInteraction",
|
|
9969
|
+
modernCategoryId: "email",
|
|
9970
|
+
triggerGroupLabel: "Email events",
|
|
9971
|
+
requiredScopes: [],
|
|
9972
|
+
requiredGates: [],
|
|
9973
|
+
sampleWorkflowId: "3954290915",
|
|
9974
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_clicked_link_in_email_v2",
|
|
9975
|
+
sampleStatus: "created"
|
|
9976
|
+
},
|
|
9977
|
+
{
|
|
9978
|
+
catalogId: "e_clicked_link_in_shortmessage",
|
|
9979
|
+
eventTypeId: "4-1722276",
|
|
9980
|
+
eventTypeInnerId: 1722276,
|
|
9981
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
9982
|
+
officialOperator: "HAS_COMPLETED",
|
|
9983
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
9984
|
+
officialFiltersExample: [],
|
|
9985
|
+
triggerCategoryId: "contactInteraction",
|
|
9986
|
+
modernCategoryId: "sms",
|
|
9987
|
+
triggerGroupLabel: "SMS events",
|
|
9988
|
+
requiredScopes: [
|
|
9989
|
+
"sms-marketing-addon"
|
|
9990
|
+
],
|
|
9991
|
+
requiredGates: [],
|
|
9992
|
+
sampleWorkflowId: "3955791038",
|
|
9993
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_clicked_link_in_shortmessage",
|
|
9994
|
+
sampleStatus: "created"
|
|
9995
|
+
},
|
|
9996
|
+
{
|
|
9997
|
+
catalogId: "e_clicked_web_interactive",
|
|
9998
|
+
eventTypeId: "4-1555805",
|
|
9999
|
+
eventTypeInnerId: 1555805,
|
|
10000
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10001
|
+
officialOperator: "HAS_COMPLETED",
|
|
10002
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10003
|
+
officialFiltersExample: [],
|
|
10004
|
+
triggerCategoryId: "digitalInteraction",
|
|
10005
|
+
modernCategoryId: "media",
|
|
10006
|
+
triggerGroupLabel: "Website events",
|
|
10007
|
+
requiredScopes: [
|
|
10008
|
+
"calls-to-action-read"
|
|
10009
|
+
],
|
|
10010
|
+
requiredGates: [],
|
|
10011
|
+
sampleWorkflowId: "3955791039",
|
|
10012
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_clicked_web_interactive",
|
|
10013
|
+
sampleStatus: "created"
|
|
10014
|
+
},
|
|
10015
|
+
{
|
|
10016
|
+
catalogId: "e_clicked_whatsapp_message",
|
|
10017
|
+
eventTypeId: "4-6607539",
|
|
10018
|
+
eventTypeInnerId: 6607539,
|
|
10019
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10020
|
+
officialOperator: "HAS_COMPLETED",
|
|
10021
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10022
|
+
officialFiltersExample: [],
|
|
10023
|
+
triggerCategoryId: "contactInteraction",
|
|
10024
|
+
modernCategoryId: "whats_app",
|
|
10025
|
+
triggerGroupLabel: "WhatsApp events",
|
|
10026
|
+
requiredScopes: [],
|
|
10027
|
+
requiredGates: [
|
|
10028
|
+
"MPG:WhatsAppV2"
|
|
10029
|
+
],
|
|
10030
|
+
sampleWorkflowId: "3955853520",
|
|
10031
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_clicked_whatsapp_message",
|
|
10032
|
+
sampleStatus: "created"
|
|
10033
|
+
},
|
|
10034
|
+
{
|
|
10035
|
+
catalogId: "e_closing_agent_conversation_started",
|
|
10036
|
+
eventTypeId: "4-6300049",
|
|
10037
|
+
eventTypeInnerId: 6300049,
|
|
10038
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10039
|
+
officialOperator: "HAS_COMPLETED",
|
|
10040
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10041
|
+
officialFiltersExample: [],
|
|
10042
|
+
triggerCategoryId: "data",
|
|
10043
|
+
modernCategoryId: "crm",
|
|
10044
|
+
triggerGroupLabel: "Quote events",
|
|
10045
|
+
requiredScopes: [
|
|
10046
|
+
"cpq-quote-access"
|
|
10047
|
+
],
|
|
10048
|
+
requiredGates: [
|
|
10049
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
10050
|
+
],
|
|
10051
|
+
sampleWorkflowId: "3956004052",
|
|
10052
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_closing_agent_conversation_started",
|
|
10053
|
+
sampleStatus: "created"
|
|
10054
|
+
},
|
|
10055
|
+
{
|
|
10056
|
+
catalogId: "e_company_attends_event",
|
|
10057
|
+
eventTypeId: "4-10021656",
|
|
10058
|
+
eventTypeInnerId: 10021656,
|
|
10059
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10060
|
+
officialOperator: "HAS_COMPLETED",
|
|
10061
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10062
|
+
officialFiltersExample: [],
|
|
10063
|
+
triggerCategoryId: "data",
|
|
10064
|
+
modernCategoryId: "buyer_company_insights",
|
|
10065
|
+
triggerGroupLabel: "Company signal events",
|
|
10066
|
+
requiredScopes: [
|
|
10067
|
+
"data-agent-platform-access"
|
|
10068
|
+
],
|
|
10069
|
+
requiredGates: [
|
|
10070
|
+
"VendorSignals::Q12026PredictLeadsSignalsRelease"
|
|
10071
|
+
],
|
|
10072
|
+
sampleWorkflowId: "3955770565",
|
|
10073
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_attends_event",
|
|
10074
|
+
sampleStatus: "created"
|
|
10075
|
+
},
|
|
10076
|
+
{
|
|
10077
|
+
catalogId: "e_company_expanded_geographically",
|
|
10078
|
+
eventTypeId: "4-5470325",
|
|
10079
|
+
eventTypeInnerId: 5470325,
|
|
10080
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10081
|
+
officialOperator: "HAS_COMPLETED",
|
|
10082
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10083
|
+
officialFiltersExample: [],
|
|
10084
|
+
triggerCategoryId: "data",
|
|
10085
|
+
modernCategoryId: "buyer_company_insights",
|
|
10086
|
+
triggerGroupLabel: "Company signal events",
|
|
10087
|
+
requiredScopes: [
|
|
10088
|
+
"data-enrichment-platform-access"
|
|
10089
|
+
],
|
|
10090
|
+
requiredGates: [],
|
|
10091
|
+
sampleWorkflowId: "3955760352",
|
|
10092
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_expanded_geographically",
|
|
10093
|
+
sampleStatus: "created"
|
|
10094
|
+
},
|
|
10095
|
+
{
|
|
10096
|
+
catalogId: "e_company_growth_metrics",
|
|
10097
|
+
eventTypeId: "4-8148872",
|
|
10098
|
+
eventTypeInnerId: 8148872,
|
|
10099
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10100
|
+
officialOperator: "HAS_COMPLETED",
|
|
10101
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10102
|
+
officialFiltersExample: [],
|
|
10103
|
+
triggerCategoryId: "data",
|
|
10104
|
+
modernCategoryId: "buyer_company_insights",
|
|
10105
|
+
triggerGroupLabel: "Company signal events",
|
|
10106
|
+
requiredScopes: [
|
|
10107
|
+
"data-enrichment-platform-access"
|
|
10108
|
+
],
|
|
10109
|
+
requiredGates: [
|
|
10110
|
+
"IntentSignals:SignalsBatchQ425"
|
|
10111
|
+
],
|
|
10112
|
+
sampleWorkflowId: "3955760354",
|
|
10113
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_growth_metrics",
|
|
10114
|
+
sampleStatus: "created"
|
|
10115
|
+
},
|
|
10116
|
+
{
|
|
10117
|
+
catalogId: "e_company_hired_executive",
|
|
10118
|
+
eventTypeId: "4-7727049",
|
|
10119
|
+
eventTypeInnerId: 7727049,
|
|
10120
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10121
|
+
officialOperator: "HAS_COMPLETED",
|
|
10122
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10123
|
+
officialFiltersExample: [],
|
|
10124
|
+
triggerCategoryId: "data",
|
|
10125
|
+
modernCategoryId: "buyer_company_insights",
|
|
10126
|
+
triggerGroupLabel: "Company signal events",
|
|
10127
|
+
requiredScopes: [
|
|
10128
|
+
"data-enrichment-platform-access"
|
|
10129
|
+
],
|
|
10130
|
+
requiredGates: [
|
|
10131
|
+
"IntentSignals:SignalsBatchQ425"
|
|
10132
|
+
],
|
|
10133
|
+
sampleWorkflowId: "3955785957",
|
|
10134
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_hired_executive",
|
|
10135
|
+
sampleStatus: "created"
|
|
10136
|
+
},
|
|
10137
|
+
{
|
|
10138
|
+
catalogId: "e_company_industry_recognition",
|
|
10139
|
+
eventTypeId: "4-9304135",
|
|
10140
|
+
eventTypeInnerId: 9304135,
|
|
10141
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10142
|
+
officialOperator: "HAS_COMPLETED",
|
|
10143
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10144
|
+
officialFiltersExample: [],
|
|
10145
|
+
triggerCategoryId: "data",
|
|
10146
|
+
modernCategoryId: "buyer_company_insights",
|
|
10147
|
+
triggerGroupLabel: "Company signal events",
|
|
10148
|
+
requiredScopes: [
|
|
10149
|
+
"data-agent-platform-access"
|
|
10150
|
+
],
|
|
10151
|
+
requiredGates: [
|
|
10152
|
+
"IntentSignals::Q12026ExaSignalsRelease"
|
|
10153
|
+
],
|
|
10154
|
+
sampleWorkflowId: "3955760355",
|
|
10155
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_industry_recognition",
|
|
10156
|
+
sampleStatus: "created"
|
|
10157
|
+
},
|
|
10158
|
+
{
|
|
10159
|
+
catalogId: "e_company_is_developing",
|
|
10160
|
+
eventTypeId: "4-10021655",
|
|
10161
|
+
eventTypeInnerId: 10021655,
|
|
10162
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10163
|
+
officialOperator: "HAS_COMPLETED",
|
|
10164
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10165
|
+
officialFiltersExample: [],
|
|
10166
|
+
triggerCategoryId: "data",
|
|
10167
|
+
modernCategoryId: "buyer_company_insights",
|
|
10168
|
+
triggerGroupLabel: "Company signal events",
|
|
10169
|
+
requiredScopes: [
|
|
10170
|
+
"data-agent-platform-access"
|
|
10171
|
+
],
|
|
10172
|
+
requiredGates: [
|
|
10173
|
+
"VendorSignals::Q12026PredictLeadsSignalsRelease"
|
|
10174
|
+
],
|
|
10175
|
+
sampleWorkflowId: "3955872973",
|
|
10176
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_is_developing",
|
|
10177
|
+
sampleStatus: "created"
|
|
10178
|
+
},
|
|
10179
|
+
{
|
|
10180
|
+
catalogId: "e_company_launched_product",
|
|
10181
|
+
eventTypeId: "4-7727050",
|
|
10182
|
+
eventTypeInnerId: 7727050,
|
|
10183
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10184
|
+
officialOperator: "HAS_COMPLETED",
|
|
10185
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10186
|
+
officialFiltersExample: [],
|
|
10187
|
+
triggerCategoryId: "data",
|
|
10188
|
+
modernCategoryId: "buyer_company_insights",
|
|
10189
|
+
triggerGroupLabel: "Company signal events",
|
|
10190
|
+
requiredScopes: [
|
|
10191
|
+
"data-enrichment-platform-access"
|
|
10192
|
+
],
|
|
10193
|
+
requiredGates: [
|
|
10194
|
+
"IntentSignals:SignalsBatchQ425"
|
|
10195
|
+
],
|
|
10196
|
+
sampleWorkflowId: "3955857623",
|
|
10197
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_launched_product",
|
|
10198
|
+
sampleStatus: "created"
|
|
10199
|
+
},
|
|
10200
|
+
{
|
|
10201
|
+
catalogId: "e_company_layoff",
|
|
10202
|
+
eventTypeId: "4-6099696",
|
|
10203
|
+
eventTypeInnerId: 6099696,
|
|
10204
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10205
|
+
officialOperator: "HAS_COMPLETED",
|
|
10206
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10207
|
+
officialFiltersExample: [],
|
|
10208
|
+
triggerCategoryId: "data",
|
|
10209
|
+
modernCategoryId: "buyer_company_insights",
|
|
10210
|
+
triggerGroupLabel: "Company signal events",
|
|
10211
|
+
requiredScopes: [
|
|
10212
|
+
"data-enrichment-platform-access"
|
|
10213
|
+
],
|
|
10214
|
+
requiredGates: [],
|
|
10215
|
+
sampleWorkflowId: "3955774692",
|
|
10216
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_layoff",
|
|
10217
|
+
sampleStatus: "created"
|
|
10218
|
+
},
|
|
10219
|
+
{
|
|
10220
|
+
catalogId: "e_company_merger_acquisition",
|
|
10221
|
+
eventTypeId: "4-8191201",
|
|
10222
|
+
eventTypeInnerId: 8191201,
|
|
10223
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10224
|
+
officialOperator: "HAS_COMPLETED",
|
|
10225
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10226
|
+
officialFiltersExample: [],
|
|
10227
|
+
triggerCategoryId: "data",
|
|
10228
|
+
modernCategoryId: "buyer_company_insights",
|
|
10229
|
+
triggerGroupLabel: "Company signal events",
|
|
10230
|
+
requiredScopes: [
|
|
10231
|
+
"data-enrichment-platform-access"
|
|
10232
|
+
],
|
|
10233
|
+
requiredGates: [
|
|
10234
|
+
"IntentSignals:SignalsBatchQ425"
|
|
10235
|
+
],
|
|
10236
|
+
sampleWorkflowId: "3955726580",
|
|
10237
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_merger_acquisition",
|
|
10238
|
+
sampleStatus: "created"
|
|
10239
|
+
},
|
|
10240
|
+
{
|
|
10241
|
+
catalogId: "e_company_news_signal_funding",
|
|
10242
|
+
eventTypeId: "4-5076614",
|
|
10243
|
+
eventTypeInnerId: 5076614,
|
|
10244
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10245
|
+
officialOperator: "HAS_COMPLETED",
|
|
10246
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10247
|
+
officialFiltersExample: [],
|
|
10248
|
+
triggerCategoryId: "data",
|
|
10249
|
+
modernCategoryId: "buyer_company_insights",
|
|
10250
|
+
triggerGroupLabel: "Company signal events",
|
|
10251
|
+
requiredScopes: [
|
|
10252
|
+
"data-enrichment-platform-access"
|
|
10253
|
+
],
|
|
10254
|
+
requiredGates: [],
|
|
10255
|
+
sampleWorkflowId: "3955754227",
|
|
10256
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_news_signal_funding",
|
|
10257
|
+
sampleStatus: "created"
|
|
10258
|
+
},
|
|
10259
|
+
{
|
|
10260
|
+
catalogId: "e_company_office_closure",
|
|
10261
|
+
eventTypeId: "4-9304136",
|
|
10262
|
+
eventTypeInnerId: 9304136,
|
|
10263
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10264
|
+
officialOperator: "HAS_COMPLETED",
|
|
10265
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10266
|
+
officialFiltersExample: [],
|
|
10267
|
+
triggerCategoryId: "data",
|
|
10268
|
+
modernCategoryId: "buyer_company_insights",
|
|
10269
|
+
triggerGroupLabel: "Company signal events",
|
|
10270
|
+
requiredScopes: [
|
|
10271
|
+
"data-agent-platform-access"
|
|
10272
|
+
],
|
|
10273
|
+
requiredGates: [
|
|
10274
|
+
"IntentSignals::Q12026ExaSignalsRelease"
|
|
10275
|
+
],
|
|
10276
|
+
sampleWorkflowId: "3955857627",
|
|
10277
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_office_closure",
|
|
10278
|
+
sampleStatus: "created"
|
|
10279
|
+
},
|
|
10280
|
+
{
|
|
10281
|
+
catalogId: "e_company_physical_expansion",
|
|
10282
|
+
eventTypeId: "4-9304138",
|
|
10283
|
+
eventTypeInnerId: 9304138,
|
|
10284
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10285
|
+
officialOperator: "HAS_COMPLETED",
|
|
10286
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10287
|
+
officialFiltersExample: [],
|
|
10288
|
+
triggerCategoryId: "data",
|
|
10289
|
+
modernCategoryId: "buyer_company_insights",
|
|
10290
|
+
triggerGroupLabel: "Company signal events",
|
|
10291
|
+
requiredScopes: [
|
|
10292
|
+
"data-agent-platform-access"
|
|
10293
|
+
],
|
|
10294
|
+
requiredGates: [
|
|
10295
|
+
"IntentSignals::Q12026ExaSignalsRelease"
|
|
10296
|
+
],
|
|
10297
|
+
sampleWorkflowId: "3955857628",
|
|
10298
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_physical_expansion",
|
|
10299
|
+
sampleStatus: "created"
|
|
10300
|
+
},
|
|
10301
|
+
{
|
|
10302
|
+
catalogId: "e_company_published_leadership_content",
|
|
10303
|
+
eventTypeId: "4-6099692",
|
|
10304
|
+
eventTypeInnerId: 6099692,
|
|
10305
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10306
|
+
officialOperator: "HAS_COMPLETED",
|
|
10307
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10308
|
+
officialFiltersExample: [],
|
|
10309
|
+
triggerCategoryId: "data",
|
|
10310
|
+
modernCategoryId: "buyer_company_insights",
|
|
10311
|
+
triggerGroupLabel: "Company signal events",
|
|
10312
|
+
requiredScopes: [
|
|
10313
|
+
"data-enrichment-platform-access"
|
|
10314
|
+
],
|
|
10315
|
+
requiredGates: [],
|
|
10316
|
+
sampleWorkflowId: "3955861712",
|
|
10317
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_published_leadership_content",
|
|
10318
|
+
sampleStatus: "created"
|
|
10319
|
+
},
|
|
10320
|
+
{
|
|
10321
|
+
catalogId: "e_company_received_technology_investment",
|
|
10322
|
+
eventTypeId: "4-6099691",
|
|
10323
|
+
eventTypeInnerId: 6099691,
|
|
10324
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10325
|
+
officialOperator: "HAS_COMPLETED",
|
|
10326
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10327
|
+
officialFiltersExample: [],
|
|
10328
|
+
triggerCategoryId: "data",
|
|
10329
|
+
modernCategoryId: "buyer_company_insights",
|
|
10330
|
+
triggerGroupLabel: "Company signal events",
|
|
10331
|
+
requiredScopes: [
|
|
10332
|
+
"data-enrichment-platform-access"
|
|
10333
|
+
],
|
|
10334
|
+
requiredGates: [],
|
|
10335
|
+
sampleWorkflowId: "3956004057",
|
|
10336
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_received_technology_investment",
|
|
10337
|
+
sampleStatus: "created"
|
|
10338
|
+
},
|
|
10339
|
+
{
|
|
10340
|
+
catalogId: "e_company_regulatory_approval",
|
|
10341
|
+
eventTypeId: "4-9304137",
|
|
10342
|
+
eventTypeInnerId: 9304137,
|
|
10343
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10344
|
+
officialOperator: "HAS_COMPLETED",
|
|
10345
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10346
|
+
officialFiltersExample: [],
|
|
10347
|
+
triggerCategoryId: "data",
|
|
10348
|
+
modernCategoryId: "buyer_company_insights",
|
|
10349
|
+
triggerGroupLabel: "Company signal events",
|
|
10350
|
+
requiredScopes: [
|
|
10351
|
+
"data-agent-platform-access"
|
|
10352
|
+
],
|
|
10353
|
+
requiredGates: [
|
|
10354
|
+
"IntentSignals::Q12026ExaSignalsRelease"
|
|
10355
|
+
],
|
|
10356
|
+
sampleWorkflowId: "3955891419",
|
|
10357
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_regulatory_approval",
|
|
10358
|
+
sampleStatus: "created"
|
|
10359
|
+
},
|
|
10360
|
+
{
|
|
10361
|
+
catalogId: "e_company_strategic_partnership",
|
|
10362
|
+
eventTypeId: "4-8191199",
|
|
10363
|
+
eventTypeInnerId: 8191199,
|
|
10364
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10365
|
+
officialOperator: "HAS_COMPLETED",
|
|
10366
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10367
|
+
officialFiltersExample: [],
|
|
10368
|
+
triggerCategoryId: "data",
|
|
10369
|
+
modernCategoryId: "buyer_company_insights",
|
|
10370
|
+
triggerGroupLabel: "Company signal events",
|
|
10371
|
+
requiredScopes: [
|
|
10372
|
+
"data-enrichment-platform-access"
|
|
10373
|
+
],
|
|
10374
|
+
requiredGates: [
|
|
10375
|
+
"IntentSignals:SignalsBatchQ425"
|
|
10376
|
+
],
|
|
10377
|
+
sampleWorkflowId: "3955886325",
|
|
10378
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_company_strategic_partnership",
|
|
10379
|
+
sampleStatus: "created"
|
|
10380
|
+
},
|
|
10381
|
+
{
|
|
10382
|
+
catalogId: "e_contact_job_ended",
|
|
10383
|
+
eventTypeId: "4-5470333",
|
|
10384
|
+
eventTypeInnerId: 5470333,
|
|
10385
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10386
|
+
officialOperator: "HAS_COMPLETED",
|
|
10387
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10388
|
+
officialFiltersExample: [],
|
|
10389
|
+
triggerCategoryId: "data",
|
|
10390
|
+
modernCategoryId: "buyer_company_insights",
|
|
10391
|
+
triggerGroupLabel: "Contact signal events",
|
|
10392
|
+
requiredScopes: [
|
|
10393
|
+
"data-enrichment-platform-access"
|
|
10394
|
+
],
|
|
10395
|
+
requiredGates: [],
|
|
10396
|
+
sampleWorkflowId: "3955760359",
|
|
10397
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_contact_job_ended",
|
|
10398
|
+
sampleStatus: "created"
|
|
10399
|
+
},
|
|
10400
|
+
{
|
|
10401
|
+
catalogId: "e_contact_job_started",
|
|
10402
|
+
eventTypeId: "4-5470334",
|
|
10403
|
+
eventTypeInnerId: 5470334,
|
|
10404
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10405
|
+
officialOperator: "HAS_COMPLETED",
|
|
10406
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10407
|
+
officialFiltersExample: [],
|
|
10408
|
+
triggerCategoryId: "data",
|
|
10409
|
+
modernCategoryId: "buyer_company_insights",
|
|
10410
|
+
triggerGroupLabel: "Contact signal events",
|
|
10411
|
+
requiredScopes: [
|
|
10412
|
+
"data-enrichment-platform-access"
|
|
10413
|
+
],
|
|
10414
|
+
requiredGates: [],
|
|
10415
|
+
sampleWorkflowId: "3955754233",
|
|
10416
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_contact_job_started",
|
|
10417
|
+
sampleStatus: "created"
|
|
10418
|
+
},
|
|
10419
|
+
{
|
|
10420
|
+
catalogId: "e_contact_meeting_booked",
|
|
10421
|
+
eventTypeId: "4-1720599",
|
|
10422
|
+
eventTypeInnerId: 1720599,
|
|
10423
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10424
|
+
officialOperator: "HAS_COMPLETED",
|
|
10425
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10426
|
+
officialFiltersExample: [],
|
|
10427
|
+
triggerCategoryId: "contactInteraction",
|
|
10428
|
+
modernCategoryId: "communication",
|
|
10429
|
+
triggerGroupLabel: "Meeting events",
|
|
10430
|
+
requiredScopes: [],
|
|
10431
|
+
requiredGates: [],
|
|
10432
|
+
sampleWorkflowId: "3953877209",
|
|
10433
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_contact_meeting_booked",
|
|
10434
|
+
sampleStatus: "created"
|
|
10435
|
+
},
|
|
10436
|
+
{
|
|
10437
|
+
catalogId: "e_contact_meeting_outcome_changed",
|
|
10438
|
+
eventTypeId: "4-1724222",
|
|
10439
|
+
eventTypeInnerId: 1724222,
|
|
10440
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10441
|
+
officialOperator: "HAS_COMPLETED",
|
|
10442
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10443
|
+
officialFiltersExample: [],
|
|
10444
|
+
triggerCategoryId: "contactInteraction",
|
|
10445
|
+
modernCategoryId: "communication",
|
|
10446
|
+
triggerGroupLabel: "Meeting events",
|
|
10447
|
+
requiredScopes: [],
|
|
10448
|
+
requiredGates: [],
|
|
10449
|
+
sampleWorkflowId: "3954291939",
|
|
10450
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_contact_meeting_outcome_changed",
|
|
10451
|
+
sampleStatus: "created"
|
|
10452
|
+
},
|
|
10453
|
+
{
|
|
10454
|
+
catalogId: "e_delivered_shortmessage",
|
|
10455
|
+
eventTypeId: "4-1721168",
|
|
10456
|
+
eventTypeInnerId: 1721168,
|
|
10457
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10458
|
+
officialOperator: "HAS_COMPLETED",
|
|
10459
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10460
|
+
officialFiltersExample: [],
|
|
10461
|
+
triggerCategoryId: "contactInteraction",
|
|
10462
|
+
modernCategoryId: "sms",
|
|
10463
|
+
triggerGroupLabel: "SMS events",
|
|
10464
|
+
requiredScopes: [
|
|
10465
|
+
"sms-marketing-addon"
|
|
10466
|
+
],
|
|
10467
|
+
requiredGates: [],
|
|
10468
|
+
sampleWorkflowId: "3955774697",
|
|
10469
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_delivered_shortmessage",
|
|
10470
|
+
sampleStatus: "created"
|
|
10471
|
+
},
|
|
10472
|
+
{
|
|
10473
|
+
catalogId: "e_delivered_whatsapp_message",
|
|
10474
|
+
eventTypeId: "4-6607541",
|
|
10475
|
+
eventTypeInnerId: 6607541,
|
|
10476
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10477
|
+
officialOperator: "HAS_COMPLETED",
|
|
10478
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10479
|
+
officialFiltersExample: [],
|
|
10480
|
+
triggerCategoryId: "contactInteraction",
|
|
10481
|
+
modernCategoryId: "whats_app",
|
|
10482
|
+
triggerGroupLabel: "WhatsApp events",
|
|
10483
|
+
requiredScopes: [],
|
|
10484
|
+
requiredGates: [
|
|
10485
|
+
"MPG:WhatsAppV2"
|
|
10486
|
+
],
|
|
10487
|
+
sampleWorkflowId: "3955765492",
|
|
10488
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_delivered_whatsapp_message",
|
|
10489
|
+
sampleStatus: "created"
|
|
10490
|
+
},
|
|
10491
|
+
{
|
|
10492
|
+
catalogId: "e_document_completed_v2",
|
|
10493
|
+
eventTypeId: "4-1522438",
|
|
10494
|
+
eventTypeInnerId: 1522438,
|
|
10495
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10496
|
+
officialOperator: "HAS_COMPLETED",
|
|
10497
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10498
|
+
officialFiltersExample: [],
|
|
10499
|
+
triggerCategoryId: "contactInteraction",
|
|
10500
|
+
modernCategoryId: "communication",
|
|
10501
|
+
triggerGroupLabel: "Document events",
|
|
10502
|
+
requiredScopes: [
|
|
10503
|
+
"documents-read-access"
|
|
10504
|
+
],
|
|
10505
|
+
requiredGates: [],
|
|
10506
|
+
sampleWorkflowId: "3955770570",
|
|
10507
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_document_completed_v2",
|
|
10508
|
+
sampleStatus: "created"
|
|
10509
|
+
},
|
|
10510
|
+
{
|
|
10511
|
+
catalogId: "e_document_shared_v2",
|
|
10512
|
+
eventTypeId: "4-1522437",
|
|
10513
|
+
eventTypeInnerId: 1522437,
|
|
10514
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10515
|
+
officialOperator: "HAS_COMPLETED",
|
|
10516
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10517
|
+
officialFiltersExample: [],
|
|
10518
|
+
triggerCategoryId: "contactInteraction",
|
|
10519
|
+
modernCategoryId: "communication",
|
|
10520
|
+
triggerGroupLabel: "Document events",
|
|
10521
|
+
requiredScopes: [
|
|
10522
|
+
"documents-read-access"
|
|
10523
|
+
],
|
|
10524
|
+
requiredGates: [],
|
|
10525
|
+
sampleWorkflowId: "3955857631",
|
|
10526
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_document_shared_v2",
|
|
10527
|
+
sampleStatus: "created"
|
|
10528
|
+
},
|
|
10529
|
+
{
|
|
10530
|
+
catalogId: "e_document_viewed_v2",
|
|
10531
|
+
eventTypeId: "4-1522436",
|
|
10532
|
+
eventTypeInnerId: 1522436,
|
|
10533
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10534
|
+
officialOperator: "HAS_COMPLETED",
|
|
10535
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10536
|
+
officialFiltersExample: [],
|
|
10537
|
+
triggerCategoryId: "contactInteraction",
|
|
10538
|
+
modernCategoryId: "communication",
|
|
10539
|
+
triggerGroupLabel: "Document events",
|
|
10540
|
+
requiredScopes: [
|
|
10541
|
+
"documents-read-access"
|
|
10542
|
+
],
|
|
10543
|
+
requiredGates: [],
|
|
10544
|
+
sampleWorkflowId: "3955857633",
|
|
10545
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_document_viewed_v2",
|
|
10546
|
+
sampleStatus: "created"
|
|
10547
|
+
},
|
|
10548
|
+
{
|
|
10549
|
+
catalogId: "e_dropped_shortmessage",
|
|
10550
|
+
eventTypeId: "4-1725149",
|
|
10551
|
+
eventTypeInnerId: 1725149,
|
|
10552
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10553
|
+
officialOperator: "HAS_COMPLETED",
|
|
10554
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10555
|
+
officialFiltersExample: [],
|
|
10556
|
+
triggerCategoryId: "contactInteraction",
|
|
10557
|
+
modernCategoryId: "sms",
|
|
10558
|
+
triggerGroupLabel: "SMS events",
|
|
10559
|
+
requiredScopes: [
|
|
10560
|
+
"sms-marketing-addon"
|
|
10561
|
+
],
|
|
10562
|
+
requiredGates: [],
|
|
10563
|
+
sampleWorkflowId: "3955897563",
|
|
10564
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_dropped_shortmessage",
|
|
10565
|
+
sampleStatus: "created"
|
|
10566
|
+
},
|
|
10567
|
+
{
|
|
10568
|
+
catalogId: "e_dropped_whatsapp_message",
|
|
10569
|
+
eventTypeId: "4-5076608",
|
|
10570
|
+
eventTypeInnerId: 5076608,
|
|
10571
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10572
|
+
officialOperator: "HAS_COMPLETED",
|
|
10573
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10574
|
+
officialFiltersExample: [],
|
|
10575
|
+
triggerCategoryId: "contactInteraction",
|
|
10576
|
+
modernCategoryId: "whats_app",
|
|
10577
|
+
triggerGroupLabel: "WhatsApp events",
|
|
10578
|
+
requiredScopes: [],
|
|
10579
|
+
requiredGates: [
|
|
10580
|
+
"MPG:WhatsAppV2"
|
|
10581
|
+
],
|
|
10582
|
+
sampleWorkflowId: "3955791045",
|
|
10583
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_dropped_whatsapp_message",
|
|
10584
|
+
sampleStatus: "created"
|
|
10585
|
+
},
|
|
10586
|
+
{
|
|
10587
|
+
catalogId: "e_email_bounce_detected",
|
|
10588
|
+
eventTypeId: "4-5470331",
|
|
10589
|
+
eventTypeInnerId: 5470331,
|
|
10590
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10591
|
+
officialOperator: "HAS_COMPLETED",
|
|
10592
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10593
|
+
officialFiltersExample: [],
|
|
10594
|
+
triggerCategoryId: "data",
|
|
10595
|
+
modernCategoryId: "buyer_company_insights",
|
|
10596
|
+
triggerGroupLabel: "Contact signal events",
|
|
10597
|
+
requiredScopes: [
|
|
10598
|
+
"data-enrichment-platform-access"
|
|
10599
|
+
],
|
|
10600
|
+
requiredGates: [],
|
|
10601
|
+
sampleWorkflowId: "3955891425",
|
|
10602
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_email_bounce_detected",
|
|
10603
|
+
sampleStatus: "created"
|
|
10604
|
+
},
|
|
10605
|
+
{
|
|
10606
|
+
catalogId: "e_failed_to_deliver_shortmessage",
|
|
10607
|
+
eventTypeId: "4-1752910",
|
|
10608
|
+
eventTypeInnerId: 1752910,
|
|
10609
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10610
|
+
officialOperator: "HAS_COMPLETED",
|
|
10611
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10612
|
+
officialFiltersExample: [],
|
|
10613
|
+
triggerCategoryId: "contactInteraction",
|
|
10614
|
+
modernCategoryId: "sms",
|
|
10615
|
+
triggerGroupLabel: "SMS events",
|
|
10616
|
+
requiredScopes: [
|
|
10617
|
+
"sms-marketing-addon"
|
|
10618
|
+
],
|
|
10619
|
+
requiredGates: [],
|
|
10620
|
+
sampleWorkflowId: "3955853524",
|
|
10621
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_failed_to_deliver_shortmessage",
|
|
10622
|
+
sampleStatus: "created"
|
|
10623
|
+
},
|
|
10624
|
+
{
|
|
10625
|
+
catalogId: "e_failed_to_send_shortmessage",
|
|
10626
|
+
eventTypeId: "4-1752904",
|
|
10627
|
+
eventTypeInnerId: 1752904,
|
|
10628
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10629
|
+
officialOperator: "HAS_COMPLETED",
|
|
10630
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10631
|
+
officialFiltersExample: [],
|
|
10632
|
+
triggerCategoryId: "contactInteraction",
|
|
10633
|
+
modernCategoryId: "sms",
|
|
10634
|
+
triggerGroupLabel: "SMS events",
|
|
10635
|
+
requiredScopes: [
|
|
10636
|
+
"sms-marketing-addon"
|
|
10637
|
+
],
|
|
10638
|
+
requiredGates: [],
|
|
10639
|
+
sampleWorkflowId: "3955861718",
|
|
10640
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_failed_to_send_shortmessage",
|
|
10641
|
+
sampleStatus: "created"
|
|
10642
|
+
},
|
|
10643
|
+
{
|
|
10644
|
+
catalogId: "e_failed_whatsapp_message",
|
|
10645
|
+
eventTypeId: "4-6607542",
|
|
10646
|
+
eventTypeInnerId: 6607542,
|
|
10647
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10648
|
+
officialOperator: "HAS_COMPLETED",
|
|
10649
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10650
|
+
officialFiltersExample: [],
|
|
10651
|
+
triggerCategoryId: "contactInteraction",
|
|
10652
|
+
modernCategoryId: "whats_app",
|
|
10653
|
+
triggerGroupLabel: "WhatsApp events",
|
|
10654
|
+
requiredScopes: [],
|
|
10655
|
+
requiredGates: [
|
|
10656
|
+
"MPG:WhatsAppV2"
|
|
10657
|
+
],
|
|
10658
|
+
sampleWorkflowId: "3955755197",
|
|
10659
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_failed_whatsapp_message",
|
|
10660
|
+
sampleStatus: "created"
|
|
10661
|
+
},
|
|
10662
|
+
{
|
|
10663
|
+
catalogId: "e_feedback_mention",
|
|
10664
|
+
eventTypeId: "4-4481980",
|
|
10665
|
+
eventTypeInnerId: 4481980,
|
|
10666
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10667
|
+
officialOperator: "HAS_COMPLETED",
|
|
10668
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10669
|
+
officialFiltersExample: [],
|
|
10670
|
+
triggerCategoryId: "contactInteraction",
|
|
10671
|
+
modernCategoryId: "communication",
|
|
10672
|
+
triggerGroupLabel: "Feedback insights events",
|
|
10673
|
+
requiredScopes: [
|
|
10674
|
+
"service-feedback-enterprise-access"
|
|
10675
|
+
],
|
|
10676
|
+
requiredGates: [
|
|
10677
|
+
"ServiceHub:Feedback:FeedbackInsights"
|
|
10678
|
+
],
|
|
10679
|
+
sampleWorkflowId: "3955765495",
|
|
10680
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_feedback_mention",
|
|
10681
|
+
sampleStatus: "created"
|
|
10682
|
+
},
|
|
10683
|
+
{
|
|
10684
|
+
catalogId: "e_form_interaction_v2",
|
|
10685
|
+
eventTypeId: "4-1639799",
|
|
10686
|
+
eventTypeInnerId: 1639799,
|
|
10687
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10688
|
+
officialOperator: "HAS_COMPLETED",
|
|
10689
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10690
|
+
officialFiltersExample: [],
|
|
10691
|
+
triggerCategoryId: "digitalInteraction",
|
|
10692
|
+
modernCategoryId: "media",
|
|
10693
|
+
triggerGroupLabel: "Form events",
|
|
10694
|
+
requiredScopes: [],
|
|
10695
|
+
requiredGates: [],
|
|
10696
|
+
sampleWorkflowId: "3954291947",
|
|
10697
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_form_interaction_v2",
|
|
10698
|
+
sampleStatus: "created"
|
|
10699
|
+
},
|
|
10700
|
+
{
|
|
10701
|
+
catalogId: "e_form_submission_v2",
|
|
10702
|
+
eventTypeId: "4-1639801",
|
|
10703
|
+
eventTypeInnerId: 1639801,
|
|
10704
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10705
|
+
officialOperator: "HAS_COMPLETED",
|
|
10706
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10707
|
+
officialFiltersExample: [],
|
|
10708
|
+
triggerCategoryId: "digitalInteraction",
|
|
10709
|
+
modernCategoryId: "media",
|
|
10710
|
+
triggerGroupLabel: "Form events",
|
|
10711
|
+
requiredScopes: [],
|
|
10712
|
+
requiredGates: [],
|
|
10713
|
+
sampleWorkflowId: "3953876199",
|
|
10714
|
+
sampleWorkflowName: "MCP Trigger Matrix - Form Submission",
|
|
10715
|
+
sampleStatus: "created"
|
|
10716
|
+
},
|
|
10717
|
+
{
|
|
10718
|
+
catalogId: "e_form_view_v2",
|
|
10719
|
+
eventTypeId: "4-1639797",
|
|
10720
|
+
eventTypeInnerId: 1639797,
|
|
10721
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10722
|
+
officialOperator: "HAS_COMPLETED",
|
|
10723
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10724
|
+
officialFiltersExample: [],
|
|
10725
|
+
triggerCategoryId: "digitalInteraction",
|
|
10726
|
+
modernCategoryId: "media",
|
|
10727
|
+
triggerGroupLabel: "Form events",
|
|
10728
|
+
requiredScopes: [],
|
|
10729
|
+
requiredGates: [],
|
|
10730
|
+
sampleWorkflowId: "3954291950",
|
|
10731
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_form_view_v2",
|
|
10732
|
+
sampleStatus: "created"
|
|
10733
|
+
},
|
|
10734
|
+
{
|
|
10735
|
+
catalogId: "e_handed_whatsapp_message_to_agent",
|
|
10736
|
+
eventTypeId: "4-5076607",
|
|
10737
|
+
eventTypeInnerId: 5076607,
|
|
10738
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10739
|
+
officialOperator: "HAS_COMPLETED",
|
|
10740
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10741
|
+
officialFiltersExample: [],
|
|
10742
|
+
triggerCategoryId: "contactInteraction",
|
|
10743
|
+
modernCategoryId: "whats_app",
|
|
10744
|
+
triggerGroupLabel: "WhatsApp events",
|
|
10745
|
+
requiredScopes: [],
|
|
10746
|
+
requiredGates: [
|
|
10747
|
+
"MPG:WhatsAppV2"
|
|
10748
|
+
],
|
|
10749
|
+
sampleWorkflowId: "3955770574",
|
|
10750
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_handed_whatsapp_message_to_agent",
|
|
10751
|
+
sampleStatus: "created"
|
|
10752
|
+
},
|
|
10753
|
+
{
|
|
10754
|
+
catalogId: "e_hs_scheduled_email_v2",
|
|
10755
|
+
eventTypeId: "4-667638",
|
|
10756
|
+
eventTypeInnerId: 667638,
|
|
10757
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10758
|
+
officialOperator: "HAS_COMPLETED",
|
|
10759
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10760
|
+
officialFiltersExample: [],
|
|
10761
|
+
triggerCategoryId: "contactInteraction",
|
|
10762
|
+
modernCategoryId: "email",
|
|
10763
|
+
triggerGroupLabel: "Email events",
|
|
10764
|
+
requiredScopes: [],
|
|
10765
|
+
requiredGates: [],
|
|
10766
|
+
sampleWorkflowId: "3954290916",
|
|
10767
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_hs_scheduled_email_v2",
|
|
10768
|
+
sampleStatus: "created"
|
|
10769
|
+
},
|
|
10770
|
+
{
|
|
10771
|
+
catalogId: "e_mb_attention_span",
|
|
10772
|
+
eventTypeId: "4-675784",
|
|
10773
|
+
eventTypeInnerId: 675784,
|
|
10774
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10775
|
+
officialOperator: "HAS_COMPLETED",
|
|
10776
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10777
|
+
officialFiltersExample: [],
|
|
10778
|
+
triggerCategoryId: "digitalInteraction",
|
|
10779
|
+
modernCategoryId: "media",
|
|
10780
|
+
triggerGroupLabel: "Video events",
|
|
10781
|
+
requiredScopes: [
|
|
10782
|
+
"marketing-video"
|
|
10783
|
+
],
|
|
10784
|
+
requiredGates: [
|
|
10785
|
+
"MediaContent::AttentionSpanWorkflowTrigger"
|
|
10786
|
+
],
|
|
10787
|
+
sampleWorkflowId: "3955774698",
|
|
10788
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_mb_attention_span",
|
|
10789
|
+
sampleStatus: "created"
|
|
10790
|
+
},
|
|
10791
|
+
{
|
|
10792
|
+
catalogId: "e_mb_media_played",
|
|
10793
|
+
eventTypeId: "4-675783",
|
|
10794
|
+
eventTypeInnerId: 675783,
|
|
10795
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10796
|
+
officialOperator: "HAS_COMPLETED",
|
|
10797
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10798
|
+
officialFiltersExample: [],
|
|
10799
|
+
triggerCategoryId: "digitalInteraction",
|
|
10800
|
+
modernCategoryId: "media",
|
|
10801
|
+
triggerGroupLabel: "Video events",
|
|
10802
|
+
requiredScopes: [],
|
|
10803
|
+
requiredGates: [],
|
|
10804
|
+
sampleWorkflowId: "3954290914",
|
|
10805
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_mb_media_played",
|
|
10806
|
+
sampleStatus: "created"
|
|
10807
|
+
},
|
|
10808
|
+
{
|
|
10809
|
+
catalogId: "e_mta_bounced_email_v2",
|
|
10810
|
+
eventTypeId: "4-666439",
|
|
10811
|
+
eventTypeInnerId: 666439,
|
|
10812
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10813
|
+
officialOperator: "HAS_COMPLETED",
|
|
10814
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10815
|
+
officialFiltersExample: [],
|
|
10816
|
+
triggerCategoryId: "contactInteraction",
|
|
10817
|
+
modernCategoryId: "email",
|
|
10818
|
+
triggerGroupLabel: "Email events",
|
|
10819
|
+
requiredScopes: [],
|
|
10820
|
+
requiredGates: [],
|
|
10821
|
+
sampleWorkflowId: "3954291942",
|
|
10822
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_mta_bounced_email_v2",
|
|
10823
|
+
sampleStatus: "created"
|
|
10824
|
+
},
|
|
10825
|
+
{
|
|
10826
|
+
catalogId: "e_mta_delivered_email_v2",
|
|
10827
|
+
eventTypeId: "4-665536",
|
|
10828
|
+
eventTypeInnerId: 665536,
|
|
10829
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10830
|
+
officialOperator: "HAS_COMPLETED",
|
|
10831
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10832
|
+
officialFiltersExample: [],
|
|
10833
|
+
triggerCategoryId: "contactInteraction",
|
|
10834
|
+
modernCategoryId: "email",
|
|
10835
|
+
triggerGroupLabel: "Email events",
|
|
10836
|
+
requiredScopes: [],
|
|
10837
|
+
requiredGates: [],
|
|
10838
|
+
sampleWorkflowId: "3954291941",
|
|
10839
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_mta_delivered_email_v2",
|
|
10840
|
+
sampleStatus: "created"
|
|
10841
|
+
},
|
|
10842
|
+
{
|
|
10843
|
+
catalogId: "e_object_created_v2",
|
|
10844
|
+
eventTypeId: "4-1463224",
|
|
10845
|
+
eventTypeInnerId: 1463224,
|
|
10846
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10847
|
+
officialOperator: "HAS_COMPLETED",
|
|
10848
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10849
|
+
officialFiltersExample: [],
|
|
10850
|
+
triggerCategoryId: "data",
|
|
10851
|
+
modernCategoryId: "crm",
|
|
10852
|
+
triggerGroupLabel: "",
|
|
10853
|
+
requiredScopes: [],
|
|
10854
|
+
requiredGates: [],
|
|
10855
|
+
sampleWorkflowId: "3953877192",
|
|
10856
|
+
sampleWorkflowName: "MCP Trigger Matrix - Record Created",
|
|
10857
|
+
sampleStatus: "created"
|
|
10858
|
+
},
|
|
10859
|
+
{
|
|
10860
|
+
catalogId: "e_object_influenced_marketing_campaign_v4",
|
|
10861
|
+
eventTypeId: "4-1563645",
|
|
10862
|
+
eventTypeInnerId: 1563645,
|
|
10863
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10864
|
+
officialOperator: "HAS_COMPLETED",
|
|
10865
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10866
|
+
officialFiltersExample: [],
|
|
10867
|
+
triggerCategoryId: "digitalInteraction",
|
|
10868
|
+
modernCategoryId: "media",
|
|
10869
|
+
triggerGroupLabel: "CRM",
|
|
10870
|
+
requiredScopes: [
|
|
10871
|
+
"campaigns-access"
|
|
10872
|
+
],
|
|
10873
|
+
requiredGates: [
|
|
10874
|
+
"MO:Automation:WorkflowsCampaign"
|
|
10875
|
+
],
|
|
10876
|
+
sampleWorkflowId: "3955897564",
|
|
10877
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_object_influenced_marketing_campaign_v4",
|
|
10878
|
+
sampleStatus: "created"
|
|
10879
|
+
},
|
|
10880
|
+
{
|
|
10881
|
+
catalogId: "e_opened_email_v2",
|
|
10882
|
+
eventTypeId: "4-666440",
|
|
10883
|
+
eventTypeInnerId: 666440,
|
|
10884
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10885
|
+
officialOperator: "HAS_COMPLETED",
|
|
10886
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10887
|
+
officialFiltersExample: [],
|
|
10888
|
+
triggerCategoryId: "contactInteraction",
|
|
10889
|
+
modernCategoryId: "email",
|
|
10890
|
+
triggerGroupLabel: "Email events",
|
|
10891
|
+
requiredScopes: [],
|
|
10892
|
+
requiredGates: [],
|
|
10893
|
+
sampleWorkflowId: "3954291936",
|
|
10894
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_opened_email_v2",
|
|
10895
|
+
sampleStatus: "created"
|
|
10896
|
+
},
|
|
10897
|
+
{
|
|
10898
|
+
catalogId: "e_opted_out_of_whatsapp_subscription",
|
|
10899
|
+
eventTypeId: "4-6911595",
|
|
10900
|
+
eventTypeInnerId: 6911595,
|
|
10901
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10902
|
+
officialOperator: "HAS_COMPLETED",
|
|
10903
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10904
|
+
officialFiltersExample: [],
|
|
10905
|
+
triggerCategoryId: "contactInteraction",
|
|
10906
|
+
modernCategoryId: "whats_app",
|
|
10907
|
+
triggerGroupLabel: "WhatsApp events",
|
|
10908
|
+
requiredScopes: [],
|
|
10909
|
+
requiredGates: [],
|
|
10910
|
+
sampleWorkflowId: "3954292926",
|
|
10911
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_opted_out_of_whatsapp_subscription",
|
|
10912
|
+
sampleStatus: "created"
|
|
10913
|
+
},
|
|
10914
|
+
{
|
|
10915
|
+
catalogId: "e_playbook_log_on_record",
|
|
10916
|
+
eventTypeId: "4-1814177",
|
|
10917
|
+
eventTypeInnerId: 1814177,
|
|
10918
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10919
|
+
officialOperator: "HAS_COMPLETED",
|
|
10920
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10921
|
+
officialFiltersExample: [],
|
|
10922
|
+
triggerCategoryId: "data",
|
|
10923
|
+
modernCategoryId: "crm",
|
|
10924
|
+
triggerGroupLabel: "",
|
|
10925
|
+
requiredScopes: [
|
|
10926
|
+
"playbooks-write"
|
|
10927
|
+
],
|
|
10928
|
+
requiredGates: [],
|
|
10929
|
+
sampleWorkflowId: "3955760363",
|
|
10930
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_playbook_log_on_record",
|
|
10931
|
+
sampleStatus: "created"
|
|
10932
|
+
},
|
|
10933
|
+
{
|
|
10934
|
+
catalogId: "e_process_submission_completed_on_object",
|
|
10935
|
+
eventTypeId: "4-3499849",
|
|
10936
|
+
eventTypeInnerId: 3499849,
|
|
10937
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10938
|
+
officialOperator: "HAS_COMPLETED",
|
|
10939
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10940
|
+
officialFiltersExample: [],
|
|
10941
|
+
triggerCategoryId: "data",
|
|
10942
|
+
modernCategoryId: "crm",
|
|
10943
|
+
triggerGroupLabel: "",
|
|
10944
|
+
requiredScopes: [
|
|
10945
|
+
"crm-processes-write"
|
|
10946
|
+
],
|
|
10947
|
+
requiredGates: [
|
|
10948
|
+
"CRM:Processes:ProcessGuideListCard"
|
|
10949
|
+
],
|
|
10950
|
+
sampleWorkflowId: "3955853526",
|
|
10951
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_process_submission_completed_on_object",
|
|
10952
|
+
sampleStatus: "created"
|
|
10953
|
+
},
|
|
10954
|
+
{
|
|
10955
|
+
catalogId: "e_property_value_changed",
|
|
10956
|
+
eventTypeId: "4-655002",
|
|
10957
|
+
eventTypeInnerId: 655002,
|
|
10958
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10959
|
+
officialOperator: "HAS_COMPLETED",
|
|
10960
|
+
officialFilterTemplate: "property_value_changed_named_property",
|
|
10961
|
+
officialFiltersExample: [
|
|
10962
|
+
{
|
|
10963
|
+
property: "hs_name",
|
|
10964
|
+
operation: {
|
|
10965
|
+
operator: "IS_EQUAL_TO",
|
|
10966
|
+
includeObjectsWithNoValueSet: false,
|
|
10967
|
+
value: "firstname",
|
|
10968
|
+
operationType: "STRING"
|
|
10969
|
+
},
|
|
10970
|
+
filterType: "PROPERTY"
|
|
10971
|
+
},
|
|
10972
|
+
{
|
|
10973
|
+
property: "hs_value",
|
|
10974
|
+
operation: {
|
|
10975
|
+
operator: "IS_KNOWN",
|
|
10976
|
+
includeObjectsWithNoValueSet: false,
|
|
10977
|
+
operationType: "ALL_PROPERTY"
|
|
10978
|
+
},
|
|
10979
|
+
filterType: "PROPERTY"
|
|
10980
|
+
}
|
|
10981
|
+
],
|
|
10982
|
+
triggerCategoryId: "data",
|
|
10983
|
+
modernCategoryId: "crm",
|
|
10984
|
+
triggerGroupLabel: "",
|
|
10985
|
+
requiredScopes: [],
|
|
10986
|
+
requiredGates: [],
|
|
10987
|
+
sampleWorkflowId: "3953876196",
|
|
10988
|
+
sampleWorkflowName: "MCP Trigger Matrix - Property Changed - First Name Known",
|
|
10989
|
+
sampleStatus: "created"
|
|
10990
|
+
},
|
|
10991
|
+
{
|
|
10992
|
+
catalogId: "e_public_quote_download",
|
|
10993
|
+
eventTypeId: "4-3395636",
|
|
10994
|
+
eventTypeInnerId: 3395636,
|
|
10995
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
10996
|
+
officialOperator: "HAS_COMPLETED",
|
|
10997
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
10998
|
+
officialFiltersExample: [],
|
|
10999
|
+
triggerCategoryId: "data",
|
|
11000
|
+
modernCategoryId: "crm",
|
|
11001
|
+
triggerGroupLabel: "Quote events",
|
|
11002
|
+
requiredScopes: [
|
|
11003
|
+
"cpq-quote-access"
|
|
11004
|
+
],
|
|
11005
|
+
requiredGates: [
|
|
11006
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11007
|
+
],
|
|
11008
|
+
sampleWorkflowId: "3955770575",
|
|
11009
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_public_quote_download",
|
|
11010
|
+
sampleStatus: "created"
|
|
11011
|
+
},
|
|
11012
|
+
{
|
|
11013
|
+
catalogId: "e_quote_accepted",
|
|
11014
|
+
eventTypeId: "4-4035552",
|
|
11015
|
+
eventTypeInnerId: 4035552,
|
|
11016
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11017
|
+
officialOperator: "HAS_COMPLETED",
|
|
11018
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11019
|
+
officialFiltersExample: [],
|
|
11020
|
+
triggerCategoryId: "data",
|
|
11021
|
+
modernCategoryId: "crm",
|
|
11022
|
+
triggerGroupLabel: "Quote events",
|
|
11023
|
+
requiredScopes: [
|
|
11024
|
+
"cpq-quote-access"
|
|
11025
|
+
],
|
|
11026
|
+
requiredGates: [
|
|
11027
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11028
|
+
],
|
|
11029
|
+
sampleWorkflowId: "3955897565",
|
|
11030
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_accepted",
|
|
11031
|
+
sampleStatus: "created"
|
|
11032
|
+
},
|
|
11033
|
+
{
|
|
11034
|
+
catalogId: "e_quote_approval_approved",
|
|
11035
|
+
eventTypeId: "4-4940920",
|
|
11036
|
+
eventTypeInnerId: 4940920,
|
|
11037
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11038
|
+
officialOperator: "HAS_COMPLETED",
|
|
11039
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11040
|
+
officialFiltersExample: [],
|
|
11041
|
+
triggerCategoryId: "data",
|
|
11042
|
+
modernCategoryId: "crm",
|
|
11043
|
+
triggerGroupLabel: "Quote events",
|
|
11044
|
+
requiredScopes: [
|
|
11045
|
+
"cpq-quote-access"
|
|
11046
|
+
],
|
|
11047
|
+
requiredGates: [
|
|
11048
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11049
|
+
],
|
|
11050
|
+
sampleWorkflowId: "3955785963",
|
|
11051
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_approval_approved",
|
|
11052
|
+
sampleStatus: "created"
|
|
11053
|
+
},
|
|
11054
|
+
{
|
|
11055
|
+
catalogId: "e_quote_approval_recalled",
|
|
11056
|
+
eventTypeId: "4-6300050",
|
|
11057
|
+
eventTypeInnerId: 6300050,
|
|
11058
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11059
|
+
officialOperator: "HAS_COMPLETED",
|
|
11060
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11061
|
+
officialFiltersExample: [],
|
|
11062
|
+
triggerCategoryId: "data",
|
|
11063
|
+
modernCategoryId: "crm",
|
|
11064
|
+
triggerGroupLabel: "Quote events",
|
|
11065
|
+
requiredScopes: [
|
|
11066
|
+
"cpq-quote-access"
|
|
11067
|
+
],
|
|
11068
|
+
requiredGates: [
|
|
11069
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11070
|
+
],
|
|
11071
|
+
sampleWorkflowId: "3955770577",
|
|
11072
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_approval_recalled",
|
|
11073
|
+
sampleStatus: "created"
|
|
11074
|
+
},
|
|
11075
|
+
{
|
|
11076
|
+
catalogId: "e_quote_approval_rejected",
|
|
11077
|
+
eventTypeId: "4-4940921",
|
|
11078
|
+
eventTypeInnerId: 4940921,
|
|
11079
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11080
|
+
officialOperator: "HAS_COMPLETED",
|
|
11081
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11082
|
+
officialFiltersExample: [],
|
|
11083
|
+
triggerCategoryId: "data",
|
|
11084
|
+
modernCategoryId: "crm",
|
|
11085
|
+
triggerGroupLabel: "Quote events",
|
|
11086
|
+
requiredScopes: [
|
|
11087
|
+
"cpq-quote-access"
|
|
11088
|
+
],
|
|
11089
|
+
requiredGates: [
|
|
11090
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11091
|
+
],
|
|
11092
|
+
sampleWorkflowId: "3955886327",
|
|
11093
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_approval_rejected",
|
|
11094
|
+
sampleStatus: "created"
|
|
11095
|
+
},
|
|
11096
|
+
{
|
|
11097
|
+
catalogId: "e_quote_approval_requested",
|
|
11098
|
+
eventTypeId: "4-4967160",
|
|
11099
|
+
eventTypeInnerId: 4967160,
|
|
11100
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11101
|
+
officialOperator: "HAS_COMPLETED",
|
|
11102
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11103
|
+
officialFiltersExample: [],
|
|
11104
|
+
triggerCategoryId: "data",
|
|
11105
|
+
modernCategoryId: "crm",
|
|
11106
|
+
triggerGroupLabel: "Quote events",
|
|
11107
|
+
requiredScopes: [
|
|
11108
|
+
"cpq-quote-access"
|
|
11109
|
+
],
|
|
11110
|
+
requiredGates: [
|
|
11111
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11112
|
+
],
|
|
11113
|
+
sampleWorkflowId: "3956004061",
|
|
11114
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_approval_requested",
|
|
11115
|
+
sampleStatus: "created"
|
|
11116
|
+
},
|
|
11117
|
+
{
|
|
11118
|
+
catalogId: "e_quote_buyer_signed",
|
|
11119
|
+
eventTypeId: "4-6300056",
|
|
11120
|
+
eventTypeInnerId: 6300056,
|
|
11121
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11122
|
+
officialOperator: "HAS_COMPLETED",
|
|
11123
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11124
|
+
officialFiltersExample: [],
|
|
11125
|
+
triggerCategoryId: "data",
|
|
11126
|
+
modernCategoryId: "crm",
|
|
11127
|
+
triggerGroupLabel: "Quote events",
|
|
11128
|
+
requiredScopes: [
|
|
11129
|
+
"cpq-quote-access"
|
|
11130
|
+
],
|
|
11131
|
+
requiredGates: [
|
|
11132
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11133
|
+
],
|
|
11134
|
+
sampleWorkflowId: "3956004062",
|
|
11135
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_buyer_signed",
|
|
11136
|
+
sampleStatus: "created"
|
|
11137
|
+
},
|
|
11138
|
+
{
|
|
11139
|
+
catalogId: "e_quote_countersigned",
|
|
11140
|
+
eventTypeId: "4-5076606",
|
|
11141
|
+
eventTypeInnerId: 5076606,
|
|
11142
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11143
|
+
officialOperator: "HAS_COMPLETED",
|
|
11144
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11145
|
+
officialFiltersExample: [],
|
|
11146
|
+
triggerCategoryId: "data",
|
|
11147
|
+
modernCategoryId: "crm",
|
|
11148
|
+
triggerGroupLabel: "Quote events",
|
|
11149
|
+
requiredScopes: [
|
|
11150
|
+
"cpq-quote-access"
|
|
11151
|
+
],
|
|
11152
|
+
requiredGates: [
|
|
11153
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11154
|
+
],
|
|
11155
|
+
sampleWorkflowId: "3955760364",
|
|
11156
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_countersigned",
|
|
11157
|
+
sampleStatus: "created"
|
|
11158
|
+
},
|
|
11159
|
+
{
|
|
11160
|
+
catalogId: "e_quote_email_sent",
|
|
11161
|
+
eventTypeId: "4-2006192",
|
|
11162
|
+
eventTypeInnerId: 2006192,
|
|
11163
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11164
|
+
officialOperator: "HAS_COMPLETED",
|
|
11165
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11166
|
+
officialFiltersExample: [],
|
|
11167
|
+
triggerCategoryId: "data",
|
|
11168
|
+
modernCategoryId: "crm",
|
|
11169
|
+
triggerGroupLabel: "Quote events",
|
|
11170
|
+
requiredScopes: [
|
|
11171
|
+
"cpq-quote-access"
|
|
11172
|
+
],
|
|
11173
|
+
requiredGates: [
|
|
11174
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11175
|
+
],
|
|
11176
|
+
sampleWorkflowId: "3955872987",
|
|
11177
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_email_sent",
|
|
11178
|
+
sampleStatus: "created"
|
|
11179
|
+
},
|
|
11180
|
+
{
|
|
11181
|
+
catalogId: "e_quote_expiration_reminder_email",
|
|
11182
|
+
eventTypeId: "4-5470322",
|
|
11183
|
+
eventTypeInnerId: 5470322,
|
|
11184
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11185
|
+
officialOperator: "HAS_COMPLETED",
|
|
11186
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11187
|
+
officialFiltersExample: [],
|
|
11188
|
+
triggerCategoryId: "data",
|
|
11189
|
+
modernCategoryId: "crm",
|
|
11190
|
+
triggerGroupLabel: "Quote events",
|
|
11191
|
+
requiredScopes: [
|
|
11192
|
+
"cpq-quote-access"
|
|
11193
|
+
],
|
|
11194
|
+
requiredGates: [
|
|
11195
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11196
|
+
],
|
|
11197
|
+
sampleWorkflowId: "3955897567",
|
|
11198
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_expiration_reminder_email",
|
|
11199
|
+
sampleStatus: "created"
|
|
11200
|
+
},
|
|
11201
|
+
{
|
|
11202
|
+
catalogId: "e_quote_expired",
|
|
11203
|
+
eventTypeId: "4-6300054",
|
|
11204
|
+
eventTypeInnerId: 6300054,
|
|
11205
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11206
|
+
officialOperator: "HAS_COMPLETED",
|
|
11207
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11208
|
+
officialFiltersExample: [],
|
|
11209
|
+
triggerCategoryId: "data",
|
|
11210
|
+
modernCategoryId: "crm",
|
|
11211
|
+
triggerGroupLabel: "Quote events",
|
|
11212
|
+
requiredScopes: [
|
|
11213
|
+
"cpq-quote-access"
|
|
11214
|
+
],
|
|
11215
|
+
requiredGates: [
|
|
11216
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11217
|
+
],
|
|
11218
|
+
sampleWorkflowId: "3956004064",
|
|
11219
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_expired",
|
|
11220
|
+
sampleStatus: "created"
|
|
11221
|
+
},
|
|
11222
|
+
{
|
|
11223
|
+
catalogId: "e_quote_followup_reminder_email",
|
|
11224
|
+
eventTypeId: "4-5470323",
|
|
11225
|
+
eventTypeInnerId: 5470323,
|
|
11226
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11227
|
+
officialOperator: "HAS_COMPLETED",
|
|
11228
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11229
|
+
officialFiltersExample: [],
|
|
11230
|
+
triggerCategoryId: "data",
|
|
11231
|
+
modernCategoryId: "crm",
|
|
11232
|
+
triggerGroupLabel: "Quote events",
|
|
11233
|
+
requiredScopes: [
|
|
11234
|
+
"cpq-quote-access"
|
|
11235
|
+
],
|
|
11236
|
+
requiredGates: [
|
|
11237
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11238
|
+
],
|
|
11239
|
+
sampleWorkflowId: "3955770579",
|
|
11240
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_followup_reminder_email",
|
|
11241
|
+
sampleStatus: "created"
|
|
11242
|
+
},
|
|
11243
|
+
{
|
|
11244
|
+
catalogId: "e_quote_manually_signed",
|
|
11245
|
+
eventTypeId: "4-6300053",
|
|
11246
|
+
eventTypeInnerId: 6300053,
|
|
11247
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11248
|
+
officialOperator: "HAS_COMPLETED",
|
|
11249
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11250
|
+
officialFiltersExample: [],
|
|
11251
|
+
triggerCategoryId: "data",
|
|
11252
|
+
modernCategoryId: "crm",
|
|
11253
|
+
triggerGroupLabel: "Quote events",
|
|
11254
|
+
requiredScopes: [
|
|
11255
|
+
"cpq-quote-access"
|
|
11256
|
+
],
|
|
11257
|
+
requiredGates: [
|
|
11258
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11259
|
+
],
|
|
11260
|
+
sampleWorkflowId: "3955887290",
|
|
11261
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_manually_signed",
|
|
11262
|
+
sampleStatus: "created"
|
|
11263
|
+
},
|
|
11264
|
+
{
|
|
11265
|
+
catalogId: "e_quote_published",
|
|
11266
|
+
eventTypeId: "4-5470320",
|
|
11267
|
+
eventTypeInnerId: 5470320,
|
|
11268
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11269
|
+
officialOperator: "HAS_COMPLETED",
|
|
11270
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11271
|
+
officialFiltersExample: [],
|
|
11272
|
+
triggerCategoryId: "data",
|
|
11273
|
+
modernCategoryId: "crm",
|
|
11274
|
+
triggerGroupLabel: "Quote events",
|
|
11275
|
+
requiredScopes: [
|
|
11276
|
+
"cpq-quote-access"
|
|
11277
|
+
],
|
|
11278
|
+
requiredGates: [
|
|
11279
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11280
|
+
],
|
|
11281
|
+
sampleWorkflowId: "3955861720",
|
|
11282
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_published",
|
|
11283
|
+
sampleStatus: "created"
|
|
11284
|
+
},
|
|
11285
|
+
{
|
|
11286
|
+
catalogId: "e_quote_recalled",
|
|
11287
|
+
eventTypeId: "4-4810356",
|
|
11288
|
+
eventTypeInnerId: 4810356,
|
|
11289
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11290
|
+
officialOperator: "HAS_COMPLETED",
|
|
11291
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11292
|
+
officialFiltersExample: [],
|
|
11293
|
+
triggerCategoryId: "data",
|
|
11294
|
+
modernCategoryId: "crm",
|
|
11295
|
+
triggerGroupLabel: "Quote events",
|
|
11296
|
+
requiredScopes: [
|
|
11297
|
+
"cpq-quote-access"
|
|
11298
|
+
],
|
|
11299
|
+
requiredGates: [
|
|
11300
|
+
"commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"
|
|
11301
|
+
],
|
|
11302
|
+
sampleWorkflowId: "3955861721",
|
|
11303
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_quote_recalled",
|
|
11304
|
+
sampleStatus: "created"
|
|
11305
|
+
},
|
|
11306
|
+
{
|
|
11307
|
+
catalogId: "e_read_whatsapp_message",
|
|
11308
|
+
eventTypeId: "4-6607540",
|
|
11309
|
+
eventTypeInnerId: 6607540,
|
|
11310
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11311
|
+
officialOperator: "HAS_COMPLETED",
|
|
11312
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11313
|
+
officialFiltersExample: [],
|
|
11314
|
+
triggerCategoryId: "contactInteraction",
|
|
11315
|
+
modernCategoryId: "whats_app",
|
|
11316
|
+
triggerGroupLabel: "WhatsApp events",
|
|
11317
|
+
requiredScopes: [],
|
|
11318
|
+
requiredGates: [
|
|
11319
|
+
"MPG:WhatsAppV2"
|
|
11320
|
+
],
|
|
11321
|
+
sampleWorkflowId: "3955861723",
|
|
11322
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_read_whatsapp_message",
|
|
11323
|
+
sampleStatus: "created"
|
|
11324
|
+
},
|
|
11325
|
+
{
|
|
11326
|
+
catalogId: "e_replied_email_v2",
|
|
11327
|
+
eventTypeId: "4-665538",
|
|
11328
|
+
eventTypeInnerId: 665538,
|
|
11329
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11330
|
+
officialOperator: "HAS_COMPLETED",
|
|
11331
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11332
|
+
officialFiltersExample: [],
|
|
11333
|
+
triggerCategoryId: "contactInteraction",
|
|
11334
|
+
modernCategoryId: "email",
|
|
11335
|
+
triggerGroupLabel: "Email events",
|
|
11336
|
+
requiredScopes: [],
|
|
11337
|
+
requiredGates: [],
|
|
11338
|
+
sampleWorkflowId: "3954290918",
|
|
11339
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_replied_email_v2",
|
|
11340
|
+
sampleStatus: "created"
|
|
11341
|
+
},
|
|
11342
|
+
{
|
|
11343
|
+
catalogId: "e_replied_whatsapp_message",
|
|
11344
|
+
eventTypeId: "4-6911594",
|
|
11345
|
+
eventTypeInnerId: 6911594,
|
|
11346
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11347
|
+
officialOperator: "HAS_COMPLETED",
|
|
11348
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11349
|
+
officialFiltersExample: [],
|
|
11350
|
+
triggerCategoryId: "contactInteraction",
|
|
11351
|
+
modernCategoryId: "whats_app",
|
|
11352
|
+
triggerGroupLabel: "WhatsApp events",
|
|
11353
|
+
requiredScopes: [],
|
|
11354
|
+
requiredGates: [],
|
|
11355
|
+
sampleWorkflowId: "3954292927",
|
|
11356
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_replied_whatsapp_message",
|
|
11357
|
+
sampleStatus: "created"
|
|
11358
|
+
},
|
|
11359
|
+
{
|
|
11360
|
+
catalogId: "e_research_intent_level_change",
|
|
11361
|
+
eventTypeId: "4-5470332",
|
|
11362
|
+
eventTypeInnerId: 5470332,
|
|
11363
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11364
|
+
officialOperator: "HAS_COMPLETED",
|
|
11365
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11366
|
+
officialFiltersExample: [],
|
|
11367
|
+
triggerCategoryId: "data",
|
|
11368
|
+
modernCategoryId: "buyer_company_insights",
|
|
11369
|
+
triggerGroupLabel: "Company signal events",
|
|
11370
|
+
requiredScopes: [
|
|
11371
|
+
"data-enrichment-platform-access"
|
|
11372
|
+
],
|
|
11373
|
+
requiredGates: [],
|
|
11374
|
+
sampleWorkflowId: "3955861724",
|
|
11375
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_research_intent_level_change",
|
|
11376
|
+
sampleStatus: "created"
|
|
11377
|
+
},
|
|
11378
|
+
{
|
|
11379
|
+
catalogId: "e_sent_shortmessage",
|
|
11380
|
+
eventTypeId: "4-1719453",
|
|
11381
|
+
eventTypeInnerId: 1719453,
|
|
11382
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11383
|
+
officialOperator: "HAS_COMPLETED",
|
|
11384
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11385
|
+
officialFiltersExample: [],
|
|
11386
|
+
triggerCategoryId: "contactInteraction",
|
|
11387
|
+
modernCategoryId: "sms",
|
|
11388
|
+
triggerGroupLabel: "SMS events",
|
|
11389
|
+
requiredScopes: [
|
|
11390
|
+
"sms-marketing-addon"
|
|
11391
|
+
],
|
|
11392
|
+
requiredGates: [],
|
|
11393
|
+
sampleWorkflowId: "3956009160",
|
|
11394
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_sent_shortmessage",
|
|
11395
|
+
sampleStatus: "created"
|
|
11396
|
+
},
|
|
11397
|
+
{
|
|
11398
|
+
catalogId: "e_sent_tracked_inbox_email_v8",
|
|
11399
|
+
eventTypeId: "4-1367006",
|
|
11400
|
+
eventTypeInnerId: 1367006,
|
|
11401
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11402
|
+
officialOperator: "HAS_COMPLETED",
|
|
11403
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11404
|
+
officialFiltersExample: [],
|
|
11405
|
+
triggerCategoryId: "contactInteraction",
|
|
11406
|
+
modernCategoryId: "email",
|
|
11407
|
+
triggerGroupLabel: "Email events",
|
|
11408
|
+
requiredScopes: [],
|
|
11409
|
+
requiredGates: [],
|
|
11410
|
+
sampleWorkflowId: "3954291956",
|
|
11411
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_sent_tracked_inbox_email_v8",
|
|
11412
|
+
sampleStatus: "created"
|
|
11413
|
+
},
|
|
11414
|
+
{
|
|
11415
|
+
catalogId: "e_updated_email_subscription_status_v2",
|
|
11416
|
+
eventTypeId: "4-666289",
|
|
11417
|
+
eventTypeInnerId: 666289,
|
|
11418
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11419
|
+
officialOperator: "HAS_COMPLETED",
|
|
11420
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11421
|
+
officialFiltersExample: [],
|
|
11422
|
+
triggerCategoryId: "contactInteraction",
|
|
11423
|
+
modernCategoryId: "email",
|
|
11424
|
+
triggerGroupLabel: "Email events",
|
|
11425
|
+
requiredScopes: [],
|
|
11426
|
+
requiredGates: [],
|
|
11427
|
+
sampleWorkflowId: "3954291959",
|
|
11428
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_updated_email_subscription_status_v2",
|
|
11429
|
+
sampleStatus: "created"
|
|
11430
|
+
},
|
|
11431
|
+
{
|
|
11432
|
+
catalogId: "e_v2_contact_booked_meeting_through_sequence",
|
|
11433
|
+
eventTypeId: "4-675773",
|
|
11434
|
+
eventTypeInnerId: 675773,
|
|
11435
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11436
|
+
officialOperator: "HAS_COMPLETED",
|
|
11437
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11438
|
+
officialFiltersExample: [],
|
|
11439
|
+
triggerCategoryId: "automation",
|
|
11440
|
+
modernCategoryId: "automation",
|
|
11441
|
+
triggerGroupLabel: "Sequence events",
|
|
11442
|
+
requiredScopes: [],
|
|
11443
|
+
requiredGates: [],
|
|
11444
|
+
sampleWorkflowId: "3954290930",
|
|
11445
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_v2_contact_booked_meeting_through_sequence",
|
|
11446
|
+
sampleStatus: "created"
|
|
11447
|
+
},
|
|
11448
|
+
{
|
|
11449
|
+
catalogId: "e_v2_contact_enrolled_in_sequence",
|
|
11450
|
+
eventTypeId: "4-675777",
|
|
11451
|
+
eventTypeInnerId: 675777,
|
|
11452
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11453
|
+
officialOperator: "HAS_COMPLETED",
|
|
11454
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11455
|
+
officialFiltersExample: [],
|
|
11456
|
+
triggerCategoryId: "automation",
|
|
11457
|
+
modernCategoryId: "automation",
|
|
11458
|
+
triggerGroupLabel: "Sequence events",
|
|
11459
|
+
requiredScopes: [],
|
|
11460
|
+
requiredGates: [],
|
|
11461
|
+
sampleWorkflowId: "3954290927",
|
|
11462
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_v2_contact_enrolled_in_sequence",
|
|
11463
|
+
sampleStatus: "created"
|
|
11464
|
+
},
|
|
11465
|
+
{
|
|
11466
|
+
catalogId: "e_v2_contact_finished_sequence",
|
|
11467
|
+
eventTypeId: "4-675778",
|
|
11468
|
+
eventTypeInnerId: 675778,
|
|
11469
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11470
|
+
officialOperator: "HAS_COMPLETED",
|
|
11471
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11472
|
+
officialFiltersExample: [],
|
|
11473
|
+
triggerCategoryId: "automation",
|
|
11474
|
+
modernCategoryId: "automation",
|
|
11475
|
+
triggerGroupLabel: "Sequence events",
|
|
11476
|
+
requiredScopes: [],
|
|
11477
|
+
requiredGates: [],
|
|
11478
|
+
sampleWorkflowId: "3954292922",
|
|
11479
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_v2_contact_finished_sequence",
|
|
11480
|
+
sampleStatus: "created"
|
|
11481
|
+
},
|
|
11482
|
+
{
|
|
11483
|
+
catalogId: "e_v2_contact_unenrolled_from_sequence",
|
|
11484
|
+
eventTypeId: "4-675776",
|
|
11485
|
+
eventTypeInnerId: 675776,
|
|
11486
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11487
|
+
officialOperator: "HAS_COMPLETED",
|
|
11488
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11489
|
+
officialFiltersExample: [],
|
|
11490
|
+
triggerCategoryId: "automation",
|
|
11491
|
+
modernCategoryId: "automation",
|
|
11492
|
+
triggerGroupLabel: "Sequence events",
|
|
11493
|
+
requiredScopes: [],
|
|
11494
|
+
requiredGates: [],
|
|
11495
|
+
sampleWorkflowId: "3954290929",
|
|
11496
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_v2_contact_unenrolled_from_sequence",
|
|
11497
|
+
sampleStatus: "created"
|
|
11498
|
+
},
|
|
11499
|
+
{
|
|
11500
|
+
catalogId: "e_v2_contact_unenrolled_from_sequence_via_workflow",
|
|
11501
|
+
eventTypeId: "4-1497402",
|
|
11502
|
+
eventTypeInnerId: 1497402,
|
|
11503
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11504
|
+
officialOperator: "HAS_COMPLETED",
|
|
11505
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11506
|
+
officialFiltersExample: [],
|
|
11507
|
+
triggerCategoryId: "automation",
|
|
11508
|
+
modernCategoryId: "automation",
|
|
11509
|
+
triggerGroupLabel: "Sequence events",
|
|
11510
|
+
requiredScopes: [],
|
|
11511
|
+
requiredGates: [],
|
|
11512
|
+
sampleWorkflowId: "3954292923",
|
|
11513
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_v2_contact_unenrolled_from_sequence_via_workflow",
|
|
11514
|
+
sampleStatus: "created"
|
|
11515
|
+
},
|
|
11516
|
+
{
|
|
11517
|
+
catalogId: "e_v2_contact_unenrolled_manually_from_sequence",
|
|
11518
|
+
eventTypeId: "4-675775",
|
|
11519
|
+
eventTypeInnerId: 675775,
|
|
11520
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11521
|
+
officialOperator: "HAS_COMPLETED",
|
|
11522
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11523
|
+
officialFiltersExample: [],
|
|
11524
|
+
triggerCategoryId: "automation",
|
|
11525
|
+
modernCategoryId: "automation",
|
|
11526
|
+
triggerGroupLabel: "Sequence events",
|
|
11527
|
+
requiredScopes: [],
|
|
11528
|
+
requiredGates: [],
|
|
11529
|
+
sampleWorkflowId: "3954290933",
|
|
11530
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_v2_contact_unenrolled_manually_from_sequence",
|
|
11531
|
+
sampleStatus: "created"
|
|
11532
|
+
},
|
|
11533
|
+
{
|
|
11534
|
+
catalogId: "e_viewed_cta",
|
|
11535
|
+
eventTypeId: "4-100215",
|
|
11536
|
+
eventTypeInnerId: 100215,
|
|
11537
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11538
|
+
officialOperator: "HAS_COMPLETED",
|
|
11539
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11540
|
+
officialFiltersExample: [],
|
|
11541
|
+
triggerCategoryId: "digitalInteraction",
|
|
11542
|
+
modernCategoryId: "media",
|
|
11543
|
+
triggerGroupLabel: "Website events",
|
|
11544
|
+
requiredScopes: [
|
|
11545
|
+
"cta-access"
|
|
11546
|
+
],
|
|
11547
|
+
requiredGates: [],
|
|
11548
|
+
sampleWorkflowId: "3955774699",
|
|
11549
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_viewed_cta",
|
|
11550
|
+
sampleStatus: "created"
|
|
11551
|
+
},
|
|
11552
|
+
{
|
|
11553
|
+
catalogId: "e_viewed_web_interactive",
|
|
11554
|
+
eventTypeId: "4-1555804",
|
|
11555
|
+
eventTypeInnerId: 1555804,
|
|
11556
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11557
|
+
officialOperator: "HAS_COMPLETED",
|
|
11558
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11559
|
+
officialFiltersExample: [],
|
|
11560
|
+
triggerCategoryId: "digitalInteraction",
|
|
11561
|
+
modernCategoryId: "media",
|
|
11562
|
+
triggerGroupLabel: "Website events",
|
|
11563
|
+
requiredScopes: [
|
|
11564
|
+
"calls-to-action-read"
|
|
11565
|
+
],
|
|
11566
|
+
requiredGates: [],
|
|
11567
|
+
sampleWorkflowId: "3955857639",
|
|
11568
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_viewed_web_interactive",
|
|
11569
|
+
sampleStatus: "created"
|
|
11570
|
+
},
|
|
11571
|
+
{
|
|
11572
|
+
catalogId: "e_visited_page",
|
|
11573
|
+
eventTypeId: "4-96000",
|
|
11574
|
+
eventTypeInnerId: 96e3,
|
|
11575
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11576
|
+
officialOperator: "HAS_COMPLETED",
|
|
11577
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11578
|
+
officialFiltersExample: [],
|
|
11579
|
+
triggerCategoryId: "digitalInteraction",
|
|
11580
|
+
modernCategoryId: "media",
|
|
11581
|
+
triggerGroupLabel: "Website events",
|
|
11582
|
+
requiredScopes: [
|
|
11583
|
+
"web-analytics-api-access"
|
|
11584
|
+
],
|
|
11585
|
+
requiredGates: [],
|
|
11586
|
+
sampleWorkflowId: "3953876201",
|
|
11587
|
+
sampleWorkflowName: "MCP Trigger Matrix - Page Visited",
|
|
11588
|
+
sampleStatus: "created"
|
|
11589
|
+
},
|
|
11590
|
+
{
|
|
11591
|
+
catalogId: "e_visitor_intent_status_change",
|
|
11592
|
+
eventTypeId: "4-5470329",
|
|
11593
|
+
eventTypeInnerId: 5470329,
|
|
11594
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11595
|
+
officialOperator: "HAS_COMPLETED",
|
|
11596
|
+
officialFilterTemplate: "simple_event_has_completed",
|
|
11597
|
+
officialFiltersExample: [],
|
|
11598
|
+
triggerCategoryId: "data",
|
|
11599
|
+
modernCategoryId: "buyer_company_insights",
|
|
11600
|
+
triggerGroupLabel: "Company signal events",
|
|
11601
|
+
requiredScopes: [
|
|
11602
|
+
"data-enrichment-platform-access"
|
|
11603
|
+
],
|
|
11604
|
+
requiredGates: [],
|
|
11605
|
+
sampleWorkflowId: "3955760369",
|
|
11606
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_visitor_intent_status_change",
|
|
11607
|
+
sampleStatus: "created"
|
|
11608
|
+
},
|
|
11609
|
+
{
|
|
11610
|
+
catalogId: "e_workflow_enrolled_v2",
|
|
11611
|
+
eventTypeId: "4-1466013",
|
|
11612
|
+
eventTypeInnerId: 1466013,
|
|
11613
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11614
|
+
officialOperator: "HAS_COMPLETED",
|
|
11615
|
+
officialFilterTemplate: "workflow_reference_filter",
|
|
11616
|
+
officialFiltersExample: [
|
|
11617
|
+
{
|
|
11618
|
+
property: "hs_flow_id",
|
|
11619
|
+
operation: {
|
|
11620
|
+
operator: "IS_ANY_OF",
|
|
11621
|
+
includeObjectsWithNoValueSet: false,
|
|
11622
|
+
values: [
|
|
11623
|
+
"3953877192"
|
|
11624
|
+
],
|
|
11625
|
+
operationType: "ENUMERATION"
|
|
11626
|
+
},
|
|
11627
|
+
filterType: "PROPERTY"
|
|
11628
|
+
}
|
|
11629
|
+
],
|
|
11630
|
+
triggerCategoryId: "automation",
|
|
11631
|
+
modernCategoryId: "automation",
|
|
11632
|
+
triggerGroupLabel: "Workflow events",
|
|
11633
|
+
requiredScopes: [],
|
|
11634
|
+
requiredGates: [],
|
|
11635
|
+
sampleWorkflowId: "3953876203",
|
|
11636
|
+
sampleWorkflowName: "MCP Trigger Matrix - Workflow Enrolled",
|
|
11637
|
+
sampleStatus: "created"
|
|
11638
|
+
},
|
|
11639
|
+
{
|
|
11640
|
+
catalogId: "e_workflow_goal_v2",
|
|
11641
|
+
eventTypeId: "4-1753168",
|
|
11642
|
+
eventTypeInnerId: 1753168,
|
|
11643
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11644
|
+
officialOperator: "HAS_COMPLETED",
|
|
11645
|
+
officialFilterTemplate: "workflow_reference_filter",
|
|
11646
|
+
officialFiltersExample: [
|
|
11647
|
+
{
|
|
11648
|
+
property: "hs_flow_id",
|
|
11649
|
+
operation: {
|
|
11650
|
+
operator: "IS_ANY_OF",
|
|
11651
|
+
includeObjectsWithNoValueSet: false,
|
|
11652
|
+
values: [
|
|
11653
|
+
"3953877209"
|
|
11654
|
+
],
|
|
11655
|
+
operationType: "ENUMERATION"
|
|
11656
|
+
},
|
|
11657
|
+
filterType: "PROPERTY"
|
|
11658
|
+
}
|
|
11659
|
+
],
|
|
11660
|
+
triggerCategoryId: "automation",
|
|
11661
|
+
modernCategoryId: "automation",
|
|
11662
|
+
triggerGroupLabel: "Workflow events",
|
|
11663
|
+
requiredScopes: [],
|
|
11664
|
+
requiredGates: [],
|
|
11665
|
+
sampleWorkflowId: "3954291952",
|
|
11666
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_workflow_goal_v2",
|
|
11667
|
+
sampleStatus: "created"
|
|
11668
|
+
},
|
|
11669
|
+
{
|
|
11670
|
+
catalogId: "e_workflow_unenrolled_v2",
|
|
11671
|
+
eventTypeId: "4-1466014",
|
|
11672
|
+
eventTypeInnerId: 1466014,
|
|
11673
|
+
officialEnrollmentType: "EVENT_BASED",
|
|
11674
|
+
officialOperator: "HAS_COMPLETED",
|
|
11675
|
+
officialFilterTemplate: "workflow_reference_filter",
|
|
11676
|
+
officialFiltersExample: [
|
|
11677
|
+
{
|
|
11678
|
+
property: "hs_flow_id",
|
|
11679
|
+
operation: {
|
|
11680
|
+
operator: "IS_ANY_OF",
|
|
11681
|
+
includeObjectsWithNoValueSet: false,
|
|
11682
|
+
values: [
|
|
11683
|
+
"3953877209"
|
|
11684
|
+
],
|
|
11685
|
+
operationType: "ENUMERATION"
|
|
11686
|
+
},
|
|
11687
|
+
filterType: "PROPERTY"
|
|
11688
|
+
}
|
|
11689
|
+
],
|
|
11690
|
+
triggerCategoryId: "automation",
|
|
11691
|
+
modernCategoryId: "automation",
|
|
11692
|
+
triggerGroupLabel: "Workflow events",
|
|
11693
|
+
requiredScopes: [],
|
|
11694
|
+
requiredGates: [],
|
|
11695
|
+
sampleWorkflowId: "3954291951",
|
|
11696
|
+
sampleWorkflowName: "MCP Trigger Harvest - e_workflow_unenrolled_v2",
|
|
11697
|
+
sampleStatus: "created"
|
|
11698
|
+
}
|
|
11699
|
+
];
|
|
11700
|
+
|
|
11701
|
+
// ../shared/data/workflow-enrollments/trigger-catalog.json
|
|
11702
|
+
var trigger_catalog_default = {
|
|
11703
|
+
extractedAt: "2026-03-15T14:25:45.414Z",
|
|
11704
|
+
sourceUrl: "https://app-eu1.hubspot.com/workflows/147957883/create",
|
|
11705
|
+
portalId: 147957883,
|
|
11706
|
+
totalTriggers: 96,
|
|
11707
|
+
chunkSize: 12,
|
|
11708
|
+
summary: {
|
|
11709
|
+
byCategory: {
|
|
11710
|
+
data: 45,
|
|
11711
|
+
contactInteraction: 30,
|
|
11712
|
+
digitalInteraction: 12,
|
|
11713
|
+
automation: 9
|
|
11714
|
+
},
|
|
11715
|
+
byModernCategory: {
|
|
11716
|
+
crm: 23,
|
|
11717
|
+
buyer_company_insights: 22,
|
|
11718
|
+
media: 12,
|
|
11719
|
+
automation: 9,
|
|
11720
|
+
whats_app: 8,
|
|
11721
|
+
email: 8,
|
|
11722
|
+
communication: 8,
|
|
11723
|
+
sms: 6
|
|
11724
|
+
},
|
|
11725
|
+
byGroup: {
|
|
11726
|
+
"Quote events": 19,
|
|
11727
|
+
"Company signal events": 18,
|
|
11728
|
+
"WhatsApp events": 8,
|
|
11729
|
+
"Email events": 8,
|
|
11730
|
+
"SMS events": 6,
|
|
11731
|
+
"Sequence events": 6,
|
|
11732
|
+
unknown: 5,
|
|
11733
|
+
"Website events": 5,
|
|
11734
|
+
"Workflow events": 3,
|
|
11735
|
+
"Contact signal events": 3,
|
|
11736
|
+
"Form events": 3,
|
|
11737
|
+
"Document events": 3,
|
|
11738
|
+
"Video events": 2,
|
|
11739
|
+
"Meeting events": 2,
|
|
11740
|
+
"Call events": 2,
|
|
11741
|
+
"Feedback insights events": 1,
|
|
11742
|
+
"Buyer Intent events": 1,
|
|
11743
|
+
CRM: 1
|
|
11744
|
+
}
|
|
11745
|
+
},
|
|
11746
|
+
relatedRequests: [
|
|
11747
|
+
"/api/framework-builder/v1/read/metadata/types/automationEventTriggers",
|
|
11748
|
+
"/api/framework-builder/v1/read/metadata/types/filtersFrontEnd",
|
|
11749
|
+
"/api/framework-builder/v1/read/metadata/types/crmSegmentsUI",
|
|
11750
|
+
"/api/framework-builder/v1/read/metadata/types/filters_associatedObjects_ils_",
|
|
11751
|
+
"/api/behavioral-events/v3/event-definitions",
|
|
11752
|
+
"/api/portal-event-ingest/v1/webhook-definitions",
|
|
11753
|
+
"/api/events/internal/v0/app/event-types?metaType=PORTAL_SPECIFIC_EVENT",
|
|
11754
|
+
"/api/events/internal/v0/app/event-types?metaType=INTEGRATION_EVENT"
|
|
11755
|
+
],
|
|
11756
|
+
notes: [
|
|
11757
|
+
"This file is a flattened capture of the create-workflow page's automationEventTriggers metadata response.",
|
|
11758
|
+
"Fields are flattened from the original metadata.<field>.value shape into top-level properties per trigger.",
|
|
11759
|
+
"The create page also loads additional trigger-adjacent metadata from the relatedRequests endpoints above."
|
|
11760
|
+
],
|
|
11761
|
+
entryChunks: [
|
|
11762
|
+
[{ id: "e_ad_interaction", pluralForm: "Ad interactions", hasOwners: false, objectTypeId: "4-1553675", triggerGroupId: "", janusGroup: "hs-ads-backend", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact interacts with an ad", description: "Ad was interacted with", enabled: true, singularForm: "Ad interaction", triggerGroupLabel: "", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_anon_public_quote_download", pluralForm: "Anonymous Public Quote Downloads", hasOwners: false, objectTypeId: "4-3687775", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", triggerDescription: "Triggers when an anonymous user downloads public quote", requiredObjectTypeIds: ["0-14", "0-3"], enabled: true, singularForm: "Anonymous Public Quote Download ", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["cpq-quote-access"], requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_anon_quote_print", pluralForm: "Anonymous Quote Prints", hasOwners: false, objectTypeId: "4-3687777", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", triggerDescription: "Triggers when an anonymous visitor prints out quote", requiredObjectTypeIds: ["0-14", "0-3"], enabled: true, singularForm: "Anonymous Quote Print", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_anon_quote_view", pluralForm: "Anonymous Quote Views", hasOwners: false, objectTypeId: "4-3687774", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", triggerDescription: "Triggers when quote gets a view that cannot be tied back to a contact", requiredObjectTypeIds: ["0-14", "0-3"], enabled: true, singularForm: "Anonymous Quote View", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_buyer_intent_company_saved_view_event", pluralForm: "Buyer Intent Saved View Events", hasOwners: false, objectTypeId: "4-1887330", triggerGroupId: "buyer-intent", janusGroup: "hs-reveal", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company enters or exits an auto-add-configured saved view", description: "Describes configuration of Buyer Intent Saved View Event as a workflow trigger", enabled: true, singularForm: "Buyer Intent Saved View Event", triggerGroupLabel: "Buyer Intent events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["breeze-intelligence-free"], requiredGates: [], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data" }, { id: "e_call_ended", pluralForm: "Calls ended", hasOwners: false, objectTypeId: "4-1741072", triggerGroupId: "calls", janusGroup: "hs-voice-sms-config-be", triggerDescription: "When a call is ended with a contact", requiredObjectTypeIds: ["0-1"], description: "Triggers when a call initiated through HubSpot comes to an end", enabled: true, singularForm: "Call ended", triggerGroupLabel: "Call events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_call_started", pluralForm: "Calls started", hasOwners: false, objectTypeId: "4-1733817", triggerGroupId: "calls", janusGroup: "hs-voice-sms-config-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a call is started with a contact", description: "Triggers when a call is initiated through HubSpot", enabled: true, singularForm: "Call started", triggerGroupLabel: "Call events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_clicked_cta", pluralForm: "CTA (Legacy) clicks", hasOwners: false, objectTypeId: "4-100216", triggerGroupId: "website", janusGroup: "hs-lead-capture-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact clicks a legacy CTA", description: "CTA was clicked", enabled: true, singularForm: "CTA (Legacy) click", triggerGroupLabel: "Website events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["cta-access"], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_clicked_link_in_email_v2", pluralForm: "Clicked links in marketing email", hasOwners: false, objectTypeId: "4-666288", triggerGroupId: "email", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact clicks a link in a marketing email", description: "A contact clicked a link in a marketing email", enabled: true, singularForm: "Clicked link in marketing email", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_clicked_link_in_shortmessage", pluralForm: "Link in SMS clicked", hasOwners: false, objectTypeId: "4-1722276", triggerGroupId: "sms", janusGroup: "hs-messaging-analytics", triggerDescription: "When a contact clicks a link in an SMS", requiredObjectTypeIds: ["0-1"], enabled: true, singularForm: "Link in SMS clicked", triggerGroupLabel: "SMS events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["sms-marketing-addon"], modernCategoryId: "sms", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_clicked_web_interactive", pluralForm: "CTA clicks", hasOwners: false, objectTypeId: "4-1555805", triggerGroupId: "website", janusGroup: "hs-lead-capture-be", triggerDescription: "When a contact clicks a CTA", requiredObjectTypeIds: ["0-1"], enabled: true, singularForm: "CTA click", triggerGroupLabel: "Website events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["calls-to-action-read"], requiredGates: [], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_clicked_whatsapp_message", pluralForm: "Clicked link in WhatsApp messages", hasOwners: false, objectTypeId: "4-6607539", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When the contact clicks a link in a WhatsApp message", description: "WhatsApp message link clicked", enabled: true, singularForm: "Clicked link in WhatsApp message", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["MPG:WhatsAppV2"], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false }],
|
|
11763
|
+
[{ id: "e_closing_agent_conversation_started", pluralForm: "Closing Agent Conversations Started", hasOwners: false, objectTypeId: "4-6300049", triggerGroupId: "quote", janusGroup: "hs-commerce-ai", requiredObjectTypeIds: ["0-14", "0-3"], triggerDescription: "Triggers when buyer starts a conversation with closing agent", enabled: true, singularForm: "Closing Agent Conversation Started", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_attends_event", pluralForm: "Event attendance", hasOwners: false, objectTypeId: "4-10021656", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company is developing a new offering", description: "When a company attends or may attend an event", enabled: true, singularForm: "Event attendance", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["VendorSignals::Q12026PredictLeadsSignalsRelease"], requiredScopes: ["data-agent-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_expanded_geographically", pluralForm: "Geographic expansion", hasOwners: false, objectTypeId: "4-5470325", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company expands geographically", description: "Triggers when a company expands geographically", enabled: true, singularForm: "Geographic expansion", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_growth_metrics", pluralForm: "Growth metrics", hasOwners: false, objectTypeId: "4-8148872", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company makes a statement about revenue growth or customer acquisition", description: "When a company makes a statement about revenue growth or customer acquisition", enabled: true, singularForm: "Growth metrics", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["data-enrichment-platform-access"], requiredGates: ["IntentSignals:SignalsBatchQ425"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_hired_executive", pluralForm: "Executive hiring", hasOwners: false, objectTypeId: "4-7727049", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company hires a C-suite executive", description: "When a company hires a C-suite executive", enabled: true, singularForm: "Executive hiring", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["data-enrichment-platform-access"], requiredGates: ["IntentSignals:SignalsBatchQ425"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_industry_recognition", pluralForm: "Industry recognition", hasOwners: false, objectTypeId: "4-9304135", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company wins awards or is recognized in analyst reports\n", description: "When a company wins awards or is recognized in analyst reports", enabled: true, singularForm: "Industry recognition", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["IntentSignals::Q12026ExaSignalsRelease"], requiredScopes: ["data-agent-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_is_developing", pluralForm: "Product development", hasOwners: false, objectTypeId: "4-10021655", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company is developing a new offering", description: "When a company is developing a new offering", enabled: true, singularForm: "Product development", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["VendorSignals::Q12026PredictLeadsSignalsRelease"], requiredScopes: ["data-agent-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_launched_product", pluralForm: "Product launches", hasOwners: false, objectTypeId: "4-7727050", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company launches a new product or service", description: "When a company launches a new product or service", enabled: true, singularForm: "Product launch", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["data-enrichment-platform-access"], requiredGates: ["IntentSignals:SignalsBatchQ425"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_layoff", pluralForm: "Layoffs", hasOwners: false, objectTypeId: "4-6099696", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company announced a reduction in workforce", description: "When a company announced a reduction in workforce", enabled: true, singularForm: "Layoff", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_merger_acquisition", pluralForm: "Mergers and acquisitions", hasOwners: false, objectTypeId: "4-8191201", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company enters a merger agreement, makes an acquisition, or is being acquired", description: "When a company enters a merger agreement, makes an acquisition, or is being acquired", enabled: true, singularForm: "Mergers and acquisitions", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["IntentSignals:SignalsBatchQ425"], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_news_signal_funding", pluralForm: "Funding", hasOwners: false, objectTypeId: "4-5076614", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company secures funding", enabled: true, singularForm: "Funding", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_office_closure", pluralForm: "Office closures", hasOwners: false, objectTypeId: "4-9304136", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company shuts down facilities or reduces physical presence", description: "When a company shuts down facilities or reduces physical presence", enabled: true, singularForm: "Office closure", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["IntentSignals::Q12026ExaSignalsRelease"], requiredScopes: ["data-agent-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }],
|
|
11764
|
+
[{ id: "e_company_physical_expansion", pluralForm: "Physical expansion", hasOwners: false, objectTypeId: "4-9304138", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company opens new facilities or increases office space", description: "When a company opens new facilities or increases office space", enabled: true, singularForm: "Physical expansion", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["IntentSignals::Q12026ExaSignalsRelease"], requiredScopes: ["data-agent-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_published_leadership_content", pluralForm: "Leadership content", hasOwners: false, objectTypeId: "4-6099692", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company executive publishes a leadership article", enabled: true, singularForm: "Leadership content", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_received_technology_investment", pluralForm: "Technology investment", hasOwners: false, objectTypeId: "4-6099691", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company receives technology investments", enabled: true, singularForm: "Technology investment", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_regulatory_approval", pluralForm: "Regulatory approvals", hasOwners: false, objectTypeId: "4-9304137", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company receives permits or certifications for expansion", description: "When a company receives permits or certifications for expansion", enabled: true, singularForm: "Regulatory approval", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["IntentSignals::Q12026ExaSignalsRelease"], requiredScopes: ["data-agent-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_company_strategic_partnership", pluralForm: "Strategic partnerships", hasOwners: false, objectTypeId: "4-8191199", triggerGroupId: "company_signal", janusGroup: "hs-company-discovery", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company enters a strategic partnership agreement", description: "When a company enters a strategic partnership agreement", enabled: true, singularForm: "Strategic partnership", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["IntentSignals:SignalsBatchQ425"], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_contact_job_ended", pluralForm: "Jobs ended", hasOwners: false, objectTypeId: "4-5470333", triggerGroupId: "contact_signal", janusGroup: "hs-person-dataset", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact associated with a tracked company leaves their job", description: "This event triggers when a contact is detected to have left a job.", enabled: true, singularForm: "Job ended", triggerGroupLabel: "Contact signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data" }, { id: "e_contact_job_started", pluralForm: "Jobs started", hasOwners: false, objectTypeId: "4-5470334", triggerGroupId: "contact_signal", janusGroup: "hs-person-dataset", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact associated with a tracked company starts a new job", description: "This event triggers when a contact is detected to have started a job.", enabled: true, singularForm: "Job started", triggerGroupLabel: "Contact signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data" }, { id: "e_contact_meeting_booked", pluralForm: "Meetings booked", hasOwners: false, objectTypeId: "4-1720599", triggerGroupId: "meetings", janusGroup: "hs-meeting-execution-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact books a meeting", description: "A contact booked a meeting", enabled: true, singularForm: "Meeting booked", triggerGroupLabel: "Meeting events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_contact_meeting_outcome_changed", pluralForm: "Meeting outcome changes", hasOwners: false, objectTypeId: "4-1724222", triggerGroupId: "meetings", janusGroup: "hs-meeting-execution-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When the outcome of a meeting with a contact is changed", description: "A contact changed a meeting outcome", enabled: true, singularForm: "Meeting outcome change", triggerGroupLabel: "Meeting events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_delivered_shortmessage", pluralForm: "SMS delivered", hasOwners: false, objectTypeId: "4-1721168", triggerGroupId: "sms", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When an SMS is delivered to a contact", enabled: true, singularForm: "SMS delivered", triggerGroupLabel: "SMS events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["sms-marketing-addon"], modernCategoryId: "sms", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_delivered_whatsapp_message", pluralForm: "WhatsApp messages delivered", hasOwners: false, objectTypeId: "4-6607541", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a WhatsApp message was delivered to the contact", description: "WhatsApp message delivered", enabled: true, singularForm: "WhatsApp message delivered", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["MPG:WhatsAppV2"], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false }, { id: "e_document_completed_v2", pluralForm: "Contacts finished viewing documents (Intermittent)", hasOwners: false, objectTypeId: "4-1522438", triggerGroupId: "sales-documents", janusGroup: "hs-sales-coaching-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact finishes viewing a document", description: "Triggers when a sales document is completed", enabled: true, singularForm: "Contact finished viewing a document (Intermittent)", triggerGroupLabel: "Document events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["documents-read-access"], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }],
|
|
11765
|
+
[{ id: "e_document_shared_v2", pluralForm: "Documents shared with contacts", hasOwners: false, objectTypeId: "4-1522437", triggerGroupId: "sales-documents", janusGroup: "hs-sales-coaching-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a document is shared with a contact", description: "Triggers when a sales document is shared", enabled: true, singularForm: "Document shared with contact", triggerGroupLabel: "Document events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["documents-read-access"], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_document_viewed_v2", pluralForm: "Contacts viewed documents", hasOwners: false, objectTypeId: "4-1522436", triggerGroupId: "sales-documents", janusGroup: "hs-sales-coaching-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a document is viewed by a contact", description: "Triggers when a sales document is viewed", enabled: true, singularForm: "Contact viewed a document", triggerGroupLabel: "Document events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["documents-read-access"], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_dropped_shortmessage", pluralForm: "SMS dropped", hasOwners: false, objectTypeId: "4-1725149", triggerGroupId: "sms", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When an SMS intended for a contact is dropped", enabled: true, singularForm: "SMS dropped", triggerGroupLabel: "SMS events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["sms-marketing-addon"], modernCategoryId: "sms", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_dropped_whatsapp_message", pluralForm: "Dropped Whatsapp messages", hasOwners: false, objectTypeId: "4-5076608", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a WhatsApp message sent to a contact is dropped", description: "WhatsApp message dropped", enabled: true, singularForm: "Dropped Whatsapp message", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["MPG:WhatsAppV2"], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false }, { id: "e_email_bounce_detected", pluralForm: "Email bounce", hasOwners: false, objectTypeId: "4-5470331", triggerGroupId: "contact_signal", janusGroup: "hs-person-dataset", requiredObjectTypeIds: ["0-1"], triggerDescription: "When an email bounce risk is detected for a contact associated with a tracked company", enabled: true, singularForm: "Email bounce", triggerGroupLabel: "Contact signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_failed_to_deliver_shortmessage", pluralForm: "Delivering SMS failed", hasOwners: false, objectTypeId: "4-1752910", triggerGroupId: "sms", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When an SMS intended for a contact fails to deliver", enabled: true, singularForm: "Delivering SMS failed", triggerGroupLabel: "SMS events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["sms-marketing-addon"], modernCategoryId: "sms", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_failed_to_send_shortmessage", pluralForm: "Sending SMS failed", hasOwners: false, objectTypeId: "4-1752904", triggerGroupId: "sms", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When an SMS intended for a contact fails to send", enabled: true, singularForm: "Sending SMS failed", triggerGroupLabel: "SMS events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["sms-marketing-addon"], modernCategoryId: "sms", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_failed_whatsapp_message", pluralForm: "Sending WhatsApp messages failed", hasOwners: false, objectTypeId: "4-6607542", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a WhatsApp message delivery to a contact failed", description: "Failed to deliver WhatsApp message", enabled: true, singularForm: "Sending WhatsApp message failed", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["MPG:WhatsAppV2"], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false, blockedObjectTypeIds: [] }, { id: "e_feedback_mention", pluralForm: "Feedback mentions", hasOwners: false, objectTypeId: "4-4481980", triggerGroupId: "feedback-insights", janusGroup: "hs-feedback-backend", requiredObjectTypeIds: ["0-1", "0-2"], triggerDescription: "When a participant mentions a feedback topic", enabled: true, singularForm: "Feedback mention", triggerGroupLabel: "Feedback insights events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["ServiceHub:Feedback:FeedbackInsights"], requiredScopes: ["service-feedback-enterprise-access"], modernCategoryId: "communication", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_form_interaction_v2", pluralForm: "Form interactions", hasOwners: false, objectTypeId: "4-1639799", triggerGroupId: "form", janusGroup: "hs-submissions-infrastructure", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact interacts with a form", description: "Contact interacted with a form", enabled: true, singularForm: "Form interaction", triggerGroupLabel: "Form events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_form_submission_v2", pluralForm: "Form submissions", hasOwners: false, objectTypeId: "4-1639801", triggerGroupId: "form", janusGroup: "hs-submissions-infrastructure", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact submits a form", enabled: true, singularForm: "Form submission", triggerGroupLabel: "Form events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_form_view_v2", pluralForm: "Form views", hasOwners: false, objectTypeId: "4-1639797", triggerGroupId: "form", janusGroup: "hs-submissions-infrastructure", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact views a form", description: "Form view", enabled: true, singularForm: "Form view", triggerGroupLabel: "Form events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }],
|
|
11766
|
+
[{ id: "e_handed_whatsapp_message_to_agent", pluralForm: "Sent Whatsapp messages", hasOwners: false, objectTypeId: "4-5076607", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a WhatsApp message is sent to the contact", description: "WhatsApp message sent", enabled: true, singularForm: "Sent Whatsapp message", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["MPG:WhatsAppV2"], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false }, { id: "e_hs_scheduled_email_v2", pluralForm: "Marketing or sales emails sent", hasOwners: false, objectTypeId: "4-667638", triggerGroupId: "email", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact is sent a marketing email or a sales email sent from a connected inbox", description: "Email sent", enabled: true, singularForm: "Marketing or sales email sent", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_mb_attention_span", pluralForm: "Attention Span", hasOwners: false, objectTypeId: "4-675784", triggerGroupId: "Video events", janusGroup: "hs-media-content-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "Triggers after a user is finished watching a video", description: "Video watch events with attention span data like percent played.", enabled: true, singularForm: "Attention Span", triggerGroupLabel: "Video events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["MediaContent::AttentionSpanWorkflowTrigger"], requiredScopes: ["marketing-video"], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction", omitted: false }, { id: "e_mb_media_played", pluralForm: "Media Plays", hasOwners: false, objectTypeId: "4-675783", triggerGroupId: "Video events", janusGroup: "hs-media-content-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact plays media", description: "Timestamp of when a contact played a media file stored in your hubspot account.", enabled: true, singularForm: "Media Play", triggerGroupLabel: "Video events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction", omitted: false }, { id: "e_mta_bounced_email_v2", pluralForm: "Marketing or sales emails bounced", hasOwners: false, objectTypeId: "4-666439", triggerGroupId: "email", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact's inbox bounces a marketing or sales email", description: "A contact's email bounced", enabled: true, singularForm: "Marketing or sales email bounced", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_mta_delivered_email_v2", pluralForm: "Marketing or sales emails delivered", hasOwners: false, objectTypeId: "4-665536", triggerGroupId: "email", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact's inbox receives a marketing or sales email", description: "Marketing or sales email was delivered", enabled: true, singularForm: "Marketing or sales email delivered", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_object_created_v2", pluralForm: "Records created", hasOwners: false, objectTypeId: "4-1463224", triggerGroupId: "", janusGroup: "hs-objects-platform", requiredObjectTypeIds: [], triggerDescription: "When a new record is created in the CRM", description: "Object is created in the CRM", enabled: true, singularForm: "Record created", triggerGroupLabel: "", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data" }, { id: "e_object_influenced_marketing_campaign_v4", pluralForm: "Campaign Influences", hasOwners: false, objectTypeId: "4-1563645", triggerGroupId: "crm", janusGroup: "hs-studio-measure-be", triggerDescription: "Triggers when a contact interacts with a campaign asset", requiredObjectTypeIds: ["0-1"], description: "Adding trigger for influenced contacts", enabled: true, singularForm: "Campaign Influence", triggerGroupLabel: "CRM", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["campaigns-access"], requiredGates: ["MO:Automation:WorkflowsCampaign"], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction", omitted: false, tag: "beta" }, { id: "e_opened_email_v2", pluralForm: "Opened marketing emails", hasOwners: false, objectTypeId: "4-666440", triggerGroupId: "email", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact opens a marketing email", description: "User opened email", enabled: true, singularForm: "Opened marketing email", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_opted_out_of_whatsapp_subscription", pluralForm: "Opted out of WhatsApp subscriptions", hasOwners: false, objectTypeId: "4-6911595", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact opts out of receiving WhatsApp messages", description: "Opted out of WhatsApp subscription", enabled: true, singularForm: "Opted out of WhatsApp subscription", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false }, { id: "e_playbook_log_on_record", pluralForm: "Playbook Logs", hasOwners: false, objectTypeId: "4-1814177", triggerGroupId: "", janusGroup: "hs-crm-card-platform-be", requiredObjectTypeIds: [], triggerDescription: "When a note is recorded within a HubSpot playbook", description: "Triggers when a user logs a playbook", enabled: true, singularForm: "Playbook Log", triggerGroupLabel: "", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["playbooks-write"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", blockedObjectTypeIds: ["0-136"] }, { id: "e_process_submission_completed_on_object", pluralForm: "Process Guide Submission Completions", hasOwners: false, objectTypeId: "4-3499849", janusGroup: "hs-crm-card-platform-be", triggerDescription: "When a Process Guide is submitted on a record", requiredObjectTypeIds: [], description: "Triggers when a user submits a process guide on a record ", enabled: true, singularForm: "Process Guide Submission Completion", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["CRM:Processes:ProcessGuideListCard"], requiredScopes: ["crm-processes-write"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data" }],
|
|
11767
|
+
[{ id: "e_property_value_changed", pluralForm: "Property values changed", hasOwners: false, objectTypeId: "4-655002", triggerGroupId: "", janusGroup: "hs-automation-engine-be", requiredObjectTypeIds: [], triggerDescription: "When a record\u2019s property value is added, edited, or removed", description: "Property value changed on an object", enabled: true, singularForm: "Property value changed", triggerGroupLabel: "", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data" }, { id: "e_public_quote_download", pluralForm: "Public Quote Downloads", hasOwners: false, objectTypeId: "4-3395636", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when a user downloads public quote", enabled: true, singularForm: "Public Quote Download", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_accepted", pluralForm: "Quote Accepted Events", hasOwners: false, objectTypeId: "4-4035552", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14", "0-3"], triggerDescription: "Triggers when a quote enters an accepted state", enabled: true, singularForm: "Quote Accepted Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_approval_approved", pluralForm: "Quote Approved Events", hasOwners: false, objectTypeId: "4-4940920", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when quote approval is approved", enabled: true, singularForm: "Quote Approved Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_approval_recalled", pluralForm: "Quote Approval Recalled Events", hasOwners: false, objectTypeId: "4-6300050", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when quote approval is recalled", enabled: true, singularForm: "Quote Approval Recalled Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_approval_rejected", pluralForm: "Quote Rejected Events", hasOwners: false, objectTypeId: "4-4940921", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when quote approval is rejected", enabled: true, singularForm: "Quote Rejected Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_approval_requested", pluralForm: "Quote Approval Requested Events", hasOwners: false, objectTypeId: "4-4967160", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when quote approval is requested", enabled: true, singularForm: "Quote Approval Requested Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_buyer_signed", pluralForm: "Quote Buyer Signed Events", hasOwners: false, objectTypeId: "4-6300056", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when buyer signs quote", enabled: true, singularForm: "Quote Buyer Signed Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_countersigned", pluralForm: "Quote Countersigned Events", hasOwners: false, objectTypeId: "4-5076606", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when countersigner signs quote", enabled: true, singularForm: "Quote Countersigned Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_email_sent", pluralForm: "Quote Emails Sent", hasOwners: false, objectTypeId: "4-2006192", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14", "0-3", "0-2", "0-1"], triggerDescription: "Triggers when quote email is sent", enabled: true, singularForm: "Quote Email Sent", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_expiration_reminder_email", pluralForm: "Quote Expiration Reminder Emails Sent", hasOwners: false, objectTypeId: "4-5470322", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14", "0-3", "0-2", "0-1"], triggerDescription: "Triggers when the quote expiration reminder emails were sent", enabled: true, singularForm: "Quote Expiration Reminder Email Sent", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_expired", pluralForm: "Quote Expired Events", hasOwners: false, objectTypeId: "4-6300054", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when a quote enters an expired state", enabled: true, singularForm: "Quote Expired Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }],
|
|
11768
|
+
[{ id: "e_quote_followup_reminder_email", pluralForm: "Quote Followup Reminder Emails Sent", hasOwners: false, objectTypeId: "4-5470323", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14", "0-3", "0-2", "0-1"], triggerDescription: "Triggers when the quote followup reminder emails were sent", enabled: true, singularForm: "Quote Followup Reminder Email Sent", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_manually_signed", pluralForm: "Quote Manually Signed Events", hasOwners: false, objectTypeId: "4-6300053", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when quote is manually signed", enabled: true, singularForm: "Quote Manually Signed Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_published", pluralForm: "Quote Published Events", hasOwners: false, objectTypeId: "4-5470320", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when a quote enters a published state", enabled: true, singularForm: "Quote Published Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_quote_recalled", pluralForm: "Quote Recalled Events", hasOwners: false, objectTypeId: "4-4810356", triggerGroupId: "quote", janusGroup: "hs-commerce-quotes-management-be", requiredObjectTypeIds: ["0-14"], triggerDescription: "Triggers when a quote enters a recalled state", enabled: true, singularForm: "Quote Recalled Event", triggerGroupLabel: "Quote events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["commerce:qmgmt:ExposeQuoteEventsAsWorkflowTriggers"], requiredScopes: ["cpq-quote-access"], modernCategoryId: "crm", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_read_whatsapp_message", pluralForm: "WhatsApp messages read", hasOwners: false, objectTypeId: "4-6607540", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact reads a WhatsApp message", description: "WhatsApp message read", enabled: true, singularForm: "WhatsApp message read", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: ["MPG:WhatsAppV2"], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false }, { id: "e_replied_email_v2", pluralForm: "Replied to marketing emails", hasOwners: false, objectTypeId: "4-665538", triggerGroupId: "email", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact replies to a marketing email", description: "A contact replied to an email", enabled: true, singularForm: "Replied to marketing email", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_replied_whatsapp_message", pluralForm: "Replied to WhatsApp messages", hasOwners: false, objectTypeId: "4-6911594", triggerGroupId: "WhatsApp", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When the contact replies to a WhatsApp message", description: "WhatsApp message replied", enabled: true, singularForm: "Replied to a WhatsApp message", triggerGroupLabel: "WhatsApp events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "whats_app", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction", omitted: false }, { id: "e_research_intent_level_change", pluralForm: "Research level changes", hasOwners: false, objectTypeId: "4-5470332", triggerGroupId: "company_signal", janusGroup: "hs-reveal", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company starts researching one of your topics or changes research level", description: "When a company starts researching one of your topics or changes research level", enabled: true, singularForm: "Research level change", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_sent_shortmessage", pluralForm: "SMS sent", hasOwners: false, objectTypeId: "4-1719453", triggerGroupId: "sms", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When an SMS is sent to a contact", enabled: true, singularForm: "SMS sent", triggerGroupLabel: "SMS events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["sms-marketing-addon"], modernCategoryId: "sms", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_sent_tracked_inbox_email_v8", pluralForm: "Sales email sends", hasOwners: false, objectTypeId: "4-1367006", triggerGroupId: "email", janusGroup: "hs-con-email-platform", requiredObjectTypeIds: ["0-1"], triggerDescription: "A user sent a sales/service email", enabled: true, singularForm: "Sales email send", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_updated_email_subscription_status_v2", pluralForm: "Updated marketing email subscription statuses", hasOwners: false, objectTypeId: "4-666289", triggerGroupId: "email", janusGroup: "hs-messaging-analytics", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact's subscription to marketing emails is updated", description: "Contact updated their email subscription status", enabled: true, singularForm: "Updated marketing email subscription status", triggerGroupLabel: "Email events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "email", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "contactInteraction" }, { id: "e_v2_contact_booked_meeting_through_sequence", pluralForm: "Contacts booked meeting through a sequence", hasOwners: false, objectTypeId: "4-675773", triggerGroupId: "sequences", janusGroup: "hs-sequences-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact books a meeting through a sequence", description: "Triggers when a contact books a meeting via a sequence", enabled: true, singularForm: "Contact booked meeting through a sequence", triggerGroupLabel: "Sequence events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }],
|
|
11769
|
+
[{ id: "e_v2_contact_enrolled_in_sequence", pluralForm: "Contacts enrolled in a sequence", hasOwners: false, objectTypeId: "4-675777", triggerGroupId: "sequences", janusGroup: "hs-sequences-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact is enrolled in a sequence", description: "Triggers when a contact is enrolled in a sequence", enabled: true, singularForm: "Contact enrolled in a sequence", triggerGroupLabel: "Sequence events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }, { id: "e_v2_contact_finished_sequence", pluralForm: "Sequences finished", hasOwners: false, objectTypeId: "4-675778", triggerGroupId: "sequences", janusGroup: "hs-sequences-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact finishes a sequence", description: "Triggers when a contact finishes a sequence", enabled: true, singularForm: "Sequence finished", triggerGroupLabel: "Sequence events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }, { id: "e_v2_contact_unenrolled_from_sequence", pluralForm: "Contacts unenrolled from sequence", hasOwners: false, objectTypeId: "4-675776", triggerGroupId: "sequences", janusGroup: "hs-sequences-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact is unenrolled from a sequence", description: "Triggers when a contact unenrolls from a sequence", enabled: true, singularForm: "Contact unenrolled from sequence", triggerGroupLabel: "Sequence events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }, { id: "e_v2_contact_unenrolled_from_sequence_via_workflow", pluralForm: "Contacts unenrolled from sequence via workflow", hasOwners: false, objectTypeId: "4-1497402", triggerGroupId: "sequences", janusGroup: "hs-sequences-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact is unenrolled from a sequence through a workflow", description: "Triggers when a contact is unenrolled in a sequence by a workflow", enabled: true, singularForm: "Contact unenrolled from sequence via workflow", triggerGroupLabel: "Sequence events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }, { id: "e_v2_contact_unenrolled_manually_from_sequence", pluralForm: "Contacts unenrolled manually from sequence", hasOwners: false, objectTypeId: "4-675775", triggerGroupId: "sequences", janusGroup: "hs-sequences-be", triggerDescription: "When a contact is unenrolled from a sequence manually", requiredObjectTypeIds: ["0-1"], description: "Triggers when a contact is manually unenrolled from a sequence", enabled: true, singularForm: "Contact unenrolled manually from sequence", triggerGroupLabel: "Sequence events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }, { id: "e_viewed_cta", pluralForm: "CTA (Legacy) views", hasOwners: false, objectTypeId: "4-100215", triggerGroupId: "website", janusGroup: "hs-lead-capture-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact views a legacy CTA", description: "CTA was viewed", enabled: true, singularForm: "CTA (Legacy) view", triggerGroupLabel: "Website events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["cta-access"], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_viewed_web_interactive", pluralForm: "CTA views", hasOwners: false, objectTypeId: "4-1555804", triggerGroupId: "website", janusGroup: "hs-lead-capture-be", triggerDescription: "When a contact views a CTA", requiredObjectTypeIds: ["0-1"], enabled: true, singularForm: "CTA view", triggerGroupLabel: "Website events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: ["calls-to-action-read"], requiredGates: [], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_visited_page", pluralForm: "Pages visited", hasOwners: false, objectTypeId: "4-96000", triggerGroupId: "website", janusGroup: "hs-web-analytics-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a contact visits a website page", description: "Page view", enabled: true, singularForm: "Page visited", triggerGroupLabel: "Website events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["web-analytics-api-access"], modernCategoryId: "media", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "digitalInteraction" }, { id: "e_visitor_intent_status_change", pluralForm: "Visitor intent updates", hasOwners: false, objectTypeId: "4-5470329", triggerGroupId: "company_signal", janusGroup: "hs-reveal", requiredObjectTypeIds: ["0-2"], triggerDescription: "When a company domain enters or exits an intent criteria", description: "Shows when a company domain has entered or exited a visitor intent.", enabled: true, singularForm: "Visitor intent update", triggerGroupLabel: "Company signal events", hasPipelines: false, hasExternalObjectIds: false, requiredGates: [], requiredScopes: ["data-enrichment-platform-access"], modernCategoryId: "buyer_company_insights", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "data", omitted: false }, { id: "e_workflow_enrolled_v2", pluralForm: "Enrolled in workflows", hasOwners: false, objectTypeId: "4-1466013", triggerGroupId: "workflows", janusGroup: "hs-automation-observability-be", requiredObjectTypeIds: [], triggerDescription: "When a record enrolls in a workflow", description: "An object is enrolled in a workflow", enabled: true, singularForm: "Enrolled in workflow", triggerGroupLabel: "Workflow events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: [], requiredGates: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }, { id: "e_workflow_goal_v2", pluralForm: "Achieved workflow goals", hasOwners: false, objectTypeId: "4-1753168", triggerGroupId: "workflows", janusGroup: "hs-automation-observability-be", requiredObjectTypeIds: ["0-1"], triggerDescription: "When a record achieves a workflow goal", description: "Triggers when a workflow goal is met", enabled: true, singularForm: "Achieved workflow goal", triggerGroupLabel: "Workflow events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: [], requiredGates: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }, { id: "e_workflow_unenrolled_v2", pluralForm: "Unenrolled from workflows", hasOwners: false, objectTypeId: "4-1466014", triggerGroupId: "workflows", janusGroup: "hs-automation-observability-be", requiredObjectTypeIds: [], triggerDescription: "When a record unenrolls from a workflow", description: "An object is unenrolled from a workflow", enabled: true, singularForm: "Unenrolled from workflow", triggerGroupLabel: "Workflow events", hasPipelines: false, hasExternalObjectIds: false, requiredScopes: [], requiredGates: [], modernCategoryId: "automation", hasCustomProperties: false, hasDefaultProperties: true, triggerCategoryId: "automation" }]
|
|
11770
|
+
]
|
|
11771
|
+
};
|
|
11772
|
+
|
|
11773
|
+
// ../shared/pure/workflow-enrollment-triggers.ts
|
|
11774
|
+
var EMPTY_PARAMETER_SCHEMA = [];
|
|
11775
|
+
var PROPERTY_VALUE_OPERATORS = [
|
|
11776
|
+
"IS_KNOWN",
|
|
11777
|
+
"IS_UNKNOWN",
|
|
11778
|
+
"IS_EQUAL_TO",
|
|
11779
|
+
"IS_NOT_EQUAL_TO"
|
|
11780
|
+
];
|
|
11781
|
+
var PROPERTY_VALUE_OPERATOR_SET = new Set(PROPERTY_VALUE_OPERATORS);
|
|
11782
|
+
var PROPERTY_VALUE_CHANGED_PARAMETER_SCHEMA = [
|
|
11783
|
+
{
|
|
11784
|
+
name: "property_name",
|
|
11785
|
+
required: true,
|
|
11786
|
+
description: "Internal CRM property name to watch, for example 'firstname' or 'dealstage'."
|
|
11787
|
+
},
|
|
11788
|
+
{
|
|
11789
|
+
name: "property_value_operator",
|
|
11790
|
+
required: false,
|
|
11791
|
+
description: "Defaults to IS_KNOWN. Supported values: IS_KNOWN, IS_UNKNOWN, IS_EQUAL_TO, IS_NOT_EQUAL_TO. This only controls the event refinement filter on hs_value inside the 4-655002 property-change event branch."
|
|
11792
|
+
},
|
|
11793
|
+
{
|
|
11794
|
+
name: "property_value",
|
|
11795
|
+
required: false,
|
|
11796
|
+
description: "Required when property_value_operator is IS_EQUAL_TO or IS_NOT_EQUAL_TO. This does not add generic object-property filters like pipeline or dealstage to the event branch."
|
|
11797
|
+
}
|
|
11798
|
+
];
|
|
11799
|
+
var WORKFLOW_REFERENCE_PARAMETER_SCHEMA = [
|
|
11800
|
+
{
|
|
11801
|
+
name: "target_workflow_id",
|
|
11802
|
+
required: true,
|
|
11803
|
+
description: "Workflow ID to match in the trigger filter."
|
|
11804
|
+
}
|
|
11805
|
+
];
|
|
11806
|
+
var PARAMETER_SCHEMA_BY_TEMPLATE = {
|
|
11807
|
+
simple_event_has_completed: EMPTY_PARAMETER_SCHEMA,
|
|
11808
|
+
property_value_changed_named_property: PROPERTY_VALUE_CHANGED_PARAMETER_SCHEMA,
|
|
11809
|
+
workflow_reference_filter: WORKFLOW_REFERENCE_PARAMETER_SCHEMA
|
|
11810
|
+
};
|
|
11811
|
+
var EVENT_TYPE_METADATA_BY_EVENT_TYPE_ID = {
|
|
11812
|
+
"4-655002": {
|
|
11813
|
+
requiresRefinementFilters: true,
|
|
11814
|
+
refinementNote: "Requires event-specific refinement filters embedded in the event branch. For MCP these are hs_name and hs_value. Standard object-property filters like pipeline, dealstage, amount, or closedate are not valid inside the 4-655002 branch. Prefer LIST_BASED enrollment with re-enrollment triggers for 'property changed to X' scenarios that also need record eligibility filters."
|
|
11815
|
+
}
|
|
11816
|
+
};
|
|
11817
|
+
var normalizedRows = normalized_triggers_default;
|
|
11818
|
+
var rawCatalog = trigger_catalog_default;
|
|
11819
|
+
var rawCatalogById = new Map(
|
|
11820
|
+
(rawCatalog.entryChunks ?? []).flat().map((entry) => [entry.id, entry])
|
|
11821
|
+
);
|
|
11822
|
+
var SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS = normalizedRows.map((row) => {
|
|
11823
|
+
const catalogEntry = rawCatalogById.get(row.catalogId);
|
|
11824
|
+
const fallbackDescription = catalogEntry?.triggerDescription ?? row.sampleWorkflowName ?? "";
|
|
11825
|
+
const eventMetadata = EVENT_TYPE_METADATA_BY_EVENT_TYPE_ID[row.eventTypeId];
|
|
11826
|
+
const officialCriteriaExample = buildBaseEventCriteria(row.eventTypeId, false, row.officialFiltersExample);
|
|
11827
|
+
return {
|
|
11828
|
+
catalogId: row.catalogId,
|
|
11829
|
+
criteriaType: "EVENT_BASED",
|
|
11830
|
+
shortcutKind: "EVENT_TRIGGER_SHORTCUT",
|
|
11831
|
+
eventTypeId: row.eventTypeId,
|
|
11832
|
+
name: catalogEntry?.singularForm?.trim() || row.catalogId,
|
|
11833
|
+
description: catalogEntry?.description?.trim() || fallbackDescription.trim(),
|
|
11834
|
+
requiresRefinementFilters: eventMetadata?.requiresRefinementFilters ?? false,
|
|
11835
|
+
refinementNote: eventMetadata?.refinementNote,
|
|
11836
|
+
template: row.officialFilterTemplate,
|
|
11837
|
+
officialFiltersExample: row.officialFiltersExample,
|
|
11838
|
+
officialCriteriaExample,
|
|
11839
|
+
criteriaShape: officialCriteriaExample,
|
|
11840
|
+
triggerCategoryId: row.triggerCategoryId,
|
|
11841
|
+
modernCategoryId: row.modernCategoryId,
|
|
11842
|
+
triggerGroupLabel: row.triggerGroupLabel,
|
|
11843
|
+
requiredScopes: row.requiredScopes,
|
|
11844
|
+
requiredGates: row.requiredGates,
|
|
11845
|
+
requiredObjectTypeIds: catalogEntry?.requiredObjectTypeIds ?? [],
|
|
11846
|
+
parameterSchema: PARAMETER_SCHEMA_BY_TEMPLATE[row.officialFilterTemplate],
|
|
11847
|
+
sampleWorkflowId: row.sampleWorkflowId,
|
|
11848
|
+
sampleWorkflowName: row.sampleWorkflowName,
|
|
11849
|
+
usageGuidance: eventMetadata?.refinementNote ?? "Use this row for enrollment_trigger shortcuts or raw EVENT_BASED event branches. event_type_id is an event catalog ID, not a CRM object type ID.",
|
|
11850
|
+
preferredFor: [
|
|
11851
|
+
"Single-trigger EVENT_BASED workflows",
|
|
11852
|
+
"Cases where a confirmed eventTypeId is needed for a UNIFIED_EVENTS branch"
|
|
11853
|
+
],
|
|
11854
|
+
avoidFor: eventMetadata?.requiresRefinementFilters ? ["Prefer LIST_BASED when the intent is 'property changed to X' with simple property-based re-enrollment."] : []
|
|
11855
|
+
};
|
|
11856
|
+
});
|
|
11857
|
+
var LIST_BASED_EXAMPLE_FILTERS = [
|
|
11858
|
+
{
|
|
11859
|
+
filterType: "PROPERTY",
|
|
11860
|
+
property: "lifecyclestage",
|
|
11861
|
+
operation: {
|
|
11862
|
+
operationType: "ENUMERATION",
|
|
11863
|
+
operator: "IS_ANY_OF",
|
|
11864
|
+
values: ["customer"],
|
|
11865
|
+
includeObjectsWithNoValueSet: false
|
|
11866
|
+
}
|
|
11867
|
+
}
|
|
11868
|
+
];
|
|
11869
|
+
var LIST_BASED_REENROLLMENT_BRANCHES = [
|
|
11870
|
+
{
|
|
11871
|
+
filterBranchType: "OR",
|
|
11872
|
+
filterBranchOperator: "OR",
|
|
11873
|
+
filters: [],
|
|
11874
|
+
filterBranches: [
|
|
11875
|
+
{
|
|
11876
|
+
filterBranchType: "AND",
|
|
11877
|
+
filterBranchOperator: "AND",
|
|
11878
|
+
filters: [...LIST_BASED_EXAMPLE_FILTERS],
|
|
11879
|
+
filterBranches: []
|
|
11880
|
+
}
|
|
11881
|
+
]
|
|
11882
|
+
}
|
|
11883
|
+
];
|
|
11884
|
+
var WORKFLOW_ENROLLMENT_REFERENCE_EXAMPLES = [
|
|
11885
|
+
{
|
|
11886
|
+
catalogId: "list_based_filter_criteria",
|
|
11887
|
+
criteriaType: "LIST_BASED",
|
|
11888
|
+
shortcutKind: "CRITERIA_EXAMPLE",
|
|
11889
|
+
eventTypeId: "",
|
|
11890
|
+
name: "List-based filter criteria",
|
|
11891
|
+
description: "Enroll records when they currently match a list-style filter definition.",
|
|
11892
|
+
requiresRefinementFilters: false,
|
|
11893
|
+
refinementNote: "Root listFilterBranch should be OR with one or more nested AND branches, matching HubSpot list filter structure.",
|
|
11894
|
+
template: "list_filter_branch",
|
|
11895
|
+
officialFiltersExample: [],
|
|
11896
|
+
officialCriteriaExample: buildBaseListCriteria(LIST_BASED_EXAMPLE_FILTERS, false),
|
|
11897
|
+
criteriaShape: buildBaseListCriteria([
|
|
11898
|
+
{
|
|
11899
|
+
filterType: "PROPERTY",
|
|
11900
|
+
property: "<internal_property_name>",
|
|
11901
|
+
operation: {
|
|
11902
|
+
operationType: "<operation_type>",
|
|
11903
|
+
operator: "<operator>"
|
|
11904
|
+
}
|
|
11905
|
+
}
|
|
11906
|
+
], false),
|
|
11907
|
+
triggerCategoryId: "synthetic",
|
|
11908
|
+
modernCategoryId: "list_based",
|
|
11909
|
+
triggerGroupLabel: "List-based enrollment",
|
|
11910
|
+
requiredScopes: [],
|
|
11911
|
+
requiredGates: [],
|
|
11912
|
+
requiredObjectTypeIds: [],
|
|
11913
|
+
parameterSchema: [],
|
|
11914
|
+
sampleWorkflowId: "",
|
|
11915
|
+
sampleWorkflowName: "",
|
|
11916
|
+
usageGuidance: "Use this when enrollment should be based on the record currently matching filter criteria. Hand-author enrollment_criteria with type LIST_BASED; do not use enrollment_trigger for this row.",
|
|
11917
|
+
preferredFor: [
|
|
11918
|
+
"Property/state-based enrollment rules",
|
|
11919
|
+
"Criteria that should match the current record state rather than a single event occurrence"
|
|
11920
|
+
],
|
|
11921
|
+
avoidFor: [
|
|
11922
|
+
"Single-event triggers that already have an EVENT_BASED catalog row"
|
|
11923
|
+
]
|
|
11924
|
+
},
|
|
11925
|
+
{
|
|
11926
|
+
catalogId: "list_based_property_change_reenrollment",
|
|
11927
|
+
criteriaType: "LIST_BASED",
|
|
11928
|
+
shortcutKind: "CRITERIA_EXAMPLE",
|
|
11929
|
+
eventTypeId: "",
|
|
11930
|
+
name: "List-based property change re-enrollment",
|
|
11931
|
+
description: "Use list-based criteria plus re-enrollment trigger branches when a property change should re-check the filter.",
|
|
11932
|
+
requiresRefinementFilters: false,
|
|
11933
|
+
refinementNote: "Prefer this pattern over raw property-change EVENT_BASED criteria when the business intent is 'enroll whenever property X becomes Y'.",
|
|
11934
|
+
template: "list_filter_branch",
|
|
11935
|
+
officialFiltersExample: [],
|
|
11936
|
+
officialCriteriaExample: buildBaseListCriteria(
|
|
11937
|
+
LIST_BASED_EXAMPLE_FILTERS,
|
|
11938
|
+
true,
|
|
11939
|
+
LIST_BASED_REENROLLMENT_BRANCHES
|
|
11940
|
+
),
|
|
11941
|
+
criteriaShape: buildBaseListCriteria([
|
|
11942
|
+
{
|
|
11943
|
+
filterType: "PROPERTY",
|
|
11944
|
+
property: "<internal_property_name>",
|
|
11945
|
+
operation: {
|
|
11946
|
+
operationType: "<operation_type>",
|
|
11947
|
+
operator: "<operator>"
|
|
11948
|
+
}
|
|
11949
|
+
}
|
|
11950
|
+
], true, [
|
|
11951
|
+
{
|
|
11952
|
+
filterBranchType: "OR",
|
|
11953
|
+
filterBranchOperator: "OR",
|
|
11954
|
+
filters: [],
|
|
11955
|
+
filterBranches: [
|
|
11956
|
+
{
|
|
11957
|
+
filterBranchType: "AND",
|
|
11958
|
+
filterBranchOperator: "AND",
|
|
11959
|
+
filters: [
|
|
11960
|
+
{
|
|
11961
|
+
filterType: "PROPERTY",
|
|
11962
|
+
property: "<reenrollment_property_name>",
|
|
11963
|
+
operation: {
|
|
11964
|
+
operationType: "<operation_type>",
|
|
11965
|
+
operator: "<operator>"
|
|
11966
|
+
}
|
|
11967
|
+
}
|
|
11968
|
+
],
|
|
11969
|
+
filterBranches: []
|
|
11970
|
+
}
|
|
11971
|
+
]
|
|
11972
|
+
}
|
|
11973
|
+
]),
|
|
11974
|
+
triggerCategoryId: "synthetic",
|
|
11975
|
+
modernCategoryId: "list_based",
|
|
11976
|
+
triggerGroupLabel: "List-based enrollment",
|
|
11977
|
+
requiredScopes: [],
|
|
11978
|
+
requiredGates: [],
|
|
11979
|
+
requiredObjectTypeIds: [],
|
|
11980
|
+
parameterSchema: [],
|
|
11981
|
+
sampleWorkflowId: "",
|
|
11982
|
+
sampleWorkflowName: "",
|
|
11983
|
+
usageGuidance: "Use LIST_BASED when the desired behavior is 'enroll when property X is or becomes Y'. Put the matching logic in listFilterBranch and the property to watch for re-checks in reEnrollmentTriggersFilterBranches.",
|
|
11984
|
+
preferredFor: [
|
|
11985
|
+
"Property-change scenarios that should re-enroll when a record returns to the matching state",
|
|
11986
|
+
"Simple 'becomes known' or 'equals value' workflows"
|
|
11987
|
+
],
|
|
11988
|
+
avoidFor: [
|
|
11989
|
+
"Cases where a simpler event shortcut is sufficient and current-state matching is not needed"
|
|
11990
|
+
]
|
|
11991
|
+
},
|
|
11992
|
+
{
|
|
11993
|
+
catalogId: "manual_only",
|
|
11994
|
+
criteriaType: "MANUAL",
|
|
11995
|
+
shortcutKind: "CRITERIA_EXAMPLE",
|
|
11996
|
+
eventTypeId: "",
|
|
11997
|
+
name: "Manual enrollment only",
|
|
11998
|
+
description: "Use manual enrollment when records should only enter the workflow explicitly.",
|
|
11999
|
+
requiresRefinementFilters: false,
|
|
12000
|
+
refinementNote: "Manual workflows do not define automatic event or list criteria.",
|
|
12001
|
+
template: "manual_only",
|
|
12002
|
+
officialFiltersExample: [],
|
|
12003
|
+
officialCriteriaExample: buildManualCriteria(true),
|
|
12004
|
+
criteriaShape: buildManualCriteria(true),
|
|
12005
|
+
triggerCategoryId: "synthetic",
|
|
12006
|
+
modernCategoryId: "manual",
|
|
12007
|
+
triggerGroupLabel: "Manual enrollment",
|
|
12008
|
+
requiredScopes: [],
|
|
12009
|
+
requiredGates: [],
|
|
12010
|
+
requiredObjectTypeIds: [],
|
|
12011
|
+
parameterSchema: [],
|
|
12012
|
+
sampleWorkflowId: "",
|
|
12013
|
+
sampleWorkflowName: "",
|
|
12014
|
+
usageGuidance: "Use enrollment_criteria.type = MANUAL when enrollment should only happen through explicit user or automation enrollment paths. Do not attach eventTypeId or listFilterBranch.",
|
|
12015
|
+
preferredFor: [
|
|
12016
|
+
"Workflows that should never auto-enroll from data changes",
|
|
12017
|
+
"Operational workflows started manually or from another automation"
|
|
12018
|
+
],
|
|
12019
|
+
avoidFor: [
|
|
12020
|
+
"Any workflow that needs automatic enrollment from events or matching criteria"
|
|
12021
|
+
]
|
|
12022
|
+
}
|
|
12023
|
+
];
|
|
12024
|
+
var WORKFLOW_ENROLLMENT_CATALOG = [
|
|
12025
|
+
...SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS,
|
|
12026
|
+
...WORKFLOW_ENROLLMENT_REFERENCE_EXAMPLES
|
|
12027
|
+
];
|
|
12028
|
+
var SIMPLE_EVENT_WORKFLOW_TRIGGER_CATALOG_IDS = SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS.filter((trigger) => trigger.template === "simple_event_has_completed").map((trigger) => trigger.catalogId);
|
|
12029
|
+
var WORKFLOW_ENROLLMENT_TRIGGER_CATALOG_IDS = SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS.map((trigger) => trigger.catalogId);
|
|
12030
|
+
var SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGER_MAP = new Map(
|
|
12031
|
+
SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS.map((trigger) => [trigger.catalogId, trigger])
|
|
12032
|
+
);
|
|
12033
|
+
var SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS_BY_EVENT_TYPE_ID = new Map(
|
|
12034
|
+
SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS.map((trigger) => [trigger.eventTypeId, trigger])
|
|
12035
|
+
);
|
|
12036
|
+
var KNOWN_WORKFLOW_ENROLLMENT_EVENT_TYPE_IDS = new Set(
|
|
12037
|
+
SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS.map((trigger) => trigger.eventTypeId)
|
|
12038
|
+
);
|
|
12039
|
+
var WORKFLOW_EVENT_TYPES_REQUIRING_REFINEMENT = new Set(
|
|
12040
|
+
SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS.filter((trigger) => trigger.requiresRefinementFilters).map((trigger) => trigger.eventTypeId)
|
|
12041
|
+
);
|
|
12042
|
+
var buildAllowedFieldNames = (trigger) => [
|
|
12043
|
+
"catalog_id",
|
|
12044
|
+
"should_re_enroll",
|
|
12045
|
+
...trigger.parameterSchema.map((parameter) => parameter.name)
|
|
12046
|
+
];
|
|
12047
|
+
function buildBaseEventCriteria(eventTypeId, shouldReEnroll, filters = []) {
|
|
12048
|
+
return {
|
|
12049
|
+
type: "EVENT_BASED",
|
|
12050
|
+
shouldReEnroll,
|
|
12051
|
+
eventFilterBranches: [
|
|
12052
|
+
{
|
|
12053
|
+
filterBranchType: "UNIFIED_EVENTS",
|
|
12054
|
+
filterBranchOperator: "AND",
|
|
12055
|
+
eventTypeId,
|
|
12056
|
+
operator: "HAS_COMPLETED",
|
|
12057
|
+
filters,
|
|
12058
|
+
filterBranches: []
|
|
12059
|
+
}
|
|
12060
|
+
],
|
|
12061
|
+
listMembershipFilterBranches: []
|
|
12062
|
+
};
|
|
12063
|
+
}
|
|
12064
|
+
function buildBaseListCriteria(filters, shouldReEnroll, reEnrollmentTriggersFilterBranches = []) {
|
|
12065
|
+
return {
|
|
12066
|
+
type: "LIST_BASED",
|
|
12067
|
+
shouldReEnroll,
|
|
12068
|
+
listFilterBranch: {
|
|
12069
|
+
filterBranchType: "OR",
|
|
12070
|
+
filterBranchOperator: "OR",
|
|
12071
|
+
filters: [],
|
|
12072
|
+
filterBranches: [
|
|
12073
|
+
{
|
|
12074
|
+
filterBranchType: "AND",
|
|
12075
|
+
filterBranchOperator: "AND",
|
|
12076
|
+
filters,
|
|
12077
|
+
filterBranches: []
|
|
12078
|
+
}
|
|
12079
|
+
]
|
|
12080
|
+
},
|
|
12081
|
+
reEnrollmentTriggersFilterBranches,
|
|
12082
|
+
unEnrollObjectsNotMeetingCriteria: true
|
|
12083
|
+
};
|
|
12084
|
+
}
|
|
12085
|
+
function buildManualCriteria(shouldReEnroll) {
|
|
12086
|
+
return {
|
|
12087
|
+
type: "MANUAL",
|
|
12088
|
+
shouldReEnroll
|
|
12089
|
+
};
|
|
12090
|
+
}
|
|
12091
|
+
var buildPropertyValueOperation = (input) => {
|
|
12092
|
+
const operator = input.property_value_operator ?? "IS_KNOWN";
|
|
12093
|
+
if (operator === "IS_KNOWN" || operator === "IS_UNKNOWN") {
|
|
12094
|
+
return {
|
|
12095
|
+
operationType: "ALL_PROPERTY",
|
|
12096
|
+
operator,
|
|
12097
|
+
includeObjectsWithNoValueSet: false
|
|
12098
|
+
};
|
|
12099
|
+
}
|
|
12100
|
+
return {
|
|
12101
|
+
operationType: "STRING",
|
|
12102
|
+
operator,
|
|
12103
|
+
value: input.property_value,
|
|
12104
|
+
includeObjectsWithNoValueSet: false
|
|
12105
|
+
};
|
|
12106
|
+
};
|
|
12107
|
+
var validatePropertyValueChangedTriggerInput = (trigger) => {
|
|
12108
|
+
const issues = [];
|
|
12109
|
+
if (typeof trigger.property_name !== "string" || trigger.property_name.length === 0) {
|
|
12110
|
+
issues.push({
|
|
12111
|
+
path: ["property_name"],
|
|
12112
|
+
message: "property_name is required for this enrollment trigger"
|
|
12113
|
+
});
|
|
12114
|
+
}
|
|
12115
|
+
if (trigger.property_value_operator !== void 0 && !PROPERTY_VALUE_OPERATOR_SET.has(String(trigger.property_value_operator))) {
|
|
12116
|
+
issues.push({
|
|
12117
|
+
path: ["property_value_operator"],
|
|
12118
|
+
message: `property_value_operator must be one of: ${PROPERTY_VALUE_OPERATORS.join(", ")}`
|
|
12119
|
+
});
|
|
12120
|
+
}
|
|
12121
|
+
const operator = trigger.property_value_operator ?? "IS_KNOWN";
|
|
12122
|
+
if ((operator === "IS_EQUAL_TO" || operator === "IS_NOT_EQUAL_TO") && typeof trigger.property_value !== "string") {
|
|
12123
|
+
issues.push({
|
|
12124
|
+
path: ["property_value"],
|
|
12125
|
+
message: "property_value is required when property_value_operator compares against a specific value"
|
|
12126
|
+
});
|
|
12127
|
+
}
|
|
12128
|
+
return issues;
|
|
12129
|
+
};
|
|
12130
|
+
var validateWorkflowReferenceTriggerInput = (trigger) => typeof trigger.target_workflow_id === "string" && trigger.target_workflow_id.length > 0 ? [] : [{
|
|
12131
|
+
path: ["target_workflow_id"],
|
|
12132
|
+
message: "target_workflow_id is required for this enrollment trigger"
|
|
12133
|
+
}];
|
|
12134
|
+
var isSupportedWorkflowEnrollmentTrigger = (catalogId) => SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGER_MAP.has(catalogId);
|
|
12135
|
+
var getSupportedWorkflowEnrollmentTrigger = (catalogId) => {
|
|
12136
|
+
const trigger = SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGER_MAP.get(catalogId);
|
|
12137
|
+
if (!trigger) {
|
|
12138
|
+
throw new Error(`Unsupported workflow enrollment trigger '${catalogId}'`);
|
|
12139
|
+
}
|
|
12140
|
+
return trigger;
|
|
12141
|
+
};
|
|
12142
|
+
var getSupportedWorkflowEnrollmentTriggerByEventTypeId = (eventTypeId) => SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGERS_BY_EVENT_TYPE_ID.get(eventTypeId);
|
|
12143
|
+
var validateWorkflowEnrollmentTriggerInput = (trigger) => {
|
|
12144
|
+
const issues = [];
|
|
12145
|
+
if (typeof trigger.catalog_id !== "string" || trigger.catalog_id.length === 0) {
|
|
12146
|
+
issues.push({
|
|
12147
|
+
path: ["catalog_id"],
|
|
12148
|
+
message: "catalog_id is required"
|
|
12149
|
+
});
|
|
12150
|
+
return issues;
|
|
12151
|
+
}
|
|
12152
|
+
const definition = SUPPORTED_WORKFLOW_ENROLLMENT_TRIGGER_MAP.get(trigger.catalog_id);
|
|
12153
|
+
if (!definition) {
|
|
12154
|
+
issues.push({
|
|
12155
|
+
path: ["catalog_id"],
|
|
12156
|
+
message: `Unsupported workflow enrollment trigger '${trigger.catalog_id}'. Query workflow_enrollment_triggers for valid catalog_id values.`
|
|
12157
|
+
});
|
|
12158
|
+
return issues;
|
|
12159
|
+
}
|
|
12160
|
+
if (trigger.should_re_enroll !== void 0 && typeof trigger.should_re_enroll !== "boolean") {
|
|
12161
|
+
issues.push({
|
|
12162
|
+
path: ["should_re_enroll"],
|
|
12163
|
+
message: "should_re_enroll must be a boolean"
|
|
12164
|
+
});
|
|
12165
|
+
}
|
|
12166
|
+
const allowedFieldNames = new Set(buildAllowedFieldNames(definition));
|
|
12167
|
+
for (const key of Object.keys(trigger)) {
|
|
12168
|
+
if (allowedFieldNames.has(key)) continue;
|
|
12169
|
+
issues.push({
|
|
12170
|
+
path: [key],
|
|
12171
|
+
message: `Field '${key}' is not supported for enrollment trigger '${trigger.catalog_id}'`
|
|
12172
|
+
});
|
|
12173
|
+
}
|
|
12174
|
+
if (definition.template === "property_value_changed_named_property") {
|
|
12175
|
+
issues.push(...validatePropertyValueChangedTriggerInput(trigger));
|
|
12176
|
+
}
|
|
12177
|
+
if (definition.template === "workflow_reference_filter") {
|
|
12178
|
+
issues.push(...validateWorkflowReferenceTriggerInput(trigger));
|
|
12179
|
+
}
|
|
12180
|
+
return issues;
|
|
12181
|
+
};
|
|
12182
|
+
var validateWorkflowEnrollmentTriggerObjectType = (trigger, objectTypeId, operationIndex) => {
|
|
12183
|
+
if (!isSupportedWorkflowEnrollmentTrigger(trigger.catalog_id)) return [];
|
|
12184
|
+
const definition = getSupportedWorkflowEnrollmentTrigger(trigger.catalog_id);
|
|
12185
|
+
if (definition.requiredObjectTypeIds.length === 0) return [];
|
|
12186
|
+
if (definition.requiredObjectTypeIds.includes(objectTypeId)) return [];
|
|
12187
|
+
return [{
|
|
12188
|
+
severity: "error",
|
|
12189
|
+
operation_index: operationIndex,
|
|
12190
|
+
code: "WORKFLOW_ENROLLMENT_TRIGGER_OBJECT_TYPE_MISMATCH",
|
|
12191
|
+
message: `Enrollment trigger '${trigger.catalog_id}' only supports object types ${definition.requiredObjectTypeIds.join(", ")}, but workflow object_type_id is '${objectTypeId}'`
|
|
12192
|
+
}];
|
|
12193
|
+
};
|
|
12194
|
+
var WORKFLOW_EVENT_REFINEMENT_FILTERS = {
|
|
12195
|
+
"4-655002": [
|
|
12196
|
+
{ property: "hs_name", allowedOperationTypes: ["STRING"] },
|
|
12197
|
+
{ property: "hs_value", allowedOperationTypes: ["ALL_PROPERTY", "STRING"] }
|
|
12198
|
+
],
|
|
12199
|
+
"4-1466013": [
|
|
12200
|
+
{ property: "hs_flow_id", allowedOperationTypes: ["ENUMERATION"] }
|
|
12201
|
+
],
|
|
12202
|
+
"4-1466014": [
|
|
12203
|
+
{ property: "hs_flow_id", allowedOperationTypes: ["ENUMERATION"] }
|
|
12204
|
+
],
|
|
12205
|
+
"4-1753168": [
|
|
12206
|
+
{ property: "hs_flow_id", allowedOperationTypes: ["ENUMERATION"] }
|
|
12207
|
+
]
|
|
12208
|
+
};
|
|
12209
|
+
var buildEnrollmentCriteriaFromTrigger = (trigger) => {
|
|
12210
|
+
const definition = getSupportedWorkflowEnrollmentTrigger(trigger.catalog_id);
|
|
12211
|
+
const shouldReEnroll = trigger.should_re_enroll ?? false;
|
|
12212
|
+
if (definition.template === "simple_event_has_completed") {
|
|
12213
|
+
return buildBaseEventCriteria(definition.eventTypeId, shouldReEnroll);
|
|
12214
|
+
}
|
|
12215
|
+
if (definition.template === "property_value_changed_named_property") {
|
|
12216
|
+
return buildBaseEventCriteria(definition.eventTypeId, shouldReEnroll, [
|
|
12217
|
+
{
|
|
12218
|
+
filterType: "PROPERTY",
|
|
12219
|
+
property: "hs_name",
|
|
12220
|
+
operation: {
|
|
12221
|
+
operationType: "STRING",
|
|
12222
|
+
operator: "IS_EQUAL_TO",
|
|
12223
|
+
value: trigger.property_name,
|
|
12224
|
+
includeObjectsWithNoValueSet: false
|
|
12225
|
+
}
|
|
12226
|
+
},
|
|
12227
|
+
{
|
|
12228
|
+
filterType: "PROPERTY",
|
|
12229
|
+
property: "hs_value",
|
|
12230
|
+
operation: buildPropertyValueOperation(trigger)
|
|
12231
|
+
}
|
|
12232
|
+
]);
|
|
12233
|
+
}
|
|
12234
|
+
if (definition.template === "workflow_reference_filter") {
|
|
12235
|
+
return buildBaseEventCriteria(definition.eventTypeId, shouldReEnroll, [
|
|
12236
|
+
{
|
|
12237
|
+
filterType: "PROPERTY",
|
|
12238
|
+
property: "hs_flow_id",
|
|
12239
|
+
operation: {
|
|
12240
|
+
operationType: "ENUMERATION",
|
|
12241
|
+
operator: "IS_ANY_OF",
|
|
12242
|
+
values: [trigger.target_workflow_id],
|
|
12243
|
+
includeObjectsWithNoValueSet: false
|
|
12244
|
+
}
|
|
12245
|
+
}
|
|
12246
|
+
]);
|
|
12247
|
+
}
|
|
12248
|
+
throw new Error(`Unsupported workflow enrollment trigger template '${definition.template}'`);
|
|
12249
|
+
};
|
|
12250
|
+
|
|
12251
|
+
// ../shared/pure/workflow-operation-schema.ts
|
|
12252
|
+
var ENUMERATION_DISALLOWED_OPERATORS = /* @__PURE__ */ new Set([
|
|
12253
|
+
"IS_EQUAL_TO",
|
|
12254
|
+
"IS_NOT_EQUAL_TO"
|
|
12255
|
+
]);
|
|
12256
|
+
var REFINEMENT_PROPERTIES_BY_EVENT_TYPE_ID = {
|
|
12257
|
+
"4-655002": /* @__PURE__ */ new Set(["hs_name", "hs_value"])
|
|
12258
|
+
};
|
|
12259
|
+
var WorkflowConnectionSchema2 = z62.object({
|
|
12260
|
+
edgeType: z62.string().min(1),
|
|
12261
|
+
nextActionId: z62.string().min(1)
|
|
12262
|
+
}).passthrough();
|
|
12263
|
+
var WorkflowFilterOperationSchema = z62.object({
|
|
12264
|
+
operationType: z62.string().min(1, "operation.operationType is required for workflow property filters"),
|
|
12265
|
+
operator: z62.string().min(1)
|
|
12266
|
+
}).passthrough();
|
|
12267
|
+
var WorkflowFilterSchema = z62.object({
|
|
12268
|
+
filterType: z62.string().min(1),
|
|
12269
|
+
property: z62.string().optional(),
|
|
12270
|
+
operation: WorkflowFilterOperationSchema.optional()
|
|
12271
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
12272
|
+
if (value.filterType !== "PROPERTY") return;
|
|
12273
|
+
if (!value.property || value.property.length === 0) {
|
|
12274
|
+
ctx.addIssue({
|
|
12275
|
+
code: z62.ZodIssueCode.custom,
|
|
12276
|
+
message: "property filters require property",
|
|
12277
|
+
path: ["property"]
|
|
12278
|
+
});
|
|
12279
|
+
}
|
|
12280
|
+
if (!value.operation) {
|
|
12281
|
+
ctx.addIssue({
|
|
12282
|
+
code: z62.ZodIssueCode.custom,
|
|
12283
|
+
message: "property filters require operation",
|
|
12284
|
+
path: ["operation"]
|
|
12285
|
+
});
|
|
12286
|
+
return;
|
|
12287
|
+
}
|
|
12288
|
+
if (value.operation.operationType === "ENUMERATION" && ENUMERATION_DISALLOWED_OPERATORS.has(value.operation.operator)) {
|
|
12289
|
+
ctx.addIssue({
|
|
12290
|
+
code: z62.ZodIssueCode.custom,
|
|
12291
|
+
message: `operator '${value.operation.operator}' is not valid for ENUMERATION workflow filters. Use operators like IS_ANY_OF, IS_NONE_OF, IS_EXACTLY, or IS_NOT_EXACTLY.`,
|
|
12292
|
+
path: ["operation", "operator"]
|
|
12293
|
+
});
|
|
12294
|
+
}
|
|
12295
|
+
});
|
|
12296
|
+
var WorkflowBranchSchema = z62.object({
|
|
12297
|
+
connection: WorkflowConnectionSchema2.optional(),
|
|
12298
|
+
nextActionId: z62.string().min(1).optional()
|
|
12299
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
12300
|
+
if (value.connection || value.nextActionId) return;
|
|
12301
|
+
ctx.addIssue({
|
|
12302
|
+
code: z62.ZodIssueCode.custom,
|
|
12303
|
+
message: "workflow branches require connection.nextActionId or nextActionId",
|
|
12304
|
+
path: ["connection"]
|
|
12305
|
+
});
|
|
12306
|
+
});
|
|
12307
|
+
var WorkflowEnrollmentBranchSchema = z62.object({
|
|
12308
|
+
filterBranchType: z62.string().min(1),
|
|
12309
|
+
filterBranchOperator: z62.string().optional(),
|
|
12310
|
+
filterBranches: z62.array(z62.lazy(() => WorkflowEnrollmentBranchSchema)).default([]),
|
|
12311
|
+
filters: z62.array(WorkflowFilterSchema).default([]),
|
|
12312
|
+
eventTypeId: z62.string().optional(),
|
|
12313
|
+
operator: z62.string().optional(),
|
|
12314
|
+
objectTypeId: z62.string().optional(),
|
|
12315
|
+
associationTypeId: z62.number().optional(),
|
|
12316
|
+
associationCategory: z62.string().optional()
|
|
12317
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
12318
|
+
if (value.filterBranchType !== "UNIFIED_EVENTS") return;
|
|
12319
|
+
if (!value.eventTypeId || value.eventTypeId.length === 0) {
|
|
12320
|
+
ctx.addIssue({
|
|
12321
|
+
code: z62.ZodIssueCode.custom,
|
|
12322
|
+
message: "UNIFIED_EVENTS filter branches require eventTypeId (e.g. '4-655002' for property change). Query workflow_enrollment_triggers for valid event_type_id values.",
|
|
12323
|
+
path: ["eventTypeId"]
|
|
12324
|
+
});
|
|
12325
|
+
return;
|
|
12326
|
+
}
|
|
12327
|
+
if (/^0-\d+$/.test(value.eventTypeId)) {
|
|
12328
|
+
ctx.addIssue({
|
|
12329
|
+
code: z62.ZodIssueCode.custom,
|
|
12330
|
+
message: `eventTypeId '${value.eventTypeId}' looks like a CRM object type ID, not an event type ID. Event type IDs use '4-*' or '6-*' prefix (e.g. '4-655002' for property change). Query workflow_enrollment_triggers for valid event_type_id values.`,
|
|
12331
|
+
path: ["eventTypeId"]
|
|
12332
|
+
});
|
|
12333
|
+
}
|
|
12334
|
+
const allowedRefinementProperties = REFINEMENT_PROPERTIES_BY_EVENT_TYPE_ID[value.eventTypeId];
|
|
12335
|
+
if (!allowedRefinementProperties) return;
|
|
12336
|
+
for (const [index, filter] of value.filters.entries()) {
|
|
12337
|
+
if (!filter || typeof filter !== "object") continue;
|
|
12338
|
+
if (filter.filterType !== "PROPERTY") continue;
|
|
12339
|
+
if (typeof filter.property !== "string") continue;
|
|
12340
|
+
if (allowedRefinementProperties.has(filter.property)) continue;
|
|
12341
|
+
ctx.addIssue({
|
|
12342
|
+
code: z62.ZodIssueCode.custom,
|
|
12343
|
+
message: `eventTypeId '${value.eventTypeId}' only supports refinement filters on ${Array.from(allowedRefinementProperties).join(", ")}. Move generic properties like '${filter.property}' into LIST_BASED criteria or use enrollment_trigger.`,
|
|
12344
|
+
path: ["filters", index, "property"]
|
|
12345
|
+
});
|
|
12346
|
+
}
|
|
12347
|
+
});
|
|
12348
|
+
var EventBasedEnrollmentCriteriaSchema = z62.object({
|
|
12349
|
+
type: z62.literal("EVENT_BASED"),
|
|
12350
|
+
shouldReEnroll: z62.boolean(),
|
|
12351
|
+
eventFilterBranches: z62.array(WorkflowEnrollmentBranchSchema).min(1),
|
|
12352
|
+
listMembershipFilterBranches: z62.array(WorkflowEnrollmentBranchSchema).default([])
|
|
12353
|
+
}).passthrough();
|
|
12354
|
+
var ListBasedEnrollmentCriteriaSchema = z62.object({
|
|
12355
|
+
type: z62.literal("LIST_BASED"),
|
|
12356
|
+
shouldReEnroll: z62.boolean(),
|
|
12357
|
+
listFilterBranch: WorkflowEnrollmentBranchSchema,
|
|
12358
|
+
reEnrollmentTriggersFilterBranches: z62.array(WorkflowEnrollmentBranchSchema).default([])
|
|
12359
|
+
}).passthrough();
|
|
12360
|
+
var ManualEnrollmentCriteriaSchema = z62.object({
|
|
12361
|
+
type: z62.literal("MANUAL"),
|
|
12362
|
+
shouldReEnroll: z62.boolean()
|
|
12363
|
+
}).passthrough();
|
|
12364
|
+
var WorkflowEnrollmentCriteriaSchema = z62.union([
|
|
12365
|
+
EventBasedEnrollmentCriteriaSchema,
|
|
12366
|
+
ListBasedEnrollmentCriteriaSchema,
|
|
12367
|
+
ManualEnrollmentCriteriaSchema
|
|
12368
|
+
]);
|
|
12369
|
+
var WorkflowEnrollmentTriggerSchema = z62.object({
|
|
12370
|
+
catalog_id: z62.string().min(1),
|
|
12371
|
+
should_re_enroll: z62.boolean().optional()
|
|
12372
|
+
}).catchall(z62.unknown()).superRefine((value, ctx) => {
|
|
12373
|
+
const issues = validateWorkflowEnrollmentTriggerInput(value);
|
|
12374
|
+
for (const issue of issues) {
|
|
12375
|
+
ctx.addIssue({
|
|
12376
|
+
code: z62.ZodIssueCode.custom,
|
|
12377
|
+
message: issue.message,
|
|
12378
|
+
path: [...issue.path]
|
|
12379
|
+
});
|
|
12380
|
+
}
|
|
12381
|
+
});
|
|
12382
|
+
var WorkflowEnrollmentTriggerCatalogIdSchema = z62.string().refine(
|
|
12383
|
+
(catalogId) => isSupportedWorkflowEnrollmentTrigger(catalogId),
|
|
12384
|
+
"Unsupported workflow enrollment trigger catalog_id"
|
|
12385
|
+
);
|
|
12386
|
+
var BaseWorkflowActionSchema = z62.object({
|
|
12387
|
+
actionId: z62.string().min(1),
|
|
12388
|
+
type: z62.string().min(1),
|
|
12389
|
+
actionTypeId: z62.string().optional(),
|
|
12390
|
+
actionTypeVersion: z62.number().int().optional(),
|
|
12391
|
+
connection: WorkflowConnectionSchema2.optional(),
|
|
12392
|
+
fields: z62.record(z62.string(), z62.unknown()).optional(),
|
|
12393
|
+
staticBranches: z62.array(WorkflowBranchSchema).optional(),
|
|
12394
|
+
listBranches: z62.array(WorkflowBranchSchema).optional(),
|
|
12395
|
+
defaultBranch: WorkflowBranchSchema.optional(),
|
|
12396
|
+
defaultBranchName: z62.string().optional()
|
|
12397
|
+
}).passthrough().superRefine((value, ctx) => {
|
|
12398
|
+
if (value.type !== "BRANCH") return;
|
|
12399
|
+
const hasStaticBranches = (value.staticBranches?.length ?? 0) > 0;
|
|
12400
|
+
const hasListBranches = (value.listBranches?.length ?? 0) > 0;
|
|
12401
|
+
const hasDefaultBranch = value.defaultBranch != null;
|
|
12402
|
+
if (hasStaticBranches || hasListBranches || hasDefaultBranch) return;
|
|
12403
|
+
ctx.addIssue({
|
|
12404
|
+
code: z62.ZodIssueCode.custom,
|
|
12405
|
+
message: "BRANCH actions require at least one branch target",
|
|
12406
|
+
path: ["type"]
|
|
12407
|
+
});
|
|
12408
|
+
});
|
|
12409
|
+
var TypedWorkflowActionSchema = BaseWorkflowActionSchema.superRefine((value, ctx) => {
|
|
12410
|
+
const definitionKey = value.actionTypeId ?? value.type;
|
|
12411
|
+
if (!(definitionKey in SUPPORTED_WORKFLOW_ACTION_TYPES_BY_ID)) {
|
|
12412
|
+
ctx.addIssue({
|
|
12413
|
+
code: z62.ZodIssueCode.custom,
|
|
12414
|
+
message: definitionKey === "BRANCH" ? "Unsupported workflow action type 'BRANCH'. Use 'STATIC_BRANCH' for branching actions and query action_type_catalog for supported action shapes." : `Unsupported workflow action '${definitionKey}'. Query action_type_catalog for the supported action types exposed to the LLM.`,
|
|
12415
|
+
path: value.actionTypeId ? ["actionTypeId"] : ["type"]
|
|
12416
|
+
});
|
|
12417
|
+
return;
|
|
12418
|
+
}
|
|
12419
|
+
const typedSchema = WorkflowActionSchemasByDefinitionKey[definitionKey];
|
|
12420
|
+
if (!typedSchema) {
|
|
12421
|
+
ctx.addIssue({
|
|
12422
|
+
code: z62.ZodIssueCode.custom,
|
|
12423
|
+
message: `Missing typed workflow action schema for '${definitionKey}'.`,
|
|
12424
|
+
path: value.actionTypeId ? ["actionTypeId"] : ["type"]
|
|
12425
|
+
});
|
|
12426
|
+
return;
|
|
12427
|
+
}
|
|
12428
|
+
const result = typedSchema.safeParse(value);
|
|
12429
|
+
if (result.success) return;
|
|
12430
|
+
for (const issue of result.error.issues) {
|
|
12431
|
+
ctx.addIssue(issue);
|
|
12432
|
+
}
|
|
12433
|
+
});
|
|
12434
|
+
var WorkflowActionSchema = z62.union([
|
|
12435
|
+
TypedWorkflowActionSchema,
|
|
12436
|
+
StaticBranchWorkflowActionSchema
|
|
12437
|
+
]);
|
|
12438
|
+
|
|
12439
|
+
// ../shared/operations/create-workflow/meta.ts
|
|
12440
|
+
var CreateWorkflowOperationSchema = z63.object({
|
|
9636
12441
|
type: z63.literal("create_workflow"),
|
|
9637
12442
|
description: z63.string().min(1),
|
|
9638
12443
|
name: z63.string().min(1),
|
|
@@ -9641,6 +12446,7 @@ var CreateWorkflowOperationSchema = z63.object({
|
|
|
9641
12446
|
is_enabled: z63.boolean().optional().default(false),
|
|
9642
12447
|
actions: z63.array(WorkflowActionSchema).min(1),
|
|
9643
12448
|
enrollment_criteria: WorkflowEnrollmentCriteriaSchema.optional(),
|
|
12449
|
+
enrollment_trigger: WorkflowEnrollmentTriggerSchema.optional(),
|
|
9644
12450
|
suppression_list_ids: z63.array(z63.number()).optional(),
|
|
9645
12451
|
time_windows: z63.array(z63.record(z63.string(), z63.unknown())).optional(),
|
|
9646
12452
|
blocked_dates: z63.array(z63.record(z63.string(), z63.unknown())).optional()
|
|
@@ -9654,15 +12460,22 @@ var fields44 = [
|
|
|
9654
12460
|
name: "actions",
|
|
9655
12461
|
type: "array",
|
|
9656
12462
|
required: true,
|
|
9657
|
-
description: "Action graph array matching the HubSpot V4 API shape. Query action_type_catalog
|
|
12463
|
+
description: "Action graph array matching the HubSpot V4 API shape. Query action_type_catalog first and use field_schema_json plus recommended_create_examples_json to shape actions. Check resource_requirements_json before using resource-dependent fields like listId, flow_id, sequenceId, subscriptionId, inbox IDs, user IDs, or association label IDs. Read create_guidance_text for action-specific caveats. Use type 'SINGLE_CONNECTION' for linear steps or 'STATIC_BRANCH' for branching steps.",
|
|
9658
12464
|
itemShape: "{ actionId: string, actionTypeId?: string, actionTypeVersion?: number, type: 'SINGLE_CONNECTION'|'STATIC_BRANCH', connection?: { edgeType: string, nextActionId: string }, fields?: { [fieldName]: value }, inputValue?: object, staticBranches?: object[], listBranches?: object[], defaultBranch?: object, defaultBranchName?: string }"
|
|
9659
12465
|
},
|
|
12466
|
+
{
|
|
12467
|
+
name: "enrollment_trigger",
|
|
12468
|
+
type: "object",
|
|
12469
|
+
required: false,
|
|
12470
|
+
description: "Shortcut for supported single-trigger EVENT_BASED enrollments. Query workflow_enrollment_triggers first and only use rows where shortcut_kind = 'EVENT_TRIGGER_SHORTCUT'. Use catalog_id plus parameter_schema_json, official_filter_template, official_filters_example_json, and required_object_type_ids_json to shape the input. Use this instead of hand-authoring enrollment_criteria when a catalog shortcut row exists.",
|
|
12471
|
+
shape: "{ catalog_id: string, should_re_enroll?: boolean, ...template-specific parameters from parameter_schema_json such as property_name/property_value_operator/property_value or target_workflow_id }"
|
|
12472
|
+
},
|
|
9660
12473
|
{
|
|
9661
12474
|
name: "enrollment_criteria",
|
|
9662
12475
|
type: "object",
|
|
9663
12476
|
required: false,
|
|
9664
|
-
description: "Enrollment trigger config. Set type to 'EVENT_BASED' or '
|
|
9665
|
-
shape: "EVENT_BASED: { shouldReEnroll: boolean, eventFilterBranches: [{ filterBranchType: 'UNIFIED_EVENTS', filterBranchOperator?, eventTypeId: string (REQUIRED, from
|
|
12477
|
+
description: "Enrollment trigger config. Set type to 'EVENT_BASED', 'LIST_BASED', or 'MANUAL'. Prefer enrollment_trigger for supported single-trigger EVENT_BASED shortcuts. For EVENT_BASED, each eventFilterBranch needs a valid eventTypeId from the workflow_enrollment_triggers table (e.g. '4-655002' for property change, '4-1639801' for form submission). Do NOT use object type IDs like '0-3' as eventTypeId \u2014 those are CRM object types, not events. For LIST_BASED and MANUAL, query workflow_enrollment_triggers rows where shortcut_kind = 'CRITERIA_EXAMPLE' and reuse official_criteria_example_json, criteria_shape_json, usage_guidance, preferred_for_json, and avoid_for_json. IMPORTANT: Some event types (notably '4-655002' property value changed) require event-specific refinement filters embedded in the event branch. For '4-655002', only event refinement properties like hs_name and hs_value belong in that branch; generic record properties like pipeline, dealstage, amount, and closedate do NOT belong there. For 'when property X changes to Y' scenarios that also need record eligibility checks, prefer LIST_BASED enrollment with re-enrollment triggers on that property instead. PROPERTY filters must include operation.operationType. For enum properties use 'ENUMERATION' not 'MULTISTRING'. For LIST_BASED property existence filters like IS_KNOWN / IS_UNKNOWN, prefer operationType 'ALL_PROPERTY' instead of 'TIME_POINT', even for date properties. ENUMERATION filters do not support operators like 'IS_EQUAL_TO' or 'IS_NOT_EQUAL_TO'; use enum operators like 'IS_ANY_OF', 'IS_NONE_OF', 'IS_EXACTLY', or 'IS_NOT_EXACTLY'. Query synced workflows for structural examples.",
|
|
12478
|
+
shape: "EVENT_BASED: { shouldReEnroll: boolean, eventFilterBranches: [{ filterBranchType: 'UNIFIED_EVENTS', filterBranchOperator?, eventTypeId: string (REQUIRED, from workflow_enrollment_triggers.event_type_id), operator?, filters: [{ filterType: 'PROPERTY', property: string, operation: { operationType: string, operator: string } }], filterBranches: [...] }], listMembershipFilterBranches?: [...] } | LIST_BASED: { shouldReEnroll: boolean, listFilterBranch: { filterBranchType, filters: [...], filterBranches: [...] }, reEnrollmentTriggersFilterBranches?: [...], unEnrollObjectsNotMeetingCriteria?: boolean } | MANUAL: { shouldReEnroll: boolean }"
|
|
9666
12479
|
},
|
|
9667
12480
|
{ name: "suppression_list_ids", type: "array", required: false, description: "Array of list IDs to suppress from enrollment" },
|
|
9668
12481
|
{ name: "time_windows", type: "array", required: false, description: "Execution time windows" },
|
|
@@ -9673,7 +12486,7 @@ var createWorkflowMeta = {
|
|
|
9673
12486
|
category: "create",
|
|
9674
12487
|
executionMode: "hubspot",
|
|
9675
12488
|
summary: "Create a HubSpot workflow with actions and enrollment criteria",
|
|
9676
|
-
description: "Create a new workflow using the HubSpot Automation V4 API. Use CONTACT_FLOW for contact-based workflows, PLATFORM_FLOW for all other types (deals, tickets, custom objects).
|
|
12489
|
+
description: "Create a new workflow using the HubSpot Automation V4 API. Use CONTACT_FLOW for contact-based workflows, PLATFORM_FLOW for all other types (deals, tickets, custom objects). Query action_type_catalog before constructing actions: field_schema_json documents required fields, recommended_create_examples_json provides create-safe templates, resource_requirements_json shows which IDs must be resolved first, and create_guidance_text captures empirical action-specific caveats. Query workflow_enrollment_triggers before constructing enrollment logic: shortcut_kind = 'EVENT_TRIGGER_SHORTCUT' rows support enrollment_trigger, while shortcut_kind = 'CRITERIA_EXAMPLE' rows provide LIST_BASED and MANUAL enrollment_criteria examples via official_criteria_example_json, criteria_shape_json, and usage_guidance.",
|
|
9677
12490
|
fields: fields44,
|
|
9678
12491
|
example: {
|
|
9679
12492
|
fields: {
|
|
@@ -9695,45 +12508,27 @@ var createWorkflowMeta = {
|
|
|
9695
12508
|
actionTypeVersion: 0,
|
|
9696
12509
|
actionTypeId: "0-3",
|
|
9697
12510
|
type: "SINGLE_CONNECTION",
|
|
9698
|
-
fields: {
|
|
9699
|
-
|
|
9700
|
-
|
|
9701
|
-
|
|
9702
|
-
|
|
9703
|
-
|
|
9704
|
-
|
|
9705
|
-
|
|
9706
|
-
|
|
9707
|
-
|
|
9708
|
-
|
|
9709
|
-
|
|
9710
|
-
filterBranchType: "AND",
|
|
9711
|
-
filterBranchOperator: "AND",
|
|
9712
|
-
filters: [
|
|
9713
|
-
{
|
|
9714
|
-
filterType: "PROPERTY",
|
|
9715
|
-
property: "lifecyclestage",
|
|
9716
|
-
operation: {
|
|
9717
|
-
operationType: "ENUMERATION",
|
|
9718
|
-
operator: "IS_ANY_OF",
|
|
9719
|
-
values: ["customer"]
|
|
9720
|
-
}
|
|
12511
|
+
fields: {
|
|
12512
|
+
task_type: "TODO",
|
|
12513
|
+
subject: "Welcome follow-up task",
|
|
12514
|
+
body: "<p>Follow up with {{ enrolled_object.email }}</p>",
|
|
12515
|
+
associations: [
|
|
12516
|
+
{
|
|
12517
|
+
target: {
|
|
12518
|
+
associationCategory: "HUBSPOT_DEFINED",
|
|
12519
|
+
associationTypeId: 204
|
|
12520
|
+
},
|
|
12521
|
+
value: {
|
|
12522
|
+
type: "ENROLLED_OBJECT"
|
|
9721
12523
|
}
|
|
9722
|
-
|
|
9723
|
-
|
|
9724
|
-
|
|
9725
|
-
]
|
|
9726
|
-
},
|
|
9727
|
-
reEnrollmentTriggersFilterBranches: [
|
|
9728
|
-
{
|
|
9729
|
-
filterBranchType: "UNIFIED_EVENTS",
|
|
9730
|
-
filterBranchOperator: "AND",
|
|
9731
|
-
eventTypeId: "4-655002",
|
|
9732
|
-
operator: "HAS_COMPLETED",
|
|
9733
|
-
filters: [],
|
|
9734
|
-
filterBranches: []
|
|
12524
|
+
}
|
|
12525
|
+
],
|
|
12526
|
+
use_explicit_associations: "true"
|
|
9735
12527
|
}
|
|
9736
|
-
|
|
12528
|
+
}
|
|
12529
|
+
],
|
|
12530
|
+
enrollment_trigger: {
|
|
12531
|
+
catalog_id: "e_form_submission_v2"
|
|
9737
12532
|
}
|
|
9738
12533
|
}
|
|
9739
12534
|
},
|
|
@@ -9756,6 +12551,7 @@ var createWorkflowMeta = {
|
|
|
9756
12551
|
{ label: "Actions", value: String(op.actions.length) },
|
|
9757
12552
|
{ label: "Enabled", value: String(op.is_enabled ?? false) }
|
|
9758
12553
|
];
|
|
12554
|
+
if (op.enrollment_trigger) rows.push({ label: "Enrollment Trigger", value: op.enrollment_trigger.catalog_id });
|
|
9759
12555
|
return { rows };
|
|
9760
12556
|
}
|
|
9761
12557
|
};
|
|
@@ -9769,6 +12565,7 @@ var UpdateWorkflowOperationSchema = z64.object({
|
|
|
9769
12565
|
name: z64.string().optional(),
|
|
9770
12566
|
actions: z64.array(WorkflowActionSchema).optional(),
|
|
9771
12567
|
enrollment_criteria: WorkflowEnrollmentCriteriaSchema.optional(),
|
|
12568
|
+
enrollment_trigger: WorkflowEnrollmentTriggerSchema.optional(),
|
|
9772
12569
|
suppression_list_ids: z64.array(z64.number()).optional(),
|
|
9773
12570
|
time_windows: z64.array(z64.record(z64.string(), z64.unknown())).optional(),
|
|
9774
12571
|
blocked_dates: z64.array(z64.record(z64.string(), z64.unknown())).optional()
|
|
@@ -9777,7 +12574,14 @@ var fields45 = [
|
|
|
9777
12574
|
{ name: "workflow_id", type: "string", required: true, description: "ID of the workflow to update (query workflows table)" },
|
|
9778
12575
|
{ name: "name", type: "string", required: false, description: "New workflow name" },
|
|
9779
12576
|
{ name: "actions", type: "array", required: false, description: "Replacement action graph (replaces ALL existing actions). Use HubSpot V4 API shape. Query action_type_catalog for supported types, required fields, and example_actions_json." },
|
|
9780
|
-
{
|
|
12577
|
+
{
|
|
12578
|
+
name: "enrollment_trigger",
|
|
12579
|
+
type: "object",
|
|
12580
|
+
required: false,
|
|
12581
|
+
description: "Replacement single-trigger shortcut. Query workflow_enrollment_triggers first and only use rows where shortcut_kind = 'EVENT_TRIGGER_SHORTCUT'. Then use catalog_id plus parameter_schema_json, official_filter_template, official_filters_example_json, and required_object_type_ids_json.",
|
|
12582
|
+
shape: "{ catalog_id: string, should_re_enroll?: boolean, ...template-specific parameters from parameter_schema_json such as property_name/property_value_operator/property_value or target_workflow_id }"
|
|
12583
|
+
},
|
|
12584
|
+
{ name: "enrollment_criteria", type: "object", required: false, description: "Replacement enrollment criteria (replaces existing). Set type to EVENT_BASED, LIST_BASED, or MANUAL. Prefer enrollment_trigger for supported single-trigger EVENT_BASED shortcuts. For EVENT_BASED, each UNIFIED_EVENTS branch requires a valid eventTypeId from workflow_enrollment_triggers.event_type_id (e.g. '4-655002' for property change). Do NOT use object type IDs like '0-3' as eventTypeId. For LIST_BASED and MANUAL, query workflow_enrollment_triggers rows where shortcut_kind = 'CRITERIA_EXAMPLE' and reuse official_criteria_example_json, criteria_shape_json, and usage_guidance. IMPORTANT: Event types like '4-655002' require event-specific refinement filters only. In MCP this means hs_name and hs_value inside the event branch; generic properties like pipeline, dealstage, amount, or closedate do not belong there. ENUMERATION filters also do not support operators like IS_EQUAL_TO or IS_NOT_EQUAL_TO; use IS_ANY_OF, IS_NONE_OF, IS_EXACTLY, or IS_NOT_EXACTLY instead. Prefer LIST_BASED enrollment with re-enrollment triggers for property-change scenarios that also need record eligibility filters." },
|
|
9781
12585
|
{ name: "suppression_list_ids", type: "array", required: false, description: "Replacement suppression list IDs" },
|
|
9782
12586
|
{ name: "time_windows", type: "array", required: false, description: "Replacement execution time windows" },
|
|
9783
12587
|
{ name: "blocked_dates", type: "array", required: false, description: "Replacement blocked date ranges" }
|
|
@@ -9809,6 +12613,7 @@ var updateWorkflowMeta = {
|
|
|
9809
12613
|
];
|
|
9810
12614
|
if (op.name) rows.push({ label: "New Name", value: op.name });
|
|
9811
12615
|
if (op.actions) rows.push({ label: "Actions", value: `${op.actions.length} (full replacement)` });
|
|
12616
|
+
if (op.enrollment_trigger) rows.push({ label: "Enrollment Trigger", value: op.enrollment_trigger.catalog_id });
|
|
9812
12617
|
if (op.enrollment_criteria) rows.push({ label: "Enrollment Criteria", value: "Updated" });
|
|
9813
12618
|
return { rows };
|
|
9814
12619
|
}
|
|
@@ -14186,10 +16991,15 @@ var OPERATION_TYPE_FOR_PROPERTY_TYPE2 = {
|
|
|
14186
16991
|
date: "TIME_POINT",
|
|
14187
16992
|
datetime: "TIME_POINT"
|
|
14188
16993
|
};
|
|
16994
|
+
var ENUMERATION_INVALID_OPERATORS = /* @__PURE__ */ new Set([
|
|
16995
|
+
"IS_EQUAL_TO",
|
|
16996
|
+
"IS_NOT_EQUAL_TO"
|
|
16997
|
+
]);
|
|
14189
16998
|
var isCompatibleEnrollmentOperationType = (operationType, expectedOperationType, propertyType) => operationType === expectedOperationType || operationType === "ALL_PROPERTY" || operationType === "TIME_RANGED" && (propertyType === "date" || propertyType === "datetime");
|
|
14190
|
-
var collectPropertyFiltersFromBranches = (branches, parentObjectTypeId) => {
|
|
16999
|
+
var collectPropertyFiltersFromBranches = (branches, parentObjectTypeId, parentEventTypeId) => {
|
|
14191
17000
|
const refs = [];
|
|
14192
17001
|
for (const branch of branches) {
|
|
17002
|
+
const branchEventTypeId = typeof branch.eventTypeId === "string" ? branch.eventTypeId : parentEventTypeId;
|
|
14193
17003
|
const contextObjectTypeId = branch.filterBranchType === "ASSOCIATION" && typeof branch.objectTypeId === "string" ? branch.objectTypeId : parentObjectTypeId;
|
|
14194
17004
|
const filters = asBranchArray(branch.filters);
|
|
14195
17005
|
for (const filter of filters) {
|
|
@@ -14199,12 +17009,14 @@ var collectPropertyFiltersFromBranches = (branches, parentObjectTypeId) => {
|
|
|
14199
17009
|
refs.push({
|
|
14200
17010
|
property: filter.property,
|
|
14201
17011
|
operationType: operation.operationType,
|
|
14202
|
-
|
|
17012
|
+
operator: typeof operation.operator === "string" ? operation.operator : void 0,
|
|
17013
|
+
objectTypeId: contextObjectTypeId,
|
|
17014
|
+
eventTypeId: branchEventTypeId
|
|
14203
17015
|
});
|
|
14204
17016
|
}
|
|
14205
17017
|
const nestedBranches = asBranchArray(branch.filterBranches);
|
|
14206
17018
|
if (nestedBranches.length > 0) {
|
|
14207
|
-
refs.push(...collectPropertyFiltersFromBranches(nestedBranches, contextObjectTypeId));
|
|
17019
|
+
refs.push(...collectPropertyFiltersFromBranches(nestedBranches, contextObjectTypeId, branchEventTypeId));
|
|
14208
17020
|
}
|
|
14209
17021
|
}
|
|
14210
17022
|
return refs;
|
|
@@ -14250,6 +17062,29 @@ var validateWorkflowEnrollmentMetadata = (params) => {
|
|
|
14250
17062
|
});
|
|
14251
17063
|
}
|
|
14252
17064
|
for (const filterRef of filterRefs) {
|
|
17065
|
+
const refinementSpecs = filterRef.eventTypeId ? WORKFLOW_EVENT_REFINEMENT_FILTERS[filterRef.eventTypeId] : void 0;
|
|
17066
|
+
const refinementSpec = refinementSpecs?.find((entry) => entry.property === filterRef.property);
|
|
17067
|
+
if (refinementSpec) {
|
|
17068
|
+
if (refinementSpec.allowedOperationTypes.includes(filterRef.operationType)) {
|
|
17069
|
+
continue;
|
|
17070
|
+
}
|
|
17071
|
+
add({
|
|
17072
|
+
severity: "error",
|
|
17073
|
+
operation_index: operationIndex,
|
|
17074
|
+
code: "INVALID_ENROLLMENT_FILTER_OPERATION_TYPE",
|
|
17075
|
+
message: `Workflow enrollment refinement filter '${filterRef.property}' for eventTypeId '${filterRef.eventTypeId}' uses operationType '${filterRef.operationType}'. Use one of: ${refinementSpec.allowedOperationTypes.join(", ")}.`
|
|
17076
|
+
});
|
|
17077
|
+
continue;
|
|
17078
|
+
}
|
|
17079
|
+
if (filterRef.eventTypeId === "4-655002") {
|
|
17080
|
+
add({
|
|
17081
|
+
severity: "error",
|
|
17082
|
+
operation_index: operationIndex,
|
|
17083
|
+
code: "INVALID_ENROLLMENT_REFINEMENT_FILTER",
|
|
17084
|
+
message: `eventTypeId '4-655002' only supports event refinement filters like hs_name and hs_value. Property '${filterRef.property}' should not appear in that event branch; move it into LIST_BASED criteria or use enrollment_trigger.`
|
|
17085
|
+
});
|
|
17086
|
+
continue;
|
|
17087
|
+
}
|
|
14253
17088
|
if (!enabledObjectTypeIds.has(filterRef.objectTypeId)) continue;
|
|
14254
17089
|
const propertyDefinitions = propertyDefinitionsByObjectType.get(filterRef.objectTypeId);
|
|
14255
17090
|
const propertyDefinition = propertyDefinitions?.get(filterRef.property);
|
|
@@ -14264,7 +17099,24 @@ var validateWorkflowEnrollmentMetadata = (params) => {
|
|
|
14264
17099
|
}
|
|
14265
17100
|
const expectedOperationType = OPERATION_TYPE_FOR_PROPERTY_TYPE2[propertyDefinition.type];
|
|
14266
17101
|
if (!expectedOperationType) continue;
|
|
17102
|
+
if (filterRef.eventTypeId === void 0 && (filterRef.operator === "IS_KNOWN" || filterRef.operator === "IS_UNKNOWN") && filterRef.operationType === "TIME_POINT" && (propertyDefinition.type === "date" || propertyDefinition.type === "datetime")) {
|
|
17103
|
+
add({
|
|
17104
|
+
severity: "error",
|
|
17105
|
+
operation_index: operationIndex,
|
|
17106
|
+
code: "INVALID_ENROLLMENT_FILTER_OPERATION_TYPE",
|
|
17107
|
+
message: `Workflow enrollment filter property '${filterRef.property}' uses operator '${filterRef.operator}' with operationType 'TIME_POINT'. For LIST_BASED property existence checks, use operationType 'ALL_PROPERTY' instead.`
|
|
17108
|
+
});
|
|
17109
|
+
continue;
|
|
17110
|
+
}
|
|
14267
17111
|
if (isCompatibleEnrollmentOperationType(filterRef.operationType, expectedOperationType, propertyDefinition.type)) {
|
|
17112
|
+
if (propertyDefinition.type === "enumeration" && filterRef.operator !== void 0 && ENUMERATION_INVALID_OPERATORS.has(filterRef.operator)) {
|
|
17113
|
+
add({
|
|
17114
|
+
severity: "error",
|
|
17115
|
+
operation_index: operationIndex,
|
|
17116
|
+
code: "INVALID_ENROLLMENT_FILTER_OPERATOR",
|
|
17117
|
+
message: `Workflow enrollment filter property '${filterRef.property}' has type 'enumeration' but uses operator '${filterRef.operator}'. Use enumeration operators like IS_ANY_OF, IS_NONE_OF, IS_EXACTLY, or IS_NOT_EXACTLY.`
|
|
17118
|
+
});
|
|
17119
|
+
}
|
|
14268
17120
|
continue;
|
|
14269
17121
|
}
|
|
14270
17122
|
add({
|
|
@@ -14387,6 +17239,42 @@ var validateDelayUntilDateAction = (params) => {
|
|
|
14387
17239
|
}
|
|
14388
17240
|
return issues;
|
|
14389
17241
|
};
|
|
17242
|
+
var validateDelayUntilDateBranching = (params) => {
|
|
17243
|
+
const { actions, operationIndex } = params;
|
|
17244
|
+
const issues = [];
|
|
17245
|
+
const actionsById = new Map(actions.flatMap(
|
|
17246
|
+
(action) => typeof action.actionId === "string" && action.actionId.length > 0 ? [[action.actionId, action]] : []
|
|
17247
|
+
));
|
|
17248
|
+
for (const action of actions) {
|
|
17249
|
+
if (action.actionTypeId !== "0-35") continue;
|
|
17250
|
+
const delayActionId = action.actionId ?? "<missing>";
|
|
17251
|
+
const branchActionId = action.connection?.nextActionId;
|
|
17252
|
+
if (!branchActionId) continue;
|
|
17253
|
+
const branchAction = actionsById.get(branchActionId);
|
|
17254
|
+
if (!branchAction || branchAction.type !== "STATIC_BRANCH") {
|
|
17255
|
+
issues.push({
|
|
17256
|
+
severity: "error",
|
|
17257
|
+
operation_index: operationIndex,
|
|
17258
|
+
code: "WORKFLOW_DELAY_UNTIL_DATE_BRANCH_REQUIRED",
|
|
17259
|
+
message: `Action '${delayActionId}' (0-35 delay until date) must flow into a STATIC_BRANCH that reads hs_delay_status before continuing. Do not connect the delay action directly to the next business action.`
|
|
17260
|
+
});
|
|
17261
|
+
continue;
|
|
17262
|
+
}
|
|
17263
|
+
const inputValue = branchAction.inputValue;
|
|
17264
|
+
const hasExpectedInputValue = inputValue?.actionId === action.actionId && inputValue?.dataKey === "hs_delay_status" && inputValue?.type === "FIELD_DATA";
|
|
17265
|
+
const hasDateMetAsPlannedBranch = Array.isArray(branchAction.staticBranches) && branchAction.staticBranches.some(
|
|
17266
|
+
(branch) => isRecord(branch) && branch.branchValue === "DATE_MET_AS_PLANNED" && typeof getNestedNextActionId(branch) === "string"
|
|
17267
|
+
);
|
|
17268
|
+
if (hasExpectedInputValue && hasDateMetAsPlannedBranch) continue;
|
|
17269
|
+
issues.push({
|
|
17270
|
+
severity: "error",
|
|
17271
|
+
operation_index: operationIndex,
|
|
17272
|
+
code: "WORKFLOW_DELAY_UNTIL_DATE_BRANCH_REQUIRED",
|
|
17273
|
+
message: `Action '${delayActionId}' (0-35 delay until date) must be followed by a STATIC_BRANCH with inputValue { actionId: '${delayActionId}', dataKey: 'hs_delay_status', type: 'FIELD_DATA' } and a DATE_MET_AS_PLANNED branch connection.`
|
|
17274
|
+
});
|
|
17275
|
+
}
|
|
17276
|
+
return issues;
|
|
17277
|
+
};
|
|
14390
17278
|
var validateRotateToOwnerAction = (params) => {
|
|
14391
17279
|
const { action, actionId, operationIndex } = params;
|
|
14392
17280
|
if (action.actionTypeId !== "0-11") return [];
|
|
@@ -14413,10 +17301,36 @@ var validateRotateToOwnerAction = (params) => {
|
|
|
14413
17301
|
}
|
|
14414
17302
|
return issues;
|
|
14415
17303
|
};
|
|
17304
|
+
var validateCreateTaskAssociations = (params) => {
|
|
17305
|
+
const { action, actionId, operationIndex, context } = params;
|
|
17306
|
+
if (action.actionTypeId !== "0-3") return [];
|
|
17307
|
+
if (context?.workflowType !== "CONTACT_FLOW") return [];
|
|
17308
|
+
const fields48 = action.fields;
|
|
17309
|
+
if (!fields48) return [];
|
|
17310
|
+
const issues = [];
|
|
17311
|
+
const useExplicitAssociations = fields48.use_explicit_associations;
|
|
17312
|
+
const associations = fields48.associations;
|
|
17313
|
+
const hasValidEnrolledContactAssociation = Array.isArray(associations) && associations.some((entry) => {
|
|
17314
|
+
if (!isRecord(entry)) return false;
|
|
17315
|
+
const target = isRecord(entry.target) ? entry.target : void 0;
|
|
17316
|
+
const value = isRecord(entry.value) ? entry.value : void 0;
|
|
17317
|
+
return target?.associationCategory === "HUBSPOT_DEFINED" && target?.associationTypeId === 204 && value?.type === "ENROLLED_OBJECT";
|
|
17318
|
+
});
|
|
17319
|
+
if (useExplicitAssociations !== "true" || !hasValidEnrolledContactAssociation) {
|
|
17320
|
+
issues.push({
|
|
17321
|
+
severity: "error",
|
|
17322
|
+
operation_index: operationIndex,
|
|
17323
|
+
code: "WORKFLOW_TASK_CONTACT_ASSOCIATION_REQUIRED",
|
|
17324
|
+
message: `Action '${actionId || "<missing>"}' (0-3 create task) in CONTACT_FLOW must include use_explicit_associations: 'true' and an associations entry targeting the enrolled contact via associationTypeId 204 with value.type 'ENROLLED_OBJECT'. HubSpot otherwise returns HTTP 500.`
|
|
17325
|
+
});
|
|
17326
|
+
}
|
|
17327
|
+
return issues;
|
|
17328
|
+
};
|
|
14416
17329
|
var validateWorkflowActions = (params) => {
|
|
14417
|
-
const { actions, operationIndex } = params;
|
|
17330
|
+
const { actions, operationIndex, workflowType, objectTypeId } = params;
|
|
14418
17331
|
const issues = [];
|
|
14419
17332
|
const actionIds = /* @__PURE__ */ new Set();
|
|
17333
|
+
const context = { workflowType, objectTypeId };
|
|
14420
17334
|
for (const action of actions) {
|
|
14421
17335
|
const actionId = action.actionId?.trim() ?? "";
|
|
14422
17336
|
if (actionId.length === 0) {
|
|
@@ -14505,7 +17419,9 @@ var validateWorkflowActions = (params) => {
|
|
|
14505
17419
|
issues.push(...validateStaticValueType({ action, actionId, operationIndex }));
|
|
14506
17420
|
issues.push(...validateDelayUntilDateAction({ action, actionId, operationIndex }));
|
|
14507
17421
|
issues.push(...validateRotateToOwnerAction({ action, actionId, operationIndex }));
|
|
17422
|
+
issues.push(...validateCreateTaskAssociations({ action, actionId, operationIndex, context }));
|
|
14508
17423
|
}
|
|
17424
|
+
issues.push(...validateDelayUntilDateBranching({ actions, operationIndex }));
|
|
14509
17425
|
for (const action of actions) {
|
|
14510
17426
|
for (const nextActionId of collectActionNextActionIds(action)) {
|
|
14511
17427
|
if (actionIds.has(nextActionId)) continue;
|
|
@@ -14630,59 +17546,8 @@ var validateWorkflowAssociatedPropertyActionMetadata = (params) => {
|
|
|
14630
17546
|
return issues;
|
|
14631
17547
|
};
|
|
14632
17548
|
|
|
14633
|
-
// ../shared/pure/workflow-event-types.ts
|
|
14634
|
-
var WORKFLOW_EVENT_TYPES = {
|
|
14635
|
-
"4-655002": { eventTypeId: "4-655002", name: "Property value changed", description: "Triggers when a property value is updated on a CRM record", requiresRefinementFilters: true, refinementNote: "Requires event-specific refinement filters (e.g. hs_property_name, hs_property_value) embedded in the event filter branch to specify which property and value to trigger on. Standard PROPERTY filters are NOT sufficient. Prefer LIST_BASED enrollment with re-enrollment triggers for 'property changed to X' scenarios." },
|
|
14636
|
-
"4-1463224": { eventTypeId: "4-1463224", name: "CRM Object created", description: "Triggers when a new object is created in the CRM" },
|
|
14637
|
-
"4-1553675": { eventTypeId: "4-1553675", name: "Ad interaction", description: "Triggers when an ad is interacted with" },
|
|
14638
|
-
"4-1741072": { eventTypeId: "4-1741072", name: "Call ended", description: "Triggers when a call has ended" },
|
|
14639
|
-
"4-1733817": { eventTypeId: "4-1733817", name: "Call started", description: "Triggers when a call is initiated" },
|
|
14640
|
-
"4-1814177": { eventTypeId: "4-1814177", name: "Playbook log", description: "Triggers when a playbook is logged on a record" },
|
|
14641
|
-
"6-2117363": { eventTypeId: "6-2117363", name: "Custom event occurs", description: "Triggers when a custom event occurs with an existing contact record" },
|
|
14642
|
-
"4-666288": { eventTypeId: "4-666288", name: "Clicked link in email", description: "Triggers when a contact clicks a link in a marketing email" },
|
|
14643
|
-
"4-5470331": { eventTypeId: "4-5470331", name: "Email bounced", description: "Triggers when an email bounces" },
|
|
14644
|
-
"4-665536": { eventTypeId: "4-665536", name: "Email delivered", description: "Triggers when an email is delivered to a contact" },
|
|
14645
|
-
"4-667638": { eventTypeId: "4-667638", name: "Email sent", description: "Triggers when an email is sent to a contact" },
|
|
14646
|
-
"4-666440": { eventTypeId: "4-666440", name: "Opened email", description: "Triggers when a contact opens a marketing email" },
|
|
14647
|
-
"4-665538": { eventTypeId: "4-665538", name: "Replied to email", description: "Triggers when a contact replies to a marketing email" },
|
|
14648
|
-
"4-666289": { eventTypeId: "4-666289", name: "Updated email subscription status", description: "Triggers when a contact updates their email subscription status" },
|
|
14649
|
-
"4-1639799": { eventTypeId: "4-1639799", name: "Form interaction", description: "Triggers when a contact interacts with a form field" },
|
|
14650
|
-
"4-1639801": { eventTypeId: "4-1639801", name: "Form submission", description: "Triggers when a form is submitted" },
|
|
14651
|
-
"4-1639797": { eventTypeId: "4-1639797", name: "Form view", description: "Triggers when a contact views a form" },
|
|
14652
|
-
"4-1720599": { eventTypeId: "4-1720599", name: "Meeting booked", description: "Triggers when a contact books a meeting" },
|
|
14653
|
-
"4-1724222": { eventTypeId: "4-1724222", name: "Meeting outcome change", description: "Triggers when a meeting outcome is changed" },
|
|
14654
|
-
"4-1522438": { eventTypeId: "4-1522438", name: "Contact finished viewing a document", description: "Triggers when a contact finishes viewing a sales document" },
|
|
14655
|
-
"4-1522436": { eventTypeId: "4-1522436", name: "Contact viewed a document", description: "Triggers when a contact views a sales document" },
|
|
14656
|
-
"4-1522437": { eventTypeId: "4-1522437", name: "Document shared with contact", description: "Triggers when a sales document is shared with a contact" },
|
|
14657
|
-
"4-675773": { eventTypeId: "4-675773", name: "Contact booked a meeting through a sequence", description: "Triggers when a contact books a meeting through a sequence" },
|
|
14658
|
-
"4-675777": { eventTypeId: "4-675777", name: "Contact enrolled in a sequence", description: "Triggers when a contact is enrolled in a sequence" },
|
|
14659
|
-
"4-675778": { eventTypeId: "4-675778", name: "Contact finished sequence", description: "Triggers when a contact finishes a sequence" },
|
|
14660
|
-
"4-675776": { eventTypeId: "4-675776", name: "Contact unenrolled from sequence", description: "Triggers when a contact is unenrolled from a sequence" },
|
|
14661
|
-
"4-1497402": { eventTypeId: "4-1497402", name: "Contact unenrolled from sequence via workflow", description: "Triggers when a contact is unenrolled from a sequence via a workflow" },
|
|
14662
|
-
"4-675775": { eventTypeId: "4-675775", name: "Contact unenrolled from sequence manually", description: "Triggers when a contact is manually unenrolled from a sequence" },
|
|
14663
|
-
"4-1752910": { eventTypeId: "4-1752910", name: "Delivering SMS failed", description: "Triggers when an SMS message was not delivered" },
|
|
14664
|
-
"4-1722276": { eventTypeId: "4-1722276", name: "Link in SMS clicked", description: "Triggers when a contact clicks a link in an SMS" },
|
|
14665
|
-
"4-1752904": { eventTypeId: "4-1752904", name: "Sending SMS failed", description: "Triggers when an SMS message was not sent" },
|
|
14666
|
-
"4-1721168": { eventTypeId: "4-1721168", name: "SMS delivered", description: "Triggers when an SMS message is delivered" },
|
|
14667
|
-
"4-1725149": { eventTypeId: "4-1725149", name: "SMS dropped", description: "Triggers when an SMS message is dropped" },
|
|
14668
|
-
"4-1719453": { eventTypeId: "4-1719453", name: "SMS sent", description: "Triggers when an SMS message is sent" },
|
|
14669
|
-
"4-1555805": { eventTypeId: "4-1555805", name: "CTA click", description: "Triggers when a contact clicks a CTA or Web interactive" },
|
|
14670
|
-
"4-1555804": { eventTypeId: "4-1555804", name: "CTA viewed", description: "Triggers when a contact views a CTA or Web interactive" },
|
|
14671
|
-
"4-100216": { eventTypeId: "4-100216", name: "CTA click (legacy)", description: "Triggers when a contact clicks a CTA (legacy)" },
|
|
14672
|
-
"4-100215": { eventTypeId: "4-100215", name: "CTA view (legacy)", description: "Triggers when a contact views a CTA (legacy)" },
|
|
14673
|
-
"4-96000": { eventTypeId: "4-96000", name: "Page visited", description: "Triggers when a contact views a landing page or website page" },
|
|
14674
|
-
"4-675783": { eventTypeId: "4-675783", name: "Website or Email Media Play", description: "Triggers when a contact plays embedded media" },
|
|
14675
|
-
"4-1753168": { eventTypeId: "4-1753168", name: "Achieved workflow goal", description: "Triggers when a contact meets a workflow goal" },
|
|
14676
|
-
"4-1466013": { eventTypeId: "4-1466013", name: "Enrolled in workflow", description: "Triggers when an object is enrolled in a workflow" },
|
|
14677
|
-
"4-1466014": { eventTypeId: "4-1466014", name: "Unenrolled from workflow", description: "Triggers when an object is unenrolled from a workflow" }
|
|
14678
|
-
};
|
|
14679
|
-
var KNOWN_EVENT_TYPE_IDS = new Set(Object.keys(WORKFLOW_EVENT_TYPES));
|
|
14680
|
-
var isValidEventTypeIdFormat = (id) => /^[46]-\d+$/.test(id);
|
|
14681
|
-
var EVENT_TYPES_REQUIRING_REFINEMENT = new Set(
|
|
14682
|
-
Object.values(WORKFLOW_EVENT_TYPES).filter((et) => et.requiresRefinementFilters).map((et) => et.eventTypeId)
|
|
14683
|
-
);
|
|
14684
|
-
|
|
14685
17549
|
// ../shared/pure/workflow-validation/event-types.ts
|
|
17550
|
+
var isValidEventTypeIdFormat = (id) => /^[46]-\d+$/.test(id);
|
|
14686
17551
|
var collectUnifiedEventBranches = (enrollmentCriteria) => {
|
|
14687
17552
|
if (!enrollmentCriteria) return [];
|
|
14688
17553
|
const branches = [];
|
|
@@ -14712,7 +17577,7 @@ var validateWorkflowEventTypeIds = (params) => {
|
|
|
14712
17577
|
severity: "error",
|
|
14713
17578
|
operation_index: operationIndex,
|
|
14714
17579
|
code: "INVALID_EVENT_TYPE_ID",
|
|
14715
|
-
message: `eventTypeId '${eventTypeId}' is a CRM object type ID, not an event type ID. Use '4-655002' for property change, '4-1639801' for form submission, etc. Query
|
|
17580
|
+
message: `eventTypeId '${eventTypeId}' is a CRM object type ID, not an event type ID. Use '4-655002' for property change, '4-1639801' for form submission, etc. Query workflow_enrollment_triggers for valid event_type_id values.`
|
|
14716
17581
|
});
|
|
14717
17582
|
continue;
|
|
14718
17583
|
}
|
|
@@ -14721,16 +17586,16 @@ var validateWorkflowEventTypeIds = (params) => {
|
|
|
14721
17586
|
severity: "error",
|
|
14722
17587
|
operation_index: operationIndex,
|
|
14723
17588
|
code: "INVALID_EVENT_TYPE_ID",
|
|
14724
|
-
message: `eventTypeId '${eventTypeId}' has invalid format. Event type IDs use '4-*' (built-in) or '6-*' (custom) prefix. Query
|
|
17589
|
+
message: `eventTypeId '${eventTypeId}' has invalid format. Event type IDs use '4-*' (built-in) or '6-*' (custom) prefix. Query workflow_enrollment_triggers for valid event_type_id values.`
|
|
14725
17590
|
});
|
|
14726
17591
|
continue;
|
|
14727
17592
|
}
|
|
14728
|
-
if (!
|
|
17593
|
+
if (!KNOWN_WORKFLOW_ENROLLMENT_EVENT_TYPE_IDS.has(eventTypeId)) {
|
|
14729
17594
|
issues.push({
|
|
14730
17595
|
severity: "warning",
|
|
14731
17596
|
operation_index: operationIndex,
|
|
14732
17597
|
code: "UNKNOWN_EVENT_TYPE_ID",
|
|
14733
|
-
message: `eventTypeId '${eventTypeId}' is not in the known
|
|
17598
|
+
message: `eventTypeId '${eventTypeId}' is not in the known enrollment trigger catalog. Verify it is correct by checking workflow_enrollment_triggers.event_type_id.`
|
|
14734
17599
|
});
|
|
14735
17600
|
}
|
|
14736
17601
|
}
|
|
@@ -14742,8 +17607,8 @@ var validateWorkflowRefinementFilters = (params) => {
|
|
|
14742
17607
|
const unifiedBranches = collectUnifiedEventBranches(enrollmentCriteria);
|
|
14743
17608
|
for (const branch of unifiedBranches) {
|
|
14744
17609
|
const eventTypeId = typeof branch.eventTypeId === "string" ? branch.eventTypeId : void 0;
|
|
14745
|
-
if (!eventTypeId || !
|
|
14746
|
-
const eventType =
|
|
17610
|
+
if (!eventTypeId || !WORKFLOW_EVENT_TYPES_REQUIRING_REFINEMENT.has(eventTypeId)) continue;
|
|
17611
|
+
const eventType = getSupportedWorkflowEnrollmentTriggerByEventTypeId(eventTypeId);
|
|
14747
17612
|
const note = eventType?.refinementNote ?? "This event type requires refinement filters embedded in the event filter branch.";
|
|
14748
17613
|
issues.push({
|
|
14749
17614
|
severity: "warning",
|
|
@@ -14800,8 +17665,13 @@ var normalizeWorkflowActionValues = (actions) => actions.map((action) => {
|
|
|
14800
17665
|
if (!fields48) return { ...action };
|
|
14801
17666
|
const actionTypeId = typeof action.actionTypeId === "string" ? action.actionTypeId : "";
|
|
14802
17667
|
if (actionTypeId === "0-5") {
|
|
14803
|
-
const {
|
|
14804
|
-
|
|
17668
|
+
const {
|
|
17669
|
+
property,
|
|
17670
|
+
property_name,
|
|
17671
|
+
...restFields
|
|
17672
|
+
} = fields48;
|
|
17673
|
+
const canonicalPropertyName = typeof property_name === "string" && property_name.length > 0 ? property_name : typeof property === "string" && property.length > 0 ? property : void 0;
|
|
17674
|
+
const normalizedFields = canonicalPropertyName ? { ...restFields, property_name: canonicalPropertyName, value: injectStaticValueType(restFields.value) } : { ...restFields, value: injectStaticValueType(restFields.value) };
|
|
14805
17675
|
return { ...action, fields: normalizedFields };
|
|
14806
17676
|
}
|
|
14807
17677
|
if (actionTypeId === "0-14" && Array.isArray(fields48.properties)) {
|
|
@@ -14852,10 +17722,65 @@ var collectRotateToOwnerActions = (actions) => actions.flatMap((action) => {
|
|
|
14852
17722
|
userIds: fields48.user_ids.filter((id) => typeof id === "string")
|
|
14853
17723
|
}];
|
|
14854
17724
|
});
|
|
17725
|
+
var collectWorkflowTargetActions = (actions) => actions.flatMap((action) => {
|
|
17726
|
+
if (typeof action.actionTypeId !== "string" || action.actionTypeId !== "0-15") return [];
|
|
17727
|
+
const fields48 = typeof action.fields === "object" && action.fields !== null ? action.fields : void 0;
|
|
17728
|
+
if (!fields48 || typeof fields48.flow_id !== "string" || fields48.flow_id.length === 0) return [];
|
|
17729
|
+
return [{
|
|
17730
|
+
actionId: typeof action.actionId === "string" ? action.actionId : "<missing>",
|
|
17731
|
+
flowId: fields48.flow_id
|
|
17732
|
+
}];
|
|
17733
|
+
});
|
|
17734
|
+
var collectSequenceActions = (actions) => actions.flatMap((action) => {
|
|
17735
|
+
if (typeof action.actionTypeId !== "string" || action.actionTypeId !== "0-46510720") return [];
|
|
17736
|
+
const fields48 = typeof action.fields === "object" && action.fields !== null ? action.fields : void 0;
|
|
17737
|
+
if (!fields48 || typeof fields48.sequenceId !== "string" || fields48.sequenceId.length === 0) return [];
|
|
17738
|
+
return [{
|
|
17739
|
+
actionId: typeof action.actionId === "string" ? action.actionId : "<missing>",
|
|
17740
|
+
sequenceId: fields48.sequenceId
|
|
17741
|
+
}];
|
|
17742
|
+
});
|
|
17743
|
+
var collectSubscriptionDefinitionActions = (actions) => actions.flatMap((action) => {
|
|
17744
|
+
if (typeof action.actionTypeId !== "string" || action.actionTypeId !== "0-43347357") return [];
|
|
17745
|
+
const fields48 = typeof action.fields === "object" && action.fields !== null ? action.fields : void 0;
|
|
17746
|
+
if (!fields48 || typeof fields48.subscriptionId !== "string" || fields48.subscriptionId.length === 0) return [];
|
|
17747
|
+
return [{
|
|
17748
|
+
actionId: typeof action.actionId === "string" ? action.actionId : "<missing>",
|
|
17749
|
+
subscriptionId: fields48.subscriptionId
|
|
17750
|
+
}];
|
|
17751
|
+
});
|
|
17752
|
+
var collectInboxActions = (actions) => actions.flatMap((action) => {
|
|
17753
|
+
if (typeof action.actionTypeId !== "string" || action.actionTypeId !== "0-44475148") return [];
|
|
17754
|
+
const fields48 = typeof action.fields === "object" && action.fields !== null ? action.fields : void 0;
|
|
17755
|
+
if (!fields48 || typeof fields48["Target Inbox"] !== "string" || fields48["Target Inbox"].length === 0) return [];
|
|
17756
|
+
return [{
|
|
17757
|
+
actionId: typeof action.actionId === "string" ? action.actionId : "<missing>",
|
|
17758
|
+
inboxId: fields48["Target Inbox"]
|
|
17759
|
+
}];
|
|
17760
|
+
});
|
|
17761
|
+
var collectAssociationLabelActions = (actions) => actions.flatMap((action) => {
|
|
17762
|
+
if (typeof action.actionTypeId !== "string") return [];
|
|
17763
|
+
if (!["0-63189541", "0-73444249", "0-61139476"].includes(action.actionTypeId)) return [];
|
|
17764
|
+
const fields48 = typeof action.fields === "object" && action.fields !== null ? action.fields : void 0;
|
|
17765
|
+
const fromObjectType = typeof fields48?.fromObjectType === "string" ? fields48.fromObjectType : void 0;
|
|
17766
|
+
const toObjectType = typeof fields48?.toObjectType === "string" ? fields48.toObjectType : void 0;
|
|
17767
|
+
if (!fields48 || !fromObjectType || !toObjectType) return [];
|
|
17768
|
+
const fieldName = action.actionTypeId === "0-61139476" ? "labelToRemove" : "labelToApply";
|
|
17769
|
+
const rawId = fields48[fieldName];
|
|
17770
|
+
if (typeof rawId !== "string" || rawId.length === 0) return [];
|
|
17771
|
+
return [{
|
|
17772
|
+
actionId: typeof action.actionId === "string" ? action.actionId : "<missing>",
|
|
17773
|
+
actionTypeId: action.actionTypeId,
|
|
17774
|
+
fromObjectType,
|
|
17775
|
+
toObjectType,
|
|
17776
|
+
fieldName,
|
|
17777
|
+
labelTypeId: rawId
|
|
17778
|
+
}];
|
|
17779
|
+
});
|
|
14855
17780
|
var hasValidEnumerationOption = (propertyDefinition, staticValue) => propertyDefinition.type !== "enumeration" || propertyDefinition.options.some((option) => option.value === staticValue);
|
|
14856
17781
|
var EMPTY_PROPERTY_DEFINITIONS = [];
|
|
14857
17782
|
var validateWorkflowMetadataEffectful = (params) => {
|
|
14858
|
-
const { objectTypeId, enrollmentCriteria, suppressionListIds, actions, operationIndex } = params;
|
|
17783
|
+
const { objectTypeId, workflowType, enrollmentCriteria, suppressionListIds, actions, operationIndex } = params;
|
|
14859
17784
|
const enrollmentPropertyFilters = collectWorkflowEnrollmentPropertyFilters(
|
|
14860
17785
|
enrollmentCriteria,
|
|
14861
17786
|
objectTypeId
|
|
@@ -14866,6 +17791,11 @@ var validateWorkflowMetadataEffectful = (params) => {
|
|
|
14866
17791
|
const propertyActionRefs = collectWorkflowPropertyActionRefs(actions ?? []);
|
|
14867
17792
|
const associatedActionRefs = collectWorkflowAssociatedPropertyActionRefs(actions ?? []);
|
|
14868
17793
|
const rotateActions = collectRotateToOwnerActions(actions ?? []);
|
|
17794
|
+
const workflowTargetActions = collectWorkflowTargetActions(actions ?? []);
|
|
17795
|
+
const sequenceActions = collectSequenceActions(actions ?? []);
|
|
17796
|
+
const subscriptionActions = collectSubscriptionDefinitionActions(actions ?? []);
|
|
17797
|
+
const inboxActions = collectInboxActions(actions ?? []);
|
|
17798
|
+
const associationLabelActions = collectAssociationLabelActions(actions ?? []);
|
|
14869
17799
|
return pipe81(
|
|
14870
17800
|
HubSpotService,
|
|
14871
17801
|
Effect99.flatMap(
|
|
@@ -14907,44 +17837,139 @@ var validateWorkflowMetadataEffectful = (params) => {
|
|
|
14907
17837
|
const relatedObjects = enabledObjects.enabledObjects.filter(
|
|
14908
17838
|
(obj) => obj.objectTypeId !== objectTypeId
|
|
14909
17839
|
);
|
|
14910
|
-
const
|
|
14911
|
-
|
|
14912
|
-
|
|
14913
|
-
|
|
17840
|
+
const associationDirectionsToFetch = /* @__PURE__ */ new Map();
|
|
17841
|
+
if (associatedActionRefs.length > 0 && objectTypeId) {
|
|
17842
|
+
for (const relatedObject of relatedObjects) {
|
|
17843
|
+
associationDirectionsToFetch.set(
|
|
17844
|
+
toDirectionKey(objectTypeId, relatedObject.objectTypeId),
|
|
17845
|
+
{ fromObjectType: objectTypeId, toObjectType: relatedObject.objectTypeId }
|
|
17846
|
+
);
|
|
17847
|
+
associationDirectionsToFetch.set(
|
|
17848
|
+
toDirectionKey(relatedObject.objectTypeId, objectTypeId),
|
|
17849
|
+
{ fromObjectType: relatedObject.objectTypeId, toObjectType: objectTypeId }
|
|
17850
|
+
);
|
|
17851
|
+
}
|
|
17852
|
+
}
|
|
17853
|
+
for (const labelAction of associationLabelActions) {
|
|
17854
|
+
associationDirectionsToFetch.set(
|
|
17855
|
+
toDirectionKey(labelAction.fromObjectType, labelAction.toObjectType),
|
|
17856
|
+
{ fromObjectType: labelAction.fromObjectType, toObjectType: labelAction.toObjectType }
|
|
17857
|
+
);
|
|
17858
|
+
}
|
|
17859
|
+
const associationLabelsEffect = associationDirectionsToFetch.size === 0 ? Effect99.succeed([]) : Effect99.all(
|
|
17860
|
+
Array.from(associationDirectionsToFetch.values()).map(
|
|
17861
|
+
(direction) => pipe81(
|
|
17862
|
+
hs.getAssociationLabels(direction.fromObjectType, direction.toObjectType),
|
|
14914
17863
|
Effect99.map((labels) => ({
|
|
14915
|
-
directionKey: toDirectionKey(
|
|
17864
|
+
directionKey: toDirectionKey(direction.fromObjectType, direction.toObjectType),
|
|
14916
17865
|
labels,
|
|
14917
17866
|
failed: false
|
|
14918
17867
|
})),
|
|
14919
17868
|
Effect99.catchAll(
|
|
14920
17869
|
() => Effect99.succeed({
|
|
14921
|
-
directionKey: toDirectionKey(
|
|
17870
|
+
directionKey: toDirectionKey(direction.fromObjectType, direction.toObjectType),
|
|
14922
17871
|
labels: [],
|
|
14923
17872
|
failed: true
|
|
14924
17873
|
})
|
|
14925
17874
|
)
|
|
14926
|
-
)
|
|
14927
|
-
|
|
14928
|
-
|
|
14929
|
-
|
|
14930
|
-
|
|
14931
|
-
|
|
17875
|
+
)
|
|
17876
|
+
),
|
|
17877
|
+
{ concurrency: 5 }
|
|
17878
|
+
);
|
|
17879
|
+
const workflowTargetsEffect = workflowTargetActions.length === 0 ? Effect99.succeed([]) : Effect99.all(
|
|
17880
|
+
Array.from(new Set(workflowTargetActions.map((action) => action.flowId))).map(
|
|
17881
|
+
(flowId) => pipe81(
|
|
17882
|
+
hs.getWorkflow(flowId),
|
|
17883
|
+
Effect99.map((workflow) => ({
|
|
17884
|
+
flowId,
|
|
17885
|
+
workflowType: workflow.type,
|
|
17886
|
+
objectTypeId: workflow.objectTypeId,
|
|
17887
|
+
missing: false,
|
|
14932
17888
|
failed: false
|
|
14933
17889
|
})),
|
|
14934
|
-
Effect99.catchAll(
|
|
14935
|
-
|
|
14936
|
-
|
|
14937
|
-
|
|
14938
|
-
|
|
14939
|
-
|
|
14940
|
-
|
|
17890
|
+
Effect99.catchAll((error) => Effect99.succeed({
|
|
17891
|
+
flowId,
|
|
17892
|
+
missing: "code" in error && error.code === 404,
|
|
17893
|
+
failed: !("code" in error && error.code === 404),
|
|
17894
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
17895
|
+
}))
|
|
17896
|
+
)
|
|
17897
|
+
),
|
|
17898
|
+
{ concurrency: 5 }
|
|
17899
|
+
);
|
|
17900
|
+
const sequencesEffect = sequenceActions.length === 0 ? Effect99.succeed([]) : Effect99.all(
|
|
17901
|
+
Array.from(new Set(sequenceActions.map((action) => action.sequenceId))).map(
|
|
17902
|
+
(sequenceId) => pipe81(
|
|
17903
|
+
hs.getSequence(sequenceId),
|
|
17904
|
+
Effect99.map(() => ({
|
|
17905
|
+
sequenceId,
|
|
17906
|
+
missing: false,
|
|
17907
|
+
failed: false
|
|
17908
|
+
})),
|
|
17909
|
+
Effect99.catchAll((error) => Effect99.succeed({
|
|
17910
|
+
sequenceId,
|
|
17911
|
+
missing: "code" in error && error.code === 404,
|
|
17912
|
+
failed: !("code" in error && error.code === 404),
|
|
17913
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
17914
|
+
}))
|
|
14941
17915
|
)
|
|
14942
|
-
|
|
17916
|
+
),
|
|
14943
17917
|
{ concurrency: 5 }
|
|
14944
17918
|
);
|
|
17919
|
+
const subscriptionDefinitionsEffect = subscriptionActions.length === 0 ? Effect99.succeed({
|
|
17920
|
+
definitionIds: /* @__PURE__ */ new Set(),
|
|
17921
|
+
failed: false,
|
|
17922
|
+
errorMessage: void 0
|
|
17923
|
+
}) : pipe81(
|
|
17924
|
+
hs.getCommunicationSubscriptionDefinitions,
|
|
17925
|
+
Effect99.map((definitions) => ({
|
|
17926
|
+
definitionIds: new Set(definitions.map((definition) => definition.id)),
|
|
17927
|
+
failed: false,
|
|
17928
|
+
errorMessage: void 0
|
|
17929
|
+
})),
|
|
17930
|
+
Effect99.catchAll((error) => Effect99.succeed({
|
|
17931
|
+
definitionIds: /* @__PURE__ */ new Set(),
|
|
17932
|
+
failed: true,
|
|
17933
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
17934
|
+
}))
|
|
17935
|
+
);
|
|
17936
|
+
const inboxesEffect = inboxActions.length === 0 ? Effect99.succeed({
|
|
17937
|
+
inboxIds: /* @__PURE__ */ new Set(),
|
|
17938
|
+
failed: false,
|
|
17939
|
+
errorMessage: void 0
|
|
17940
|
+
}) : pipe81(
|
|
17941
|
+
hs.getConversationInboxes,
|
|
17942
|
+
Effect99.map((inboxes) => ({
|
|
17943
|
+
inboxIds: new Set(inboxes.map((inbox) => inbox.id)),
|
|
17944
|
+
failed: false,
|
|
17945
|
+
errorMessage: void 0
|
|
17946
|
+
})),
|
|
17947
|
+
Effect99.catchAll((error) => Effect99.succeed({
|
|
17948
|
+
inboxIds: /* @__PURE__ */ new Set(),
|
|
17949
|
+
failed: true,
|
|
17950
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
17951
|
+
}))
|
|
17952
|
+
);
|
|
14945
17953
|
return pipe81(
|
|
14946
|
-
Effect99.all(
|
|
14947
|
-
|
|
17954
|
+
Effect99.all(
|
|
17955
|
+
[
|
|
17956
|
+
propertyDefinitionsEffect,
|
|
17957
|
+
associationLabelsEffect,
|
|
17958
|
+
workflowTargetsEffect,
|
|
17959
|
+
sequencesEffect,
|
|
17960
|
+
subscriptionDefinitionsEffect,
|
|
17961
|
+
inboxesEffect
|
|
17962
|
+
],
|
|
17963
|
+
{ concurrency: "unbounded" }
|
|
17964
|
+
),
|
|
17965
|
+
Effect99.map(([
|
|
17966
|
+
propertyDefinitionResults,
|
|
17967
|
+
associationLabelResults,
|
|
17968
|
+
workflowTargetResults,
|
|
17969
|
+
sequenceResults,
|
|
17970
|
+
subscriptionDefinitionResults,
|
|
17971
|
+
inboxResults
|
|
17972
|
+
]) => {
|
|
14948
17973
|
const failedPropertyDefinitionObjectTypeIds = new Set(
|
|
14949
17974
|
propertyDefinitionResults.filter(([, defs]) => defs.length === 0).map(([id]) => id)
|
|
14950
17975
|
);
|
|
@@ -15007,7 +18032,50 @@ var validateWorkflowMetadataEffectful = (params) => {
|
|
|
15007
18032
|
owners,
|
|
15008
18033
|
operationIndex
|
|
15009
18034
|
});
|
|
15010
|
-
|
|
18035
|
+
const workflowTargetIssues = validateWorkflowTargetActions({
|
|
18036
|
+
workflowTargetActions,
|
|
18037
|
+
workflowTargetResults,
|
|
18038
|
+
workflowType,
|
|
18039
|
+
objectTypeId,
|
|
18040
|
+
operationIndex
|
|
18041
|
+
});
|
|
18042
|
+
const sequenceIssues = validateSequenceActions({
|
|
18043
|
+
sequenceActions,
|
|
18044
|
+
sequenceResults,
|
|
18045
|
+
operationIndex
|
|
18046
|
+
});
|
|
18047
|
+
const subscriptionIssues = validateSubscriptionDefinitionActions({
|
|
18048
|
+
subscriptionActions,
|
|
18049
|
+
definitionIds: subscriptionDefinitionResults.definitionIds,
|
|
18050
|
+
failed: subscriptionDefinitionResults.failed,
|
|
18051
|
+
errorMessage: subscriptionDefinitionResults.errorMessage,
|
|
18052
|
+
operationIndex
|
|
18053
|
+
});
|
|
18054
|
+
const inboxIssues = validateInboxActions({
|
|
18055
|
+
inboxActions,
|
|
18056
|
+
inboxIds: inboxResults.inboxIds,
|
|
18057
|
+
failed: inboxResults.failed,
|
|
18058
|
+
errorMessage: inboxResults.errorMessage,
|
|
18059
|
+
operationIndex
|
|
18060
|
+
});
|
|
18061
|
+
const associationLabelIssues = validateAssociationLabelActions({
|
|
18062
|
+
associationLabelActions,
|
|
18063
|
+
enabledObjectTypeIds,
|
|
18064
|
+
associationTypeIdsByDirection,
|
|
18065
|
+
failedAssociationDirectionKeys,
|
|
18066
|
+
operationIndex
|
|
18067
|
+
});
|
|
18068
|
+
return [
|
|
18069
|
+
...enrollmentIssues,
|
|
18070
|
+
...directPropertyIssues,
|
|
18071
|
+
...associatedActionIssues,
|
|
18072
|
+
...rotateOwnerIssues,
|
|
18073
|
+
...workflowTargetIssues,
|
|
18074
|
+
...sequenceIssues,
|
|
18075
|
+
...subscriptionIssues,
|
|
18076
|
+
...inboxIssues,
|
|
18077
|
+
...associationLabelIssues
|
|
18078
|
+
];
|
|
15011
18079
|
})
|
|
15012
18080
|
);
|
|
15013
18081
|
})
|
|
@@ -15098,6 +18166,168 @@ var validateRotateToOwnerUserIds = (params) => {
|
|
|
15098
18166
|
}
|
|
15099
18167
|
return issues;
|
|
15100
18168
|
};
|
|
18169
|
+
var validateWorkflowTargetActions = (params) => {
|
|
18170
|
+
const { workflowTargetActions, workflowTargetResults, workflowType, objectTypeId, operationIndex } = params;
|
|
18171
|
+
const resultsById = new Map(workflowTargetResults.map((result) => [result.flowId, result]));
|
|
18172
|
+
return workflowTargetActions.flatMap((action) => {
|
|
18173
|
+
const result = resultsById.get(action.flowId);
|
|
18174
|
+
if (!result) return [];
|
|
18175
|
+
if (result.failed) {
|
|
18176
|
+
return [{
|
|
18177
|
+
severity: "warning",
|
|
18178
|
+
operation_index: operationIndex,
|
|
18179
|
+
code: "WORKFLOW_ACTION_TARGET_WORKFLOW_LOOKUP_UNAVAILABLE",
|
|
18180
|
+
message: `Action '${action.actionId}' could not verify target workflow '${action.flowId}' during validation (${result.errorMessage ?? "API unavailable"}).`
|
|
18181
|
+
}];
|
|
18182
|
+
}
|
|
18183
|
+
if (result.missing) {
|
|
18184
|
+
return [{
|
|
18185
|
+
severity: "error",
|
|
18186
|
+
operation_index: operationIndex,
|
|
18187
|
+
code: "WORKFLOW_ACTION_TARGET_WORKFLOW_NOT_FOUND",
|
|
18188
|
+
message: `Action '${action.actionId}' references workflow '${action.flowId}', but that workflow was not found.`
|
|
18189
|
+
}];
|
|
18190
|
+
}
|
|
18191
|
+
const issues = [];
|
|
18192
|
+
if (workflowType && result.workflowType && result.workflowType !== workflowType) {
|
|
18193
|
+
issues.push({
|
|
18194
|
+
severity: "error",
|
|
18195
|
+
operation_index: operationIndex,
|
|
18196
|
+
code: "WORKFLOW_ACTION_TARGET_WORKFLOW_TYPE_MISMATCH",
|
|
18197
|
+
message: `Action '${action.actionId}' references workflow '${action.flowId}' of type '${result.workflowType}', but the current workflow type is '${workflowType}'.`
|
|
18198
|
+
});
|
|
18199
|
+
}
|
|
18200
|
+
if (result.objectTypeId && objectTypeId && result.objectTypeId !== objectTypeId) {
|
|
18201
|
+
issues.push({
|
|
18202
|
+
severity: "warning",
|
|
18203
|
+
operation_index: operationIndex,
|
|
18204
|
+
code: "WORKFLOW_ACTION_TARGET_WORKFLOW_OBJECT_TYPE_MISMATCH",
|
|
18205
|
+
message: `Action '${action.actionId}' references workflow '${action.flowId}' on object type '${result.objectTypeId}', while the current workflow object type is '${objectTypeId}'.`
|
|
18206
|
+
});
|
|
18207
|
+
}
|
|
18208
|
+
return issues;
|
|
18209
|
+
});
|
|
18210
|
+
};
|
|
18211
|
+
var validateSequenceActions = (params) => {
|
|
18212
|
+
const { sequenceActions, sequenceResults, operationIndex } = params;
|
|
18213
|
+
const resultsById = new Map(sequenceResults.map((result) => [result.sequenceId, result]));
|
|
18214
|
+
return sequenceActions.flatMap((action) => {
|
|
18215
|
+
const result = resultsById.get(action.sequenceId);
|
|
18216
|
+
if (!result) return [];
|
|
18217
|
+
if (result.failed) {
|
|
18218
|
+
return [{
|
|
18219
|
+
severity: "warning",
|
|
18220
|
+
operation_index: operationIndex,
|
|
18221
|
+
code: "WORKFLOW_ACTION_SEQUENCE_LOOKUP_UNAVAILABLE",
|
|
18222
|
+
message: `Action '${action.actionId}' could not verify sequence '${action.sequenceId}' during validation (${result.errorMessage ?? "API unavailable"}).`
|
|
18223
|
+
}];
|
|
18224
|
+
}
|
|
18225
|
+
if (result.missing) {
|
|
18226
|
+
return [{
|
|
18227
|
+
severity: "error",
|
|
18228
|
+
operation_index: operationIndex,
|
|
18229
|
+
code: "WORKFLOW_ACTION_SEQUENCE_NOT_FOUND",
|
|
18230
|
+
message: `Action '${action.actionId}' references sequence '${action.sequenceId}', but that sequence was not found.`
|
|
18231
|
+
}];
|
|
18232
|
+
}
|
|
18233
|
+
return [];
|
|
18234
|
+
});
|
|
18235
|
+
};
|
|
18236
|
+
var validateSubscriptionDefinitionActions = (params) => {
|
|
18237
|
+
const { subscriptionActions, definitionIds, failed, errorMessage, operationIndex } = params;
|
|
18238
|
+
return subscriptionActions.flatMap((action) => {
|
|
18239
|
+
if (failed) {
|
|
18240
|
+
return [{
|
|
18241
|
+
severity: "warning",
|
|
18242
|
+
operation_index: operationIndex,
|
|
18243
|
+
code: "WORKFLOW_ACTION_SUBSCRIPTION_LOOKUP_UNAVAILABLE",
|
|
18244
|
+
message: `Action '${action.actionId}' could not verify subscription definition '${action.subscriptionId}' during validation (${errorMessage ?? "API unavailable"}).`
|
|
18245
|
+
}];
|
|
18246
|
+
}
|
|
18247
|
+
if (!definitionIds.has(action.subscriptionId)) {
|
|
18248
|
+
return [{
|
|
18249
|
+
severity: "error",
|
|
18250
|
+
operation_index: operationIndex,
|
|
18251
|
+
code: "WORKFLOW_ACTION_SUBSCRIPTION_NOT_FOUND",
|
|
18252
|
+
message: `Action '${action.actionId}' references subscription definition '${action.subscriptionId}', but it was not found.`
|
|
18253
|
+
}];
|
|
18254
|
+
}
|
|
18255
|
+
return [];
|
|
18256
|
+
});
|
|
18257
|
+
};
|
|
18258
|
+
var validateInboxActions = (params) => {
|
|
18259
|
+
const { inboxActions, inboxIds, failed, errorMessage, operationIndex } = params;
|
|
18260
|
+
return inboxActions.flatMap((action) => {
|
|
18261
|
+
if (failed) {
|
|
18262
|
+
return [{
|
|
18263
|
+
severity: "warning",
|
|
18264
|
+
operation_index: operationIndex,
|
|
18265
|
+
code: "WORKFLOW_ACTION_INBOX_LOOKUP_UNAVAILABLE",
|
|
18266
|
+
message: `Action '${action.actionId}' could not verify inbox '${action.inboxId}' during validation (${errorMessage ?? "API unavailable"}).`
|
|
18267
|
+
}];
|
|
18268
|
+
}
|
|
18269
|
+
if (!inboxIds.has(action.inboxId)) {
|
|
18270
|
+
return [{
|
|
18271
|
+
severity: "error",
|
|
18272
|
+
operation_index: operationIndex,
|
|
18273
|
+
code: "WORKFLOW_ACTION_INBOX_NOT_FOUND",
|
|
18274
|
+
message: `Action '${action.actionId}' references inbox '${action.inboxId}', but it was not found.`
|
|
18275
|
+
}];
|
|
18276
|
+
}
|
|
18277
|
+
return [];
|
|
18278
|
+
});
|
|
18279
|
+
};
|
|
18280
|
+
var validateAssociationLabelActions = (params) => {
|
|
18281
|
+
const {
|
|
18282
|
+
associationLabelActions,
|
|
18283
|
+
enabledObjectTypeIds,
|
|
18284
|
+
associationTypeIdsByDirection,
|
|
18285
|
+
failedAssociationDirectionKeys,
|
|
18286
|
+
operationIndex
|
|
18287
|
+
} = params;
|
|
18288
|
+
return associationLabelActions.flatMap((action) => {
|
|
18289
|
+
const issues = [];
|
|
18290
|
+
const directionKey = toDirectionKey(action.fromObjectType, action.toObjectType);
|
|
18291
|
+
if (!enabledObjectTypeIds.has(action.fromObjectType) || !enabledObjectTypeIds.has(action.toObjectType)) {
|
|
18292
|
+
issues.push({
|
|
18293
|
+
severity: "warning",
|
|
18294
|
+
operation_index: operationIndex,
|
|
18295
|
+
code: "WORKFLOW_ACTION_ASSOCIATION_LABEL_OBJECT_TYPE_UNAVAILABLE",
|
|
18296
|
+
message: `Action '${action.actionId}' uses association label direction '${action.fromObjectType}' -> '${action.toObjectType}', but one or both object types are not enabled in the current portal metadata.`
|
|
18297
|
+
});
|
|
18298
|
+
return issues;
|
|
18299
|
+
}
|
|
18300
|
+
const numericLabelTypeId = Number(action.labelTypeId);
|
|
18301
|
+
if (!Number.isInteger(numericLabelTypeId)) {
|
|
18302
|
+
issues.push({
|
|
18303
|
+
severity: "error",
|
|
18304
|
+
operation_index: operationIndex,
|
|
18305
|
+
code: "WORKFLOW_ACTION_ASSOCIATION_LABEL_ID_INVALID",
|
|
18306
|
+
message: `Action '${action.actionId}' uses '${action.fieldName}'='${action.labelTypeId}', but association label IDs must be numeric typeIds.`
|
|
18307
|
+
});
|
|
18308
|
+
return issues;
|
|
18309
|
+
}
|
|
18310
|
+
if (failedAssociationDirectionKeys.has(directionKey)) {
|
|
18311
|
+
issues.push({
|
|
18312
|
+
severity: "warning",
|
|
18313
|
+
operation_index: operationIndex,
|
|
18314
|
+
code: "WORKFLOW_ACTION_ASSOCIATION_LABEL_LOOKUP_UNAVAILABLE",
|
|
18315
|
+
message: `Action '${action.actionId}' could not verify association label '${action.labelTypeId}' for direction '${action.fromObjectType}' -> '${action.toObjectType}' during validation (API unavailable).`
|
|
18316
|
+
});
|
|
18317
|
+
return issues;
|
|
18318
|
+
}
|
|
18319
|
+
const typeIds = associationTypeIdsByDirection.get(directionKey);
|
|
18320
|
+
if (!typeIds?.has(numericLabelTypeId)) {
|
|
18321
|
+
issues.push({
|
|
18322
|
+
severity: "error",
|
|
18323
|
+
operation_index: operationIndex,
|
|
18324
|
+
code: "WORKFLOW_ACTION_ASSOCIATION_LABEL_NOT_FOUND",
|
|
18325
|
+
message: `Action '${action.actionId}' references association label '${action.labelTypeId}' for direction '${action.fromObjectType}' -> '${action.toObjectType}', but that typeId was not found.`
|
|
18326
|
+
});
|
|
18327
|
+
}
|
|
18328
|
+
return issues;
|
|
18329
|
+
});
|
|
18330
|
+
};
|
|
15101
18331
|
|
|
15102
18332
|
// ../shared/operations/create-workflow/index.ts
|
|
15103
18333
|
var computeNextAvailableActionId = (actions) => {
|
|
@@ -15108,13 +18338,28 @@ var computeNextAvailableActionId = (actions) => {
|
|
|
15108
18338
|
}
|
|
15109
18339
|
return String(max + 1);
|
|
15110
18340
|
};
|
|
18341
|
+
var resolveEnrollmentCriteria = (op) => op.enrollment_criteria ?? (op.enrollment_trigger ? buildEnrollmentCriteriaFromTrigger(op.enrollment_trigger) : void 0);
|
|
15111
18342
|
var createWorkflowHandler = {
|
|
15112
18343
|
type: "create_workflow",
|
|
15113
18344
|
validate: (op, index) => {
|
|
15114
18345
|
const issues = [];
|
|
18346
|
+
const enrollmentCriteria = resolveEnrollmentCriteria(op);
|
|
18347
|
+
if (op.enrollment_criteria && op.enrollment_trigger) {
|
|
18348
|
+
issues.push({
|
|
18349
|
+
severity: "error",
|
|
18350
|
+
operation_index: index,
|
|
18351
|
+
code: "WORKFLOW_ENROLLMENT_SOURCE_CONFLICT",
|
|
18352
|
+
message: "Use either enrollment_criteria or enrollment_trigger, not both"
|
|
18353
|
+
});
|
|
18354
|
+
}
|
|
18355
|
+
if (op.enrollment_trigger) {
|
|
18356
|
+
issues.push(
|
|
18357
|
+
...validateWorkflowEnrollmentTriggerObjectType(op.enrollment_trigger, op.object_type_id, index)
|
|
18358
|
+
);
|
|
18359
|
+
}
|
|
15115
18360
|
issues.push(...validateWorkflowStructure({
|
|
15116
18361
|
actions: op.actions,
|
|
15117
|
-
enrollmentCriteria
|
|
18362
|
+
enrollmentCriteria,
|
|
15118
18363
|
operationIndex: index
|
|
15119
18364
|
}));
|
|
15120
18365
|
if (op.actions.length === 0) {
|
|
@@ -15125,7 +18370,12 @@ var createWorkflowHandler = {
|
|
|
15125
18370
|
message: "Workflow must have at least one action"
|
|
15126
18371
|
});
|
|
15127
18372
|
}
|
|
15128
|
-
issues.push(...validateWorkflowActions({
|
|
18373
|
+
issues.push(...validateWorkflowActions({
|
|
18374
|
+
actions: op.actions,
|
|
18375
|
+
operationIndex: index,
|
|
18376
|
+
workflowType: op.workflow_type,
|
|
18377
|
+
objectTypeId: op.object_type_id
|
|
18378
|
+
}));
|
|
15129
18379
|
if (op.object_type_id === "0-1" && op.workflow_type !== "CONTACT_FLOW") {
|
|
15130
18380
|
issues.push({
|
|
15131
18381
|
severity: "warning",
|
|
@@ -15146,7 +18396,8 @@ var createWorkflowHandler = {
|
|
|
15146
18396
|
},
|
|
15147
18397
|
validateEffectful: (op, index) => validateWorkflowMetadataEffectful({
|
|
15148
18398
|
objectTypeId: op.object_type_id,
|
|
15149
|
-
|
|
18399
|
+
workflowType: op.workflow_type,
|
|
18400
|
+
enrollmentCriteria: resolveEnrollmentCriteria(op),
|
|
15150
18401
|
suppressionListIds: op.suppression_list_ids,
|
|
15151
18402
|
actions: op.actions,
|
|
15152
18403
|
operationIndex: index
|
|
@@ -15156,6 +18407,7 @@ var createWorkflowHandler = {
|
|
|
15156
18407
|
HubSpotService,
|
|
15157
18408
|
Effect100.flatMap((hs) => {
|
|
15158
18409
|
const actions = normalizeWorkflowActionValues(op.actions);
|
|
18410
|
+
const enrollmentCriteria = resolveEnrollmentCriteria(op);
|
|
15159
18411
|
const startActionId = String(actions[0]?.actionId ?? "1");
|
|
15160
18412
|
return hs.createWorkflow({
|
|
15161
18413
|
name: op.name,
|
|
@@ -15166,7 +18418,7 @@ var createWorkflowHandler = {
|
|
|
15166
18418
|
startActionId,
|
|
15167
18419
|
nextAvailableActionId: computeNextAvailableActionId(actions),
|
|
15168
18420
|
actions,
|
|
15169
|
-
...
|
|
18421
|
+
...enrollmentCriteria && { enrollmentCriteria },
|
|
15170
18422
|
...op.suppression_list_ids && { suppressionListIds: op.suppression_list_ids },
|
|
15171
18423
|
...op.time_windows && { timeWindows: op.time_windows },
|
|
15172
18424
|
...op.blocked_dates && { blockedDates: op.blocked_dates },
|
|
@@ -15217,13 +18469,23 @@ var computeNextAvailableActionId2 = (actions) => {
|
|
|
15217
18469
|
}
|
|
15218
18470
|
return String(max + 1);
|
|
15219
18471
|
};
|
|
18472
|
+
var resolveEnrollmentCriteria2 = (op) => op.enrollment_criteria ?? (op.enrollment_trigger ? buildEnrollmentCriteriaFromTrigger(op.enrollment_trigger) : void 0);
|
|
15220
18473
|
var updateWorkflowHandler = {
|
|
15221
18474
|
type: "update_workflow",
|
|
15222
18475
|
validate: (op, index) => {
|
|
15223
18476
|
const issues = [];
|
|
18477
|
+
const enrollmentCriteria = resolveEnrollmentCriteria2(op);
|
|
18478
|
+
if (op.enrollment_criteria && op.enrollment_trigger) {
|
|
18479
|
+
issues.push({
|
|
18480
|
+
severity: "error",
|
|
18481
|
+
operation_index: index,
|
|
18482
|
+
code: "WORKFLOW_ENROLLMENT_SOURCE_CONFLICT",
|
|
18483
|
+
message: "Use either enrollment_criteria or enrollment_trigger, not both"
|
|
18484
|
+
});
|
|
18485
|
+
}
|
|
15224
18486
|
issues.push(...validateWorkflowStructure({
|
|
15225
18487
|
actions: op.actions,
|
|
15226
|
-
enrollmentCriteria
|
|
18488
|
+
enrollmentCriteria,
|
|
15227
18489
|
operationIndex: index
|
|
15228
18490
|
}));
|
|
15229
18491
|
if (op.actions) {
|
|
@@ -15245,16 +18507,28 @@ var updateWorkflowHandler = {
|
|
|
15245
18507
|
(hs) => pipe83(
|
|
15246
18508
|
hs.getWorkflow(op.workflow_id),
|
|
15247
18509
|
Effect101.flatMap((workflow) => {
|
|
15248
|
-
if (!op.enrollment_criteria && !op.suppression_list_ids && !op.actions) {
|
|
18510
|
+
if (!op.enrollment_criteria && !op.enrollment_trigger && !op.suppression_list_ids && !op.actions) {
|
|
15249
18511
|
return Effect101.succeed([]);
|
|
15250
18512
|
}
|
|
15251
18513
|
return validateWorkflowMetadataEffectful({
|
|
15252
18514
|
objectTypeId: workflow.objectTypeId ?? "",
|
|
15253
|
-
|
|
18515
|
+
workflowType: workflow.type ?? "",
|
|
18516
|
+
enrollmentCriteria: resolveEnrollmentCriteria2(op),
|
|
15254
18517
|
suppressionListIds: op.suppression_list_ids,
|
|
15255
18518
|
actions: op.actions,
|
|
15256
18519
|
operationIndex: index
|
|
15257
|
-
})
|
|
18520
|
+
}).pipe(
|
|
18521
|
+
Effect101.map(
|
|
18522
|
+
(issues) => op.enrollment_trigger ? [
|
|
18523
|
+
...issues,
|
|
18524
|
+
...validateWorkflowEnrollmentTriggerObjectType(
|
|
18525
|
+
op.enrollment_trigger,
|
|
18526
|
+
workflow.objectTypeId ?? "",
|
|
18527
|
+
index
|
|
18528
|
+
)
|
|
18529
|
+
] : issues
|
|
18530
|
+
)
|
|
18531
|
+
);
|
|
15258
18532
|
}),
|
|
15259
18533
|
Effect101.catchAll((error) => {
|
|
15260
18534
|
if (error instanceof HubSpotError && error.code === 404) {
|
|
@@ -15305,7 +18579,7 @@ var updateWorkflowHandler = {
|
|
|
15305
18579
|
startActionId,
|
|
15306
18580
|
nextAvailableActionId: computeNextAvailableActionId2(actions),
|
|
15307
18581
|
actions,
|
|
15308
|
-
enrollmentCriteria: op
|
|
18582
|
+
enrollmentCriteria: resolveEnrollmentCriteria2(op) ?? current.enrollmentCriteria,
|
|
15309
18583
|
suppressionListIds: op.suppression_list_ids ?? current.suppressionListIds,
|
|
15310
18584
|
timeWindows: op.time_windows ?? current.timeWindows,
|
|
15311
18585
|
blockedDates: op.blocked_dates ?? current.blockedDates,
|