chore: import upstream snapshot with attribution
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonEmailAccountAddedOutputs,
|
||||
buildEmailBisonExtraFields,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonEmailAccountAddedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_email_account_added',
|
||||
name: 'Email Bison Email Account Added',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a sender email account is added to Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_email_account_added',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Email Account Added'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_email_account_added'),
|
||||
}),
|
||||
outputs: buildEmailBisonEmailAccountAddedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonEmailAccountDisconnectedOutputs,
|
||||
buildEmailBisonExtraFields,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonEmailAccountDisconnectedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_email_account_disconnected',
|
||||
name: 'Email Bison Email Account Disconnected',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a sender email account disconnects in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_email_account_disconnected',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Email Account Disconnected'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_email_account_disconnected'),
|
||||
}),
|
||||
outputs: buildEmailBisonEmailAccountDisconnectedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonEmailAccountReconnectedOutputs,
|
||||
buildEmailBisonExtraFields,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonEmailAccountReconnectedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_email_account_reconnected',
|
||||
name: 'Email Bison Email Account Reconnected',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a sender email account reconnects in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_email_account_reconnected',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Email Account Reconnected'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_email_account_reconnected'),
|
||||
}),
|
||||
outputs: buildEmailBisonEmailAccountReconnectedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonEmailAccountRemovedOutputs,
|
||||
buildEmailBisonExtraFields,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonEmailAccountRemovedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_email_account_removed',
|
||||
name: 'Email Bison Email Account Removed',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a sender email account is removed from Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_email_account_removed',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Email Account Removed'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_email_account_removed'),
|
||||
}),
|
||||
outputs: buildEmailBisonEmailAccountRemovedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonEmailBouncedOutputs,
|
||||
buildEmailBisonExtraFields,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonEmailBouncedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_email_bounced',
|
||||
name: 'Email Bison Email Bounced',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when an Email Bison campaign email bounces',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_email_bounced',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Email Bounced'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_email_bounced'),
|
||||
}),
|
||||
outputs: buildEmailBisonEmailBouncedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonEmailOpenedOutputs,
|
||||
buildEmailBisonExtraFields,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonEmailOpenedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_email_opened',
|
||||
name: 'Email Bison Email Opened',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when an Email Bison campaign email is opened',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_email_opened',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Email Opened'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_email_opened'),
|
||||
}),
|
||||
outputs: buildEmailBisonEmailOpenedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonEmailSentOutputs,
|
||||
buildEmailBisonExtraFields,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonEmailSentTrigger: TriggerConfig = {
|
||||
id: 'emailbison_email_sent',
|
||||
name: 'Email Bison Email Sent',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a campaign email is sent in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_email_sent',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
includeDropdown: true,
|
||||
setupInstructions: emailBisonSetupInstructions('Email Sent'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_email_sent'),
|
||||
}),
|
||||
outputs: buildEmailBisonEmailSentOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
export { emailBisonEmailAccountAddedTrigger } from '@/triggers/emailbison/email_account_added'
|
||||
export { emailBisonEmailAccountDisconnectedTrigger } from '@/triggers/emailbison/email_account_disconnected'
|
||||
export { emailBisonEmailAccountReconnectedTrigger } from '@/triggers/emailbison/email_account_reconnected'
|
||||
export { emailBisonEmailAccountRemovedTrigger } from '@/triggers/emailbison/email_account_removed'
|
||||
export { emailBisonEmailBouncedTrigger } from '@/triggers/emailbison/email_bounced'
|
||||
export { emailBisonEmailOpenedTrigger } from '@/triggers/emailbison/email_opened'
|
||||
export { emailBisonEmailSentTrigger } from '@/triggers/emailbison/email_sent'
|
||||
export { emailBisonLeadFirstContactedTrigger } from '@/triggers/emailbison/lead_first_contacted'
|
||||
export { emailBisonLeadInterestedTrigger } from '@/triggers/emailbison/lead_interested'
|
||||
export { emailBisonLeadRepliedTrigger } from '@/triggers/emailbison/lead_replied'
|
||||
export { emailBisonLeadUnsubscribedTrigger } from '@/triggers/emailbison/lead_unsubscribed'
|
||||
export { emailBisonManualEmailSentTrigger } from '@/triggers/emailbison/manual_email_sent'
|
||||
export { emailBisonTagAttachedTrigger } from '@/triggers/emailbison/tag_attached'
|
||||
export { emailBisonTagRemovedTrigger } from '@/triggers/emailbison/tag_removed'
|
||||
export { emailBisonUntrackedReplyReceivedTrigger } from '@/triggers/emailbison/untracked_reply_received'
|
||||
export { emailBisonWarmupDisabledCausingBouncesTrigger } from '@/triggers/emailbison/warmup_disabled_causing_bounces'
|
||||
export { emailBisonWarmupDisabledReceivingBouncesTrigger } from '@/triggers/emailbison/warmup_disabled_receiving_bounces'
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonLeadFirstContactedOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonLeadFirstContactedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_lead_first_contacted',
|
||||
name: 'Email Bison Contact First Emailed',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a contact receives their first campaign email in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_lead_first_contacted',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Contact First Emailed'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_lead_first_contacted'),
|
||||
}),
|
||||
outputs: buildEmailBisonLeadFirstContactedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonLeadInterestedOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonLeadInterestedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_lead_interested',
|
||||
name: 'Email Bison Contact Interested',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a reply is marked interested in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_lead_interested',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Contact Interested'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_lead_interested'),
|
||||
}),
|
||||
outputs: buildEmailBisonLeadInterestedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonLeadRepliedOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonLeadRepliedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_lead_replied',
|
||||
name: 'Email Bison Contact Replied',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a campaign lead replies in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_lead_replied',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Contact Replied'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_lead_replied'),
|
||||
}),
|
||||
outputs: buildEmailBisonLeadRepliedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonLeadUnsubscribedOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonLeadUnsubscribedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_lead_unsubscribed',
|
||||
name: 'Email Bison Contact Unsubscribed',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a contact unsubscribes in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_lead_unsubscribed',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Contact Unsubscribed'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_lead_unsubscribed'),
|
||||
}),
|
||||
outputs: buildEmailBisonLeadUnsubscribedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonManualEmailSentOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonManualEmailSentTrigger: TriggerConfig = {
|
||||
id: 'emailbison_manual_email_sent',
|
||||
name: 'Email Bison Manual Email Sent',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a manual email is sent in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_manual_email_sent',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Manual Email Sent'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_manual_email_sent'),
|
||||
}),
|
||||
outputs: buildEmailBisonManualEmailSentOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonTagAttachedOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonTagAttachedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_tag_attached',
|
||||
name: 'Email Bison Tag Attached',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a custom tag is attached to a taggable in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_tag_attached',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Tag Attached'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_tag_attached'),
|
||||
}),
|
||||
outputs: buildEmailBisonTagAttachedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonTagRemovedOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonTagRemovedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_tag_removed',
|
||||
name: 'Email Bison Tag Removed',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when a custom tag is removed from a taggable in Email Bison',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_tag_removed',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Tag Removed'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_tag_removed'),
|
||||
}),
|
||||
outputs: buildEmailBisonTagRemovedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonUntrackedReplyReceivedOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonUntrackedReplyReceivedTrigger: TriggerConfig = {
|
||||
id: 'emailbison_untracked_reply_received',
|
||||
name: 'Email Bison Untracked Reply Received',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when Email Bison receives a reply not tied to a scheduled campaign email',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_untracked_reply_received',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Untracked Reply Received'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_untracked_reply_received'),
|
||||
}),
|
||||
outputs: buildEmailBisonUntrackedReplyReceivedOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,507 @@
|
||||
import { isRecordLike } from '@sim/utils/object'
|
||||
import type { SubBlockConfig } from '@/blocks/types'
|
||||
import type { TriggerOutput } from '@/triggers/types'
|
||||
|
||||
export const EMAILBISON_TRIGGER_TO_EVENT_TYPE = {
|
||||
emailbison_email_sent: 'email_sent',
|
||||
emailbison_lead_first_contacted: 'lead_first_contacted',
|
||||
emailbison_lead_replied: 'lead_replied',
|
||||
emailbison_lead_interested: 'lead_interested',
|
||||
emailbison_lead_unsubscribed: 'lead_unsubscribed',
|
||||
emailbison_untracked_reply_received: 'untracked_reply_received',
|
||||
emailbison_email_opened: 'email_opened',
|
||||
emailbison_email_bounced: 'email_bounced',
|
||||
emailbison_email_account_added: 'email_account_added',
|
||||
emailbison_email_account_removed: 'email_account_removed',
|
||||
emailbison_email_account_disconnected: 'email_account_disconnected',
|
||||
emailbison_email_account_reconnected: 'email_account_reconnected',
|
||||
emailbison_manual_email_sent: 'manual_email_sent',
|
||||
emailbison_tag_attached: 'tag_attached',
|
||||
emailbison_tag_removed: 'tag_removed',
|
||||
emailbison_warmup_disabled_receiving_bounces: 'warmup_disabled_receiving_bounces',
|
||||
emailbison_warmup_disabled_causing_bounces: 'warmup_disabled_causing_bounces',
|
||||
} as const
|
||||
|
||||
export const emailBisonTriggerOptions = [
|
||||
{ label: 'Email Sent', id: 'emailbison_email_sent' },
|
||||
{ label: 'Contact First Emailed', id: 'emailbison_lead_first_contacted' },
|
||||
{ label: 'Contact Replied', id: 'emailbison_lead_replied' },
|
||||
{ label: 'Contact Interested', id: 'emailbison_lead_interested' },
|
||||
{ label: 'Contact Unsubscribed', id: 'emailbison_lead_unsubscribed' },
|
||||
{ label: 'Untracked Reply Received', id: 'emailbison_untracked_reply_received' },
|
||||
{ label: 'Email Opened', id: 'emailbison_email_opened' },
|
||||
{ label: 'Email Bounced', id: 'emailbison_email_bounced' },
|
||||
{ label: 'Email Account Added', id: 'emailbison_email_account_added' },
|
||||
{ label: 'Email Account Removed', id: 'emailbison_email_account_removed' },
|
||||
{ label: 'Email Account Disconnected', id: 'emailbison_email_account_disconnected' },
|
||||
{ label: 'Email Account Reconnected', id: 'emailbison_email_account_reconnected' },
|
||||
{ label: 'Manual Email Sent', id: 'emailbison_manual_email_sent' },
|
||||
{ label: 'Tag Attached', id: 'emailbison_tag_attached' },
|
||||
{ label: 'Tag Removed', id: 'emailbison_tag_removed' },
|
||||
{
|
||||
label: 'Warmup Disabled Receiving Bounces',
|
||||
id: 'emailbison_warmup_disabled_receiving_bounces',
|
||||
},
|
||||
{
|
||||
label: 'Warmup Disabled Causing Bounces',
|
||||
id: 'emailbison_warmup_disabled_causing_bounces',
|
||||
},
|
||||
]
|
||||
|
||||
export function emailBisonSetupInstructions(eventType: string): string {
|
||||
const instructions = [
|
||||
'Create an Email Bison API token in <strong>Settings > Developer API</strong>.',
|
||||
'Enter the <strong>Instance URL</strong> from Email Bison’s webhook payload, Full API Reference, or exported Postman collection.',
|
||||
`Click <strong>Save Configuration</strong> to automatically create an Email Bison webhook for <strong>${eventType}</strong>.`,
|
||||
'The webhook will be automatically deleted from Email Bison when this trigger is removed.',
|
||||
]
|
||||
|
||||
return instructions
|
||||
.map(
|
||||
(instruction, index) =>
|
||||
`<div class="mb-3"><strong>${index + 1}.</strong> ${instruction}</div>`
|
||||
)
|
||||
.join('')
|
||||
}
|
||||
|
||||
export function buildEmailBisonExtraFields(triggerId: string): SubBlockConfig[] {
|
||||
return [
|
||||
{
|
||||
id: 'apiKey',
|
||||
title: 'API Key',
|
||||
type: 'short-input',
|
||||
placeholder: 'Enter your Email Bison API token',
|
||||
password: true,
|
||||
required: true,
|
||||
paramVisibility: 'user-only',
|
||||
mode: 'trigger',
|
||||
condition: { field: 'selectedTriggerId', value: triggerId },
|
||||
},
|
||||
{
|
||||
id: 'apiBaseUrl',
|
||||
title: 'Instance URL',
|
||||
type: 'short-input',
|
||||
placeholder: 'https://your-emailbison-workspace.com',
|
||||
required: true,
|
||||
paramVisibility: 'user-only',
|
||||
mode: 'trigger',
|
||||
condition: { field: 'selectedTriggerId', value: triggerId },
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
export function buildEmailBisonOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
eventType: { type: 'string', description: 'Email Bison webhook event type' },
|
||||
eventName: { type: 'string', description: 'Human-readable Email Bison event name' },
|
||||
instanceUrl: { type: 'string', description: 'Email Bison instance URL' },
|
||||
workspaceId: { type: 'number', description: 'Email Bison workspace ID' },
|
||||
workspaceName: { type: 'string', description: 'Email Bison workspace name' },
|
||||
event: { type: 'json', description: 'Raw Email Bison event metadata object' },
|
||||
data: { type: 'json', description: 'Raw Email Bison event data object' },
|
||||
}
|
||||
}
|
||||
|
||||
export function buildEmailBisonEmailSentOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
...buildEmailBisonOutputs(),
|
||||
scheduledEmail: {
|
||||
id: { type: 'number', description: 'Scheduled email ID' },
|
||||
lead_id: { type: 'number', description: 'Lead ID' },
|
||||
sequence_step_id: { type: 'number', description: 'Sequence step ID' },
|
||||
sequence_step_order: { type: 'number', description: 'Sequence step order' },
|
||||
sequence_step_variant: { type: 'number', description: 'Sequence step variant' },
|
||||
email_subject: { type: 'string', description: 'Email subject' },
|
||||
email_body: { type: 'string', description: 'Email body HTML' },
|
||||
status: { type: 'string', description: 'Scheduled email status' },
|
||||
scheduled_date_est: { type: 'string', description: 'Scheduled date in EST' },
|
||||
scheduled_date_local: { type: 'string', description: 'Scheduled date in local timezone' },
|
||||
local_timezone: { type: 'string', description: 'Scheduled email local timezone' },
|
||||
sent_at: { type: 'string', description: 'Email sent timestamp' },
|
||||
opens: { type: 'number', description: 'Open count' },
|
||||
replies: { type: 'number', description: 'Reply count' },
|
||||
unique_opens: { type: 'number', description: 'Unique open count' },
|
||||
unique_replies: { type: 'number', description: 'Unique reply count' },
|
||||
interested: { type: 'string', description: 'Interested status' },
|
||||
raw_message_id: { type: 'string', description: 'Raw email message ID' },
|
||||
},
|
||||
campaignEvent: {
|
||||
id: { type: 'number', description: 'Campaign event ID' },
|
||||
event_type: { type: 'string', description: 'Campaign event type' },
|
||||
created_at_local: { type: 'string', description: 'Campaign event local creation timestamp' },
|
||||
local_timezone: { type: 'string', description: 'Campaign event local timezone' },
|
||||
created_at: { type: 'string', description: 'Campaign event creation timestamp' },
|
||||
},
|
||||
lead: {
|
||||
id: { type: 'number', description: 'Lead ID' },
|
||||
email: { type: 'string', description: 'Lead email address' },
|
||||
first_name: { type: 'string', description: 'Lead first name' },
|
||||
last_name: { type: 'string', description: 'Lead last name' },
|
||||
status: { type: 'string', description: 'Lead status' },
|
||||
title: { type: 'string', description: 'Lead title' },
|
||||
company: { type: 'string', description: 'Lead company' },
|
||||
custom_variables: { type: 'json', description: 'Lead custom variables' },
|
||||
emails_sent: { type: 'number', description: 'Lead emails sent count' },
|
||||
opens: { type: 'number', description: 'Lead open count' },
|
||||
unique_opens: { type: 'number', description: 'Lead unique open count' },
|
||||
replies: { type: 'number', description: 'Lead reply count' },
|
||||
unique_replies: { type: 'number', description: 'Lead unique reply count' },
|
||||
bounces: { type: 'number', description: 'Lead bounce count' },
|
||||
},
|
||||
campaign: {
|
||||
id: { type: 'number', description: 'Campaign ID' },
|
||||
name: { type: 'string', description: 'Campaign name' },
|
||||
},
|
||||
senderEmail: {
|
||||
id: { type: 'number', description: 'Sender email ID' },
|
||||
name: { type: 'string', description: 'Sender email name' },
|
||||
email: { type: 'string', description: 'Sender email address' },
|
||||
status: { type: 'string', description: 'Sender email status' },
|
||||
account_type: { type: 'string', description: 'Sender email connection type' },
|
||||
daily_limit: { type: 'number', description: 'Sender email daily limit' },
|
||||
emails_sent: { type: 'number', description: 'Sender email sent count' },
|
||||
replied: { type: 'number', description: 'Sender email replied count' },
|
||||
opened: { type: 'number', description: 'Sender email opened count' },
|
||||
unsubscribed: { type: 'number', description: 'Sender email unsubscribed count' },
|
||||
bounced: { type: 'number', description: 'Sender email bounced count' },
|
||||
unique_replies: { type: 'number', description: 'Sender email unique reply count' },
|
||||
unique_opens: { type: 'number', description: 'Sender email unique open count' },
|
||||
total_leads_contacted: { type: 'number', description: 'Sender email total leads contacted' },
|
||||
interested: { type: 'number', description: 'Sender email interested count' },
|
||||
created_at: { type: 'string', description: 'Sender email creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Sender email update timestamp' },
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export function buildEmailBisonLeadFirstContactedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonEmailSentOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonLeadUnsubscribedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonEmailSentOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonEmailOpenedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonEmailSentOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonLeadRepliedOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
...buildEmailBisonOutputs(),
|
||||
reply: {
|
||||
id: { type: 'number', description: 'Reply ID' },
|
||||
uuid: { type: 'string', description: 'Reply UUID' },
|
||||
email_subject: { type: 'string', description: 'Reply email subject' },
|
||||
interested: { type: 'boolean', description: 'Whether the reply is marked interested' },
|
||||
automated_reply: { type: 'boolean', description: 'Whether the reply is automated' },
|
||||
html_body: { type: 'string', description: 'Reply HTML body' },
|
||||
text_body: { type: 'string', description: 'Reply plain text body' },
|
||||
raw_body: { type: 'string', description: 'Raw MIME reply body' },
|
||||
headers: { type: 'string', description: 'Encoded raw email headers' },
|
||||
date_received: { type: 'string', description: 'Reply received timestamp' },
|
||||
from_name: { type: 'string', description: 'Reply sender name' },
|
||||
from_email_address: { type: 'string', description: 'Reply sender email address' },
|
||||
primary_to_email_address: { type: 'string', description: 'Primary recipient email address' },
|
||||
to: { type: 'json', description: 'Reply To recipients' },
|
||||
cc: { type: 'json', description: 'Reply CC recipients' },
|
||||
bcc: { type: 'json', description: 'Reply BCC recipients' },
|
||||
parent_id: { type: 'number', description: 'Parent reply ID' },
|
||||
reply_type: { type: 'string', description: 'Reply type' },
|
||||
folder: { type: 'string', description: 'Reply folder' },
|
||||
raw_message_id: { type: 'string', description: 'Raw email message ID' },
|
||||
created_at: { type: 'string', description: 'Reply creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Reply update timestamp' },
|
||||
attachments: { type: 'json', description: 'Reply attachments' },
|
||||
},
|
||||
campaignEvent: {
|
||||
id: { type: 'number', description: 'Campaign event ID' },
|
||||
event_type: { type: 'string', description: 'Campaign event type' },
|
||||
created_at_local: { type: 'string', description: 'Campaign event local creation timestamp' },
|
||||
local_timezone: { type: 'string', description: 'Campaign event local timezone' },
|
||||
created_at: { type: 'string', description: 'Campaign event creation timestamp' },
|
||||
},
|
||||
lead: {
|
||||
id: { type: 'number', description: 'Lead ID' },
|
||||
email: { type: 'string', description: 'Lead email address' },
|
||||
first_name: { type: 'string', description: 'Lead first name' },
|
||||
last_name: { type: 'string', description: 'Lead last name' },
|
||||
status: { type: 'string', description: 'Lead status' },
|
||||
title: { type: 'string', description: 'Lead title' },
|
||||
company: { type: 'string', description: 'Lead company' },
|
||||
custom_variables: { type: 'json', description: 'Lead custom variables' },
|
||||
emails_sent: { type: 'number', description: 'Lead emails sent count' },
|
||||
opens: { type: 'number', description: 'Lead open count' },
|
||||
unique_opens: { type: 'number', description: 'Lead unique open count' },
|
||||
replies: { type: 'number', description: 'Lead reply count' },
|
||||
unique_replies: { type: 'number', description: 'Lead unique reply count' },
|
||||
bounces: { type: 'number', description: 'Lead bounce count' },
|
||||
},
|
||||
campaign: {
|
||||
id: { type: 'number', description: 'Campaign ID' },
|
||||
name: { type: 'string', description: 'Campaign name' },
|
||||
},
|
||||
scheduledEmail: {
|
||||
id: { type: 'number', description: 'Scheduled email ID' },
|
||||
sequence_step_id: { type: 'number', description: 'Sequence step ID' },
|
||||
sequence_step_order: { type: 'number', description: 'Sequence step order' },
|
||||
sequence_step_variant: { type: 'number', description: 'Sequence step variant' },
|
||||
status: { type: 'string', description: 'Scheduled email status' },
|
||||
scheduled_date_est: { type: 'string', description: 'Scheduled date in EST' },
|
||||
scheduled_date_local: { type: 'string', description: 'Scheduled date in local timezone' },
|
||||
local_timezone: { type: 'string', description: 'Scheduled email local timezone' },
|
||||
sent_at: { type: 'string', description: 'Email sent timestamp' },
|
||||
opens: { type: 'number', description: 'Open count' },
|
||||
replies: { type: 'number', description: 'Reply count' },
|
||||
unique_opens: { type: 'number', description: 'Unique open count' },
|
||||
unique_replies: { type: 'number', description: 'Unique reply count' },
|
||||
interested: { type: 'string', description: 'Interested status' },
|
||||
raw_message_id: { type: 'string', description: 'Raw email message ID' },
|
||||
},
|
||||
senderEmail: {
|
||||
id: { type: 'number', description: 'Sender email ID' },
|
||||
name: { type: 'string', description: 'Sender email name' },
|
||||
email: { type: 'string', description: 'Sender email address' },
|
||||
status: { type: 'string', description: 'Sender email status' },
|
||||
account_type: { type: 'string', description: 'Sender email connection type' },
|
||||
daily_limit: { type: 'number', description: 'Sender email daily limit' },
|
||||
emails_sent: { type: 'number', description: 'Sender email sent count' },
|
||||
replied: { type: 'number', description: 'Sender email replied count' },
|
||||
opened: { type: 'number', description: 'Sender email opened count' },
|
||||
unsubscribed: { type: 'number', description: 'Sender email unsubscribed count' },
|
||||
bounced: { type: 'number', description: 'Sender email bounced count' },
|
||||
unique_replies: { type: 'number', description: 'Sender email unique reply count' },
|
||||
unique_opens: { type: 'number', description: 'Sender email unique open count' },
|
||||
total_leads_contacted: { type: 'number', description: 'Sender email total leads contacted' },
|
||||
interested: { type: 'number', description: 'Sender email interested count' },
|
||||
created_at: { type: 'string', description: 'Sender email creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Sender email update timestamp' },
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export function buildEmailBisonLeadInterestedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonLeadRepliedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonEmailBouncedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonLeadRepliedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonManualEmailSentOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
...buildEmailBisonOutputs(),
|
||||
reply: {
|
||||
id: { type: 'number', description: 'Reply ID' },
|
||||
email_subject: { type: 'string', description: 'Reply email subject' },
|
||||
interested: { type: 'boolean', description: 'Whether the reply is marked interested' },
|
||||
automated_reply: { type: 'boolean', description: 'Whether the reply is automated' },
|
||||
html_body: { type: 'string', description: 'Reply HTML body' },
|
||||
text_body: { type: 'string', description: 'Reply plain text body' },
|
||||
raw_body: { type: 'string', description: 'Raw MIME reply body' },
|
||||
headers: { type: 'string', description: 'Encoded raw email headers' },
|
||||
date_received: { type: 'string', description: 'Reply received timestamp' },
|
||||
reply_type: { type: 'string', description: 'Reply type' },
|
||||
from_name: { type: 'string', description: 'Reply sender name' },
|
||||
from_email_address: { type: 'string', description: 'Reply sender email address' },
|
||||
primary_to_email_address: { type: 'string', description: 'Primary recipient email address' },
|
||||
to: { type: 'json', description: 'Reply To recipients' },
|
||||
cc: { type: 'json', description: 'Reply CC recipients' },
|
||||
bcc: { type: 'json', description: 'Reply BCC recipients' },
|
||||
parent_id: { type: 'json', description: 'Parent reply ID' },
|
||||
folder: { type: 'string', description: 'Reply folder' },
|
||||
raw_message_id: { type: 'string', description: 'Raw email message ID' },
|
||||
created_at: { type: 'string', description: 'Reply creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Reply update timestamp' },
|
||||
attachments: { type: 'json', description: 'Reply attachments' },
|
||||
},
|
||||
lead: {
|
||||
id: { type: 'number', description: 'Lead ID' },
|
||||
email: { type: 'string', description: 'Lead email address' },
|
||||
first_name: { type: 'string', description: 'Lead first name' },
|
||||
last_name: { type: 'string', description: 'Lead last name' },
|
||||
status: { type: 'string', description: 'Lead status' },
|
||||
title: { type: 'string', description: 'Lead title' },
|
||||
company: { type: 'string', description: 'Lead company' },
|
||||
custom_variables: { type: 'json', description: 'Lead custom variables' },
|
||||
emails_sent: { type: 'number', description: 'Lead emails sent count' },
|
||||
opens: { type: 'number', description: 'Lead open count' },
|
||||
unique_opens: { type: 'number', description: 'Lead unique open count' },
|
||||
replies: { type: 'number', description: 'Lead reply count' },
|
||||
unique_replies: { type: 'number', description: 'Lead unique reply count' },
|
||||
bounces: { type: 'number', description: 'Lead bounce count' },
|
||||
},
|
||||
campaign: {
|
||||
id: { type: 'number', description: 'Campaign ID' },
|
||||
name: { type: 'string', description: 'Campaign name' },
|
||||
},
|
||||
scheduledEmail: {
|
||||
id: { type: 'number', description: 'Scheduled email ID' },
|
||||
sequence_step_id: { type: 'number', description: 'Sequence step ID' },
|
||||
sequence_step_order: { type: 'number', description: 'Sequence step order' },
|
||||
sequence_step_variant: { type: 'number', description: 'Sequence step variant' },
|
||||
status: { type: 'string', description: 'Scheduled email status' },
|
||||
scheduled_date_est: { type: 'string', description: 'Scheduled date in EST' },
|
||||
scheduled_date_local: { type: 'string', description: 'Scheduled date in local timezone' },
|
||||
local_timezone: { type: 'string', description: 'Scheduled email local timezone' },
|
||||
sent_at: { type: 'string', description: 'Email sent timestamp' },
|
||||
opens: { type: 'number', description: 'Open count' },
|
||||
replies: { type: 'number', description: 'Reply count' },
|
||||
unique_opens: { type: 'number', description: 'Unique open count' },
|
||||
unique_replies: { type: 'number', description: 'Unique reply count' },
|
||||
interested: { type: 'json', description: 'Interested status' },
|
||||
raw_message_id: { type: 'string', description: 'Raw email message ID' },
|
||||
},
|
||||
senderEmail: {
|
||||
id: { type: 'number', description: 'Sender email ID' },
|
||||
name: { type: 'string', description: 'Sender email name' },
|
||||
email: { type: 'string', description: 'Sender email address' },
|
||||
status: { type: 'string', description: 'Sender email status' },
|
||||
account_type: { type: 'string', description: 'Sender email connection type' },
|
||||
daily_limit: { type: 'number', description: 'Sender email daily limit' },
|
||||
emails_sent: { type: 'number', description: 'Sender email sent count' },
|
||||
replied: { type: 'number', description: 'Sender email replied count' },
|
||||
opened: { type: 'number', description: 'Sender email opened count' },
|
||||
unsubscribed: { type: 'number', description: 'Sender email unsubscribed count' },
|
||||
bounced: { type: 'number', description: 'Sender email bounced count' },
|
||||
unique_replies: { type: 'number', description: 'Sender email unique reply count' },
|
||||
unique_opens: { type: 'number', description: 'Sender email unique open count' },
|
||||
total_leads_contacted: { type: 'number', description: 'Sender email total leads contacted' },
|
||||
interested: { type: 'number', description: 'Sender email interested count' },
|
||||
created_at: { type: 'string', description: 'Sender email creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Sender email update timestamp' },
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export function buildEmailBisonTagAttachedOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
...buildEmailBisonOutputs(),
|
||||
tagId: { type: 'number', description: 'Email Bison tag ID' },
|
||||
tagName: { type: 'string', description: 'Email Bison tag name' },
|
||||
taggableId: { type: 'number', description: 'ID of the tagged resource' },
|
||||
taggableType: { type: 'string', description: 'Type of the tagged resource' },
|
||||
}
|
||||
}
|
||||
|
||||
export function buildEmailBisonTagRemovedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonTagAttachedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonEmailAccountAddedOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
...buildEmailBisonOutputs(),
|
||||
senderEmail: {
|
||||
id: { type: 'number', description: 'Sender email ID' },
|
||||
name: { type: 'string', description: 'Sender email name' },
|
||||
email: { type: 'string', description: 'Sender email address' },
|
||||
status: { type: 'string', description: 'Sender email status' },
|
||||
account_type: { type: 'string', description: 'Sender email connection type' },
|
||||
daily_limit: { type: 'number', description: 'Sender email daily limit' },
|
||||
emails_sent: { type: 'number', description: 'Sender email sent count' },
|
||||
replied: { type: 'number', description: 'Sender email replied count' },
|
||||
opened: { type: 'number', description: 'Sender email opened count' },
|
||||
unsubscribed: { type: 'number', description: 'Sender email unsubscribed count' },
|
||||
bounced: { type: 'number', description: 'Sender email bounced count' },
|
||||
unique_replies: { type: 'number', description: 'Sender email unique reply count' },
|
||||
unique_opens: { type: 'number', description: 'Sender email unique open count' },
|
||||
total_leads_contacted: { type: 'number', description: 'Sender email total leads contacted' },
|
||||
interested: { type: 'number', description: 'Sender email interested count' },
|
||||
created_at: { type: 'string', description: 'Sender email creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Sender email update timestamp' },
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export function buildEmailBisonEmailAccountRemovedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonEmailAccountAddedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonEmailAccountDisconnectedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonEmailAccountAddedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonEmailAccountReconnectedOutputs(): Record<string, TriggerOutput> {
|
||||
return buildEmailBisonEmailAccountAddedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonWarmupDisabledReceivingBouncesOutputs(): Record<
|
||||
string,
|
||||
TriggerOutput
|
||||
> {
|
||||
return buildEmailBisonEmailAccountAddedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonWarmupDisabledCausingBouncesOutputs(): Record<
|
||||
string,
|
||||
TriggerOutput
|
||||
> {
|
||||
return buildEmailBisonEmailAccountAddedOutputs()
|
||||
}
|
||||
|
||||
export function buildEmailBisonUntrackedReplyReceivedOutputs(): Record<string, TriggerOutput> {
|
||||
return {
|
||||
...buildEmailBisonOutputs(),
|
||||
reply: {
|
||||
id: { type: 'number', description: 'Reply ID' },
|
||||
uuid: { type: 'string', description: 'Reply UUID' },
|
||||
email_subject: { type: 'string', description: 'Reply email subject' },
|
||||
interested: { type: 'boolean', description: 'Whether the reply is marked interested' },
|
||||
automated_reply: { type: 'boolean', description: 'Whether the reply is automated' },
|
||||
html_body: { type: 'string', description: 'Reply HTML body' },
|
||||
text_body: { type: 'string', description: 'Reply plain text body' },
|
||||
raw_body: { type: 'string', description: 'Raw MIME reply body' },
|
||||
headers: { type: 'string', description: 'Encoded raw email headers' },
|
||||
date_received: { type: 'string', description: 'Reply received timestamp' },
|
||||
from_name: { type: 'string', description: 'Reply sender name' },
|
||||
from_email_address: { type: 'string', description: 'Reply sender email address' },
|
||||
primary_to_email_address: { type: 'string', description: 'Primary recipient email address' },
|
||||
to: { type: 'json', description: 'Reply To recipients' },
|
||||
cc: { type: 'json', description: 'Reply CC recipients' },
|
||||
bcc: { type: 'json', description: 'Reply BCC recipients' },
|
||||
parent_id: { type: 'number', description: 'Parent reply ID' },
|
||||
reply_type: { type: 'string', description: 'Reply type' },
|
||||
folder: { type: 'string', description: 'Reply folder' },
|
||||
raw_message_id: { type: 'string', description: 'Raw email message ID' },
|
||||
created_at: { type: 'string', description: 'Reply creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Reply update timestamp' },
|
||||
attachments: { type: 'json', description: 'Reply attachments' },
|
||||
},
|
||||
senderEmail: {
|
||||
id: { type: 'number', description: 'Sender email ID' },
|
||||
name: { type: 'string', description: 'Sender email name' },
|
||||
email: { type: 'string', description: 'Sender email address' },
|
||||
status: { type: 'string', description: 'Sender email status' },
|
||||
account_type: { type: 'string', description: 'Sender email connection type' },
|
||||
daily_limit: { type: 'number', description: 'Sender email daily limit' },
|
||||
emails_sent: { type: 'number', description: 'Sender email sent count' },
|
||||
replied: { type: 'number', description: 'Sender email replied count' },
|
||||
opened: { type: 'number', description: 'Sender email opened count' },
|
||||
unsubscribed: { type: 'number', description: 'Sender email unsubscribed count' },
|
||||
bounced: { type: 'number', description: 'Sender email bounced count' },
|
||||
unique_replies: { type: 'number', description: 'Sender email unique reply count' },
|
||||
unique_opens: { type: 'number', description: 'Sender email unique open count' },
|
||||
total_leads_contacted: { type: 'number', description: 'Sender email total leads contacted' },
|
||||
interested: { type: 'number', description: 'Sender email interested count' },
|
||||
created_at: { type: 'string', description: 'Sender email creation timestamp' },
|
||||
updated_at: { type: 'string', description: 'Sender email update timestamp' },
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export function getEmailBisonEventTypeForTrigger(triggerId: string): string | undefined {
|
||||
return EMAILBISON_TRIGGER_TO_EVENT_TYPE[
|
||||
triggerId as keyof typeof EMAILBISON_TRIGGER_TO_EVENT_TYPE
|
||||
]
|
||||
}
|
||||
|
||||
export function isEmailBisonEventMatch(triggerId: string, body: Record<string, unknown>): boolean {
|
||||
const expectedEventType = getEmailBisonEventTypeForTrigger(triggerId)
|
||||
if (!expectedEventType) return false
|
||||
|
||||
const event = body.event
|
||||
if (!isRecordLike(event)) return false
|
||||
|
||||
const actualEventType = event.type
|
||||
return typeof actualEventType === 'string' && actualEventType.toLowerCase() === expectedEventType
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonWarmupDisabledCausingBouncesOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonWarmupDisabledCausingBouncesTrigger: TriggerConfig = {
|
||||
id: 'emailbison_warmup_disabled_causing_bounces',
|
||||
name: 'Email Bison Warmup Disabled Causing Bounces',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when warmup is disabled for a sender email causing too many bounces',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_warmup_disabled_causing_bounces',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Warmup Disabled Causing Bounces'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_warmup_disabled_causing_bounces'),
|
||||
}),
|
||||
outputs: buildEmailBisonWarmupDisabledCausingBouncesOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { EmailBisonIcon } from '@/components/icons'
|
||||
import { buildTriggerSubBlocks } from '@/triggers'
|
||||
import {
|
||||
buildEmailBisonExtraFields,
|
||||
buildEmailBisonWarmupDisabledReceivingBouncesOutputs,
|
||||
emailBisonSetupInstructions,
|
||||
emailBisonTriggerOptions,
|
||||
} from '@/triggers/emailbison/utils'
|
||||
import type { TriggerConfig } from '@/triggers/types'
|
||||
|
||||
export const emailBisonWarmupDisabledReceivingBouncesTrigger: TriggerConfig = {
|
||||
id: 'emailbison_warmup_disabled_receiving_bounces',
|
||||
name: 'Email Bison Warmup Disabled Receiving Bounces',
|
||||
provider: 'emailbison',
|
||||
description: 'Trigger when warmup is disabled for a sender email receiving too many bounces',
|
||||
version: '1.0.0',
|
||||
icon: EmailBisonIcon,
|
||||
subBlocks: buildTriggerSubBlocks({
|
||||
triggerId: 'emailbison_warmup_disabled_receiving_bounces',
|
||||
triggerOptions: emailBisonTriggerOptions,
|
||||
setupInstructions: emailBisonSetupInstructions('Warmup Disabled Receiving Bounces'),
|
||||
extraFields: buildEmailBisonExtraFields('emailbison_warmup_disabled_receiving_bounces'),
|
||||
}),
|
||||
outputs: buildEmailBisonWarmupDisabledReceivingBouncesOutputs(),
|
||||
webhook: { method: 'POST', headers: { 'Content-Type': 'application/json' } },
|
||||
}
|
||||
Reference in New Issue
Block a user