Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions apps/sim/blocks/blocks/salesforce.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { getScopesForService } from '@/lib/oauth/utils'
import type { BlockConfig } from '@/blocks/types'
import { AuthMode, IntegrationType } from '@/blocks/types'
import type { SalesforceResponse } from '@/tools/salesforce/types'
import { getTrigger } from '@/triggers'

export const SalesforceBlock: BlockConfig<SalesforceResponse> = {
type: 'salesforce',
Expand All @@ -17,6 +18,17 @@ export const SalesforceBlock: BlockConfig<SalesforceResponse> = {
tags: ['sales-engagement', 'customer-support'],
bgColor: '#E0E0E0',
icon: SalesforceIcon,
triggers: {
enabled: true,
available: [
'salesforce_record_created',
'salesforce_record_updated',
'salesforce_record_deleted',
'salesforce_opportunity_stage_changed',
'salesforce_case_status_changed',
'salesforce_webhook',
],
},
subBlocks: [
{
id: 'operation',
Expand Down Expand Up @@ -511,6 +523,12 @@ Return ONLY the date string in YYYY-MM-DD format - no explanations, no quotes, n
],
},
},
...getTrigger('salesforce_record_created').subBlocks,
...getTrigger('salesforce_record_updated').subBlocks,
...getTrigger('salesforce_record_deleted').subBlocks,
...getTrigger('salesforce_opportunity_stage_changed').subBlocks,
...getTrigger('salesforce_case_status_changed').subBlocks,
...getTrigger('salesforce_webhook').subBlocks,
],
tools: {
access: [
Expand Down
14 changes: 14 additions & 0 deletions apps/sim/triggers/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,14 @@ import {
} from '@/triggers/microsoftteams'
import { outlookPollingTrigger } from '@/triggers/outlook'
import { rssPollingTrigger } from '@/triggers/rss'
import {
salesforceCaseStatusChangedTrigger,
salesforceOpportunityStageChangedTrigger,
salesforceRecordCreatedTrigger,
salesforceRecordDeletedTrigger,
salesforceRecordUpdatedTrigger,
salesforceWebhookTrigger,
} from '@/triggers/salesforce'
import { slackWebhookTrigger } from '@/triggers/slack'
import { stripeWebhookTrigger } from '@/triggers/stripe'
import { telegramWebhookTrigger } from '@/triggers/telegram'
Expand Down Expand Up @@ -299,6 +307,12 @@ export const TRIGGER_REGISTRY: TriggerRegistry = {
microsoftteams_chat_subscription: microsoftTeamsChatSubscriptionTrigger,
outlook_poller: outlookPollingTrigger,
rss_poller: rssPollingTrigger,
salesforce_record_created: salesforceRecordCreatedTrigger,
salesforce_record_updated: salesforceRecordUpdatedTrigger,
salesforce_record_deleted: salesforceRecordDeletedTrigger,
salesforce_opportunity_stage_changed: salesforceOpportunityStageChangedTrigger,
salesforce_case_status_changed: salesforceCaseStatusChangedTrigger,
salesforce_webhook: salesforceWebhookTrigger,
stripe_webhook: stripeWebhookTrigger,
telegram_webhook: telegramWebhookTrigger,
typeform_webhook: typeformWebhookTrigger,
Expand Down
35 changes: 35 additions & 0 deletions apps/sim/triggers/salesforce/case_status_changed.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { SalesforceIcon } from '@/components/icons'
import { buildTriggerSubBlocks } from '@/triggers'
import {
buildSalesforceCaseStatusOutputs,
salesforceSetupInstructions,
salesforceTriggerOptions,
} from '@/triggers/salesforce/utils'
import type { TriggerConfig } from '@/triggers/types'

/**
* Salesforce Case Status Changed Trigger
*/
export const salesforceCaseStatusChangedTrigger: TriggerConfig = {
id: 'salesforce_case_status_changed',
name: 'Salesforce Case Status Changed',
provider: 'salesforce',
description: 'Trigger workflow when a case status changes',
version: '1.0.0',
icon: SalesforceIcon,

subBlocks: buildTriggerSubBlocks({
triggerId: 'salesforce_case_status_changed',
triggerOptions: salesforceTriggerOptions,
setupInstructions: salesforceSetupInstructions('Case Status Changed'),
}),

outputs: buildSalesforceCaseStatusOutputs(),

webhook: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
},
}
6 changes: 6 additions & 0 deletions apps/sim/triggers/salesforce/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export { salesforceCaseStatusChangedTrigger } from './case_status_changed'
export { salesforceOpportunityStageChangedTrigger } from './opportunity_stage_changed'
export { salesforceRecordCreatedTrigger } from './record_created'
export { salesforceRecordDeletedTrigger } from './record_deleted'
export { salesforceRecordUpdatedTrigger } from './record_updated'
export { salesforceWebhookTrigger } from './webhook'
35 changes: 35 additions & 0 deletions apps/sim/triggers/salesforce/opportunity_stage_changed.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { SalesforceIcon } from '@/components/icons'
import { buildTriggerSubBlocks } from '@/triggers'
import {
buildSalesforceOpportunityStageOutputs,
salesforceSetupInstructions,
salesforceTriggerOptions,
} from '@/triggers/salesforce/utils'
import type { TriggerConfig } from '@/triggers/types'

/**
* Salesforce Opportunity Stage Changed Trigger
*/
export const salesforceOpportunityStageChangedTrigger: TriggerConfig = {
id: 'salesforce_opportunity_stage_changed',
name: 'Salesforce Opportunity Stage Changed',
provider: 'salesforce',
description: 'Trigger workflow when an opportunity stage changes',
version: '1.0.0',
icon: SalesforceIcon,

subBlocks: buildTriggerSubBlocks({
triggerId: 'salesforce_opportunity_stage_changed',
triggerOptions: salesforceTriggerOptions,
setupInstructions: salesforceSetupInstructions('Opportunity Stage Changed'),
}),

outputs: buildSalesforceOpportunityStageOutputs(),

webhook: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
},
}
40 changes: 40 additions & 0 deletions apps/sim/triggers/salesforce/record_created.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { SalesforceIcon } from '@/components/icons'
import { buildTriggerSubBlocks } from '@/triggers'
import {
buildSalesforceExtraFields,
buildSalesforceRecordOutputs,
salesforceSetupInstructions,
salesforceTriggerOptions,
} from '@/triggers/salesforce/utils'
import type { TriggerConfig } from '@/triggers/types'

/**
* Salesforce Record Created Trigger
*
* PRIMARY trigger — includes the dropdown for selecting trigger type.
*/
export const salesforceRecordCreatedTrigger: TriggerConfig = {
id: 'salesforce_record_created',
name: 'Salesforce Record Created',
provider: 'salesforce',
description: 'Trigger workflow when a Salesforce record is created',
version: '1.0.0',
icon: SalesforceIcon,

subBlocks: buildTriggerSubBlocks({
triggerId: 'salesforce_record_created',
triggerOptions: salesforceTriggerOptions,
includeDropdown: true,
setupInstructions: salesforceSetupInstructions('Record Created'),
extraFields: buildSalesforceExtraFields('salesforce_record_created'),
}),

outputs: buildSalesforceRecordOutputs(),

webhook: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
},
}
37 changes: 37 additions & 0 deletions apps/sim/triggers/salesforce/record_deleted.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { SalesforceIcon } from '@/components/icons'
import { buildTriggerSubBlocks } from '@/triggers'
import {
buildSalesforceExtraFields,
buildSalesforceRecordOutputs,
salesforceSetupInstructions,
salesforceTriggerOptions,
} from '@/triggers/salesforce/utils'
import type { TriggerConfig } from '@/triggers/types'

/**
* Salesforce Record Deleted Trigger
*/
export const salesforceRecordDeletedTrigger: TriggerConfig = {
id: 'salesforce_record_deleted',
name: 'Salesforce Record Deleted',
provider: 'salesforce',
description: 'Trigger workflow when a Salesforce record is deleted',
version: '1.0.0',
icon: SalesforceIcon,

subBlocks: buildTriggerSubBlocks({
triggerId: 'salesforce_record_deleted',
triggerOptions: salesforceTriggerOptions,
setupInstructions: salesforceSetupInstructions('Record Deleted'),
extraFields: buildSalesforceExtraFields('salesforce_record_deleted'),
}),

outputs: buildSalesforceRecordOutputs(),

webhook: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
},
}
37 changes: 37 additions & 0 deletions apps/sim/triggers/salesforce/record_updated.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { SalesforceIcon } from '@/components/icons'
import { buildTriggerSubBlocks } from '@/triggers'
import {
buildSalesforceExtraFields,
buildSalesforceRecordOutputs,
salesforceSetupInstructions,
salesforceTriggerOptions,
} from '@/triggers/salesforce/utils'
import type { TriggerConfig } from '@/triggers/types'

/**
* Salesforce Record Updated Trigger
*/
export const salesforceRecordUpdatedTrigger: TriggerConfig = {
id: 'salesforce_record_updated',
name: 'Salesforce Record Updated',
provider: 'salesforce',
description: 'Trigger workflow when a Salesforce record is updated',
version: '1.0.0',
icon: SalesforceIcon,

subBlocks: buildTriggerSubBlocks({
triggerId: 'salesforce_record_updated',
triggerOptions: salesforceTriggerOptions,
setupInstructions: salesforceSetupInstructions('Record Updated'),
extraFields: buildSalesforceExtraFields('salesforce_record_updated'),
}),

outputs: buildSalesforceRecordOutputs(),

webhook: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
},
}
Loading
Loading