Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../../../.eslintrc.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-activecampaign
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-activecampaign` to build the library.
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "@activepieces/piece-activecampaign",
|
||||
"version": "0.0.11"
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"name": "pieces-activecampaign",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/activecampaign/src",
|
||||
"projectType": "library",
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/activecampaign",
|
||||
"tsConfig": "packages/pieces/community/activecampaign/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/activecampaign/package.json",
|
||||
"main": "packages/pieces/community/activecampaign/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/activecampaign/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/activecampaign/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build",
|
||||
"prebuild"
|
||||
]
|
||||
},
|
||||
"publish": {
|
||||
"command": "node tools/scripts/publish.mjs pieces-activecampaign {args.ver} {args.tag}",
|
||||
"dependsOn": [
|
||||
"build"
|
||||
]
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
},
|
||||
"prebuild": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/pieces/community/activecampaign",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
},
|
||||
"tags": []
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "E-Mail-Marketing, Marketing-Automatisierung und CRM-Tools benötigen Sie, um unglaubliche Kundenerlebnisse zu schaffen.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "API-Schlüssel",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nUm Ihre ActiveCampaign API URL und Ihren Schlüssel zu erhalten, folgen Sie diesen Schritten:\n\n1. Loggen Sie sich in Ihr ActiveCampaign Konto ein.\n2. Navigieren Sie zu **Einstellungen->Entwickler** Abschnitt.\n3. Unter **API Zugriff** finden Sie Ihre API-URL und Schlüssel.\n",
|
||||
"Add Contact to Account": "Kontakt zum Konto hinzufügen",
|
||||
"Add Tag to Contact": "Tag zu Kontakt hinzufügen",
|
||||
"Create Account": "Konto erstellen",
|
||||
"Create Contact": "Kontakt erstellen",
|
||||
"Update Account": "Konto aktualisieren",
|
||||
"Update Contact": "Kontakt aktualisieren",
|
||||
"Subscribe or Unsubscribe Contact From List": "Kontaktliste abonnieren oder abbestellen",
|
||||
"Adds a contact to an ActiveCampaign account.": "Fügt einen Kontakt zu einem ActiveCampaign Konto hinzu.",
|
||||
"Adds a tag to contact.": "Fügt einen Tag zum Kontakt hinzu.",
|
||||
"Creates a new account.": "Erstellt ein neues Konto.",
|
||||
"Creates a new contact.": "Erstellt einen neuen Kontakt.",
|
||||
"Updates an account.": "Aktualisiert ein Konto.",
|
||||
"Updates an existing contact.": "Aktualisiert einen bestehenden Kontakt.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Abonniert einen Kontakt zu einer Liste, der er derzeit nicht zugeordnet ist, oder löscht einen Kontakt aus einer Liste aus.",
|
||||
"Contact ID": "Kontakt-ID",
|
||||
"Account ID": "Konto-ID",
|
||||
"Job Title": "Job Titel",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Kontoname",
|
||||
"Account URL": "Account-URL",
|
||||
"Account Custom Fields": "Benutzerdefinierte Felder",
|
||||
"Email": "E-Mail",
|
||||
"First Name": "Vorname",
|
||||
"Last Name": "Nachname",
|
||||
"Phone": "Telefon",
|
||||
"Contact Custom Fields": "Benutzerdefinierte Kontaktfelder",
|
||||
"List": "Liste",
|
||||
"Action": "Aktion",
|
||||
"Subscribe": "Abonnieren",
|
||||
"Unsubscribe": "Abmelden",
|
||||
"Deal Task Completed": "Angebotsaufgabe abgeschlossen",
|
||||
"New Contact Note": "Neue Kontakt-Notiz",
|
||||
"New Contact Task": "Neue Kontaktaufgabe",
|
||||
"New Deal Added or Updated": "Neuer Deal hinzugefügt oder aktualisiert",
|
||||
"New or Updated Account": "Neues oder aktualisiertes Konto",
|
||||
"New Deal Note": "Neue Deal-Notiz",
|
||||
"New Deal Task": "Neue Angebotsaufgabe",
|
||||
"Tag Added or Removed From Contact": "Tag hinzugefügt oder vom Kontakt entfernt",
|
||||
"Updated Contact": "Kontakt aktualisiert",
|
||||
"Triggers when a deal task has been completed.": "Löst aus, wenn eine Deal-Aufgabe erledigt wurde.",
|
||||
"Triggers when a new contact note is added.": "Wird ausgelöst, wenn eine neue Kontakt-Notiz hinzugefügt wird.",
|
||||
"Triggers when a new contact task is added.": "Wird ausgelöst, wenn eine neue Kontaktaufgabe hinzugefügt wird.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Wird ausgelöst, wenn einen neuen Deal erstellt oder ein bestehender Deal aktualisiert wird.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Wird ausgelöst, wenn ein neues Konto hinzugefügt wird oder die Daten eines bestehenden Kontos aktualisiert werden",
|
||||
"Triggers when a new deal note is created.": "Wird ausgelöst, wenn ein neuer Deal-Hinweis erstellt wird.",
|
||||
"Triggers when a new deal task is created.": "Wird ausgelöst, wenn eine neue Deal-Aufgabe erstellt wird.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Wird ausgelöst, wenn ein Tag hinzugefügt oder von einem Kontakt entfernt wird",
|
||||
"Triggers when an existing contact details are updated.": "Wird ausgelöst, wenn eine existierende Kontaktinformation aktualisiert wird."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "Herramientas de marketing por correo electrónico, automatización de marketing y CRM que necesita para crear increíbles experiencias de clientes.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "Clave API",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nPara obtener la llave de API URL de Campaña Activa, debes seguir estos pasos:\n\n1. Iniciar sesión en tu cuenta Campaña Activa.\n2. Navegar a la sección **Ajustes -> Desarrollador**.\n3. Debajo de ** Acceso API**, puedes encontrar tu API URL y la llave.\n",
|
||||
"Add Contact to Account": "Añadir contacto a cuenta",
|
||||
"Add Tag to Contact": "Añadir etiqueta al contacto",
|
||||
"Create Account": "Crear cuenta",
|
||||
"Create Contact": "Crear contacto",
|
||||
"Update Account": "Actualizar cuenta",
|
||||
"Update Contact": "Actualizar contacto",
|
||||
"Subscribe or Unsubscribe Contact From List": "Suscribirse o cancelar contacto de la lista",
|
||||
"Adds a contact to an ActiveCampaign account.": "Añade un contacto a una cuenta de Campaña Activa.",
|
||||
"Adds a tag to contact.": "Añade una etiqueta al contacto.",
|
||||
"Creates a new account.": "Crea una nueva cuenta.",
|
||||
"Creates a new contact.": "Crea un nuevo contacto.",
|
||||
"Updates an account.": "Actualiza una cuenta.",
|
||||
"Updates an existing contact.": "Actualiza un contacto existente.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Suscribirse a un contacto a una lista con la que no está asociada actualmente, o Cancelar suscripciones a un contacto de una lista está asociado actualmente.",
|
||||
"Contact ID": "ID de contacto",
|
||||
"Account ID": "ID de cuenta",
|
||||
"Job Title": "Trabajo",
|
||||
"Tag ID": "Etiqueta ID",
|
||||
"Account Name": "Nombre de cuenta",
|
||||
"Account URL": "URL de la cuenta",
|
||||
"Account Custom Fields": "Campos personalizados del cliente",
|
||||
"Email": "E-mail",
|
||||
"First Name": "Nombre",
|
||||
"Last Name": "Apellido",
|
||||
"Phone": "Teléfono",
|
||||
"Contact Custom Fields": "Contactar campos personalizados",
|
||||
"List": "Lista",
|
||||
"Action": "Accin",
|
||||
"Subscribe": "Suscribirse",
|
||||
"Unsubscribe": "Darse de baja",
|
||||
"Deal Task Completed": "Tarea de oferta completada",
|
||||
"New Contact Note": "Nueva nota de contacto",
|
||||
"New Contact Task": "Nueva Tarea de Contacto",
|
||||
"New Deal Added or Updated": "Nueva oferta añadida o actualizada",
|
||||
"New or Updated Account": "Cuenta nueva o actualizada",
|
||||
"New Deal Note": "Nueva nota de oferta",
|
||||
"New Deal Task": "Nueva tarea de oferta",
|
||||
"Tag Added or Removed From Contact": "Etiqueta añadida o eliminada del contacto",
|
||||
"Updated Contact": "Contacto actualizado",
|
||||
"Triggers when a deal task has been completed.": "Se activa cuando se ha completado una tarea de acuerdo.",
|
||||
"Triggers when a new contact note is added.": "Se activa cuando se añade una nueva nota de contacto.",
|
||||
"Triggers when a new contact task is added.": "Se activa cuando se añade una nueva tarea de contacto.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Se activa cuando se crea una nueva operación o se actualiza una operación existente.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Dispara cuando se agrega una nueva cuenta o se actualizan los detalles de una cuenta existente",
|
||||
"Triggers when a new deal note is created.": "Se activa cuando se crea una nueva nota de negocio.",
|
||||
"Triggers when a new deal task is created.": "Se activa cuando se crea una nueva tarea de trato.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Dispara cuando se agrega o elimina una etiqueta de un contacto",
|
||||
"Triggers when an existing contact details are updated.": "Se activa cuando se actualizan los datos de contacto existentes."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "Le marketing par courriel, l'automatisation du marketing et les outils CRM dont vous avez besoin pour créer des expériences clients incroyables.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "Clé API",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n",
|
||||
"Add Contact to Account": "Ajouter un contact au compte",
|
||||
"Add Tag to Contact": "Ajouter un tag au contact",
|
||||
"Create Account": "Créer un compte",
|
||||
"Create Contact": "Créer un contact",
|
||||
"Update Account": "Mettre à jour le compte",
|
||||
"Update Contact": "Mettre à jour le contact",
|
||||
"Subscribe or Unsubscribe Contact From List": "S'abonner ou se désabonner de la liste des contacts",
|
||||
"Adds a contact to an ActiveCampaign account.": "Ajoute un contact à un compte ActiveCampagne.",
|
||||
"Adds a tag to contact.": "Ajoute un tag au contact.",
|
||||
"Creates a new account.": "Crée un nouveau compte.",
|
||||
"Creates a new contact.": "Crée un nouveau contact.",
|
||||
"Updates an account.": "Met à jour un compte.",
|
||||
"Updates an existing contact.": "Met à jour un contact existant.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Abonne un Contact à une Liste avec laquelle il n'est actuellement pas associé ou désabonne un Contact d'une liste est actuellement associé.",
|
||||
"Contact ID": "ID du contact",
|
||||
"Account ID": "ID du compte client",
|
||||
"Job Title": "Titre du poste",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Nom du compte",
|
||||
"Account URL": "URL du compte",
|
||||
"Account Custom Fields": "Champs personnalisés du cpte client",
|
||||
"Email": "Courriel",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Phone": "Téléphone",
|
||||
"Contact Custom Fields": "Champs personnalisés du contact",
|
||||
"List": "Liste",
|
||||
"Action": "Action",
|
||||
"Subscribe": "S'abonner",
|
||||
"Unsubscribe": "Se désabonner",
|
||||
"Deal Task Completed": "Tâche de transaction terminée",
|
||||
"New Contact Note": "Nouvelle note de contact",
|
||||
"New Contact Task": "Nouvelle tâche de contact",
|
||||
"New Deal Added or Updated": "Nouvelle offre ajoutée ou mise à jour",
|
||||
"New or Updated Account": "Nouveau ou mis à jour du compte",
|
||||
"New Deal Note": "Note sur la nouvelle offre",
|
||||
"New Deal Task": "Nouvelle tâche",
|
||||
"Tag Added or Removed From Contact": "Étiquette ajoutée ou retirée du contact",
|
||||
"Updated Contact": "Contact mis à jour",
|
||||
"Triggers when a deal task has been completed.": "Déclenche quand une tâche de transaction est terminée.",
|
||||
"Triggers when a new contact note is added.": "Déclenche quand une nouvelle note de contact est ajoutée.",
|
||||
"Triggers when a new contact task is added.": "Déclenche quand une nouvelle tâche de contact est ajoutée.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Déclenche lorsqu'une nouvelle transaction est créée ou qu'une transaction existante est mise à jour.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Déclenche lorsqu'un nouveau compte est ajouté ou les coordonnées d'un compte existant sont mises à jour",
|
||||
"Triggers when a new deal note is created.": "Déclenche quand une nouvelle note d'affaire est créée.",
|
||||
"Triggers when a new deal task is created.": "Déclenche quand une nouvelle tâche de transaction est créée.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Déclenche lorsqu'un Tag est ajouté ou retiré d'un Contact",
|
||||
"Triggers when an existing contact details are updated.": "Déclenche lorsqu'un contact existant est mis à jour."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "メールマーケティング、マーケティングオートメーション、CRMツールを活用することで、驚くほどのカスタマーエクスペリエンスを実現できます。",
|
||||
"API URL": "API URL",
|
||||
"API Key": "API キー",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n",
|
||||
"Add Contact to Account": "アカウントに連絡先を追加",
|
||||
"Add Tag to Contact": "連絡先にタグを追加",
|
||||
"Create Account": "アカウントを作成",
|
||||
"Create Contact": "連絡先を作成",
|
||||
"Update Account": "アカウントを更新",
|
||||
"Update Contact": "連絡先を更新",
|
||||
"Subscribe or Unsubscribe Contact From List": "一覧から連絡先を購読または購読解除する",
|
||||
"Adds a contact to an ActiveCampaign account.": "ActiveCampaignアカウントに連絡先を追加します。",
|
||||
"Adds a tag to contact.": "連絡先にタグを追加",
|
||||
"Creates a new account.": "新しいアカウントを作成します。",
|
||||
"Creates a new contact.": "新しい連絡先を作成します。",
|
||||
"Updates an account.": "アカウントを更新する。",
|
||||
"Updates an existing contact.": "既存のコンタクトを更新します。",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "現在関連付けられていないリストに連絡先を登録したり、リストから連絡先を登録解除したりします。",
|
||||
"Contact ID": "連絡先ID",
|
||||
"Account ID": "アカウントID",
|
||||
"Job Title": "役職名",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "口座名",
|
||||
"Account URL": "アカウントのURL",
|
||||
"Account Custom Fields": "アカウントのカスタムフィールド",
|
||||
"Email": "Eメールアドレス",
|
||||
"First Name": "名",
|
||||
"Last Name": "姓",
|
||||
"Phone": "電話番号",
|
||||
"Contact Custom Fields": "連絡のカスタムフィールド",
|
||||
"List": "リスト",
|
||||
"Action": "アクション",
|
||||
"Subscribe": "購読する",
|
||||
"Unsubscribe": "購読解除",
|
||||
"Deal Task Completed": "タスクを処理しました",
|
||||
"New Contact Note": "新しい連絡先メモ",
|
||||
"New Contact Task": "新しい連絡先タスク",
|
||||
"New Deal Added or Updated": "新しい取引が追加または更新されました",
|
||||
"New or Updated Account": "新規または更新されたアカウント",
|
||||
"New Deal Note": "新しい取引メモ",
|
||||
"New Deal Task": "新しい取引タスク",
|
||||
"Tag Added or Removed From Contact": "連絡先からタグが追加または削除されました",
|
||||
"Updated Contact": "連絡先の更新",
|
||||
"Triggers when a deal task has been completed.": "ディールタスクが完了したときに発生します。",
|
||||
"Triggers when a new contact note is added.": "新しい連絡先ノートが追加されたときにトリガーされます。",
|
||||
"Triggers when a new contact task is added.": "新しい連絡先タスクが追加されたときにトリガーします。",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "新しい取引が作成されたり、既存の取引が更新されたときに発生します。",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "新しいアカウントが追加された時、または既存のアカウントの詳細が更新されたときにトリガーされます。",
|
||||
"Triggers when a new deal note is created.": "新しいディールノートが作成されたときにトリガーされます。",
|
||||
"Triggers when a new deal task is created.": "新しい取引タスクが作成されたときにトリガーされます。",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "連絡先からタグが追加または削除されたときにトリガーします",
|
||||
"Triggers when an existing contact details are updated.": "既存の連絡先詳細が更新されたときにトリガーされます。"
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "E-mail marketing, marketing automatisering en CRM tools die u nodig heeft om ongelooflijke klanten ervaringen te maken.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "API Sleutel",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nOm uw ActiveCampaign API URL en Key te verkrijgen, volg de volgende stappen:\n\n1. Log in op uw ActiveCampaign account.\n2. Navigeer naar **Instellingen->Ontwikkelaar** sectie.\n3. Onder **API Access** ,vind je je API URL en Key.\n",
|
||||
"Add Contact to Account": "Contactpersoon toevoegen aan account",
|
||||
"Add Tag to Contact": "Tag aan contactpersoon toevoegen",
|
||||
"Create Account": "Account Aanmaken",
|
||||
"Create Contact": "Contactpersoon aanmaken",
|
||||
"Update Account": "Account bijwerken",
|
||||
"Update Contact": "Contactpersoon bijwerken",
|
||||
"Subscribe or Unsubscribe Contact From List": "Abonneren of uitschrijven van contact van lijst",
|
||||
"Adds a contact to an ActiveCampaign account.": "Voegt een contactpersoon toe aan een ActiveCampaign account.",
|
||||
"Adds a tag to contact.": "Voegt een tag toe om contact op te nemen",
|
||||
"Creates a new account.": "Maakt een nieuwe account aan.",
|
||||
"Creates a new contact.": "Maakt een nieuw contact aan.",
|
||||
"Updates an account.": "Een account bijwerken.",
|
||||
"Updates an existing contact.": "Werkt een bestaand contact bij.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Abonneert u een contactpersoon op een lijst die momenteel niet gekoppeld is aan of meldt u af van een contactpersoon uit een lijst.",
|
||||
"Contact ID": "Contact ID",
|
||||
"Account ID": "ID klant",
|
||||
"Job Title": "Job titel",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Klant naam",
|
||||
"Account URL": "Account URL",
|
||||
"Account Custom Fields": "Klant aangepaste velden",
|
||||
"Email": "E-mail",
|
||||
"First Name": "Voornaam",
|
||||
"Last Name": "Achternaam",
|
||||
"Phone": "Telefoonnummer",
|
||||
"Contact Custom Fields": "Contact Custom Velden",
|
||||
"List": "Klantenlijst",
|
||||
"Action": "actie",
|
||||
"Subscribe": "Abonneren",
|
||||
"Unsubscribe": "Afmelden",
|
||||
"Deal Task Completed": "Deal Taak voltooid",
|
||||
"New Contact Note": "Nieuwe contact notitie",
|
||||
"New Contact Task": "Nieuwe contacttaak",
|
||||
"New Deal Added or Updated": "Nieuwe deal toegevoegd of bijgewerkt",
|
||||
"New or Updated Account": "Nieuw of geüpdatet account",
|
||||
"New Deal Note": "Nieuwe deal notitie",
|
||||
"New Deal Task": "Nieuwe aanbieding taak",
|
||||
"Tag Added or Removed From Contact": "Tag toegevoegd of verwijderd van contact",
|
||||
"Updated Contact": "Contact bijgewerkt",
|
||||
"Triggers when a deal task has been completed.": "Triggert wanneer een transactie taak is voltooid.",
|
||||
"Triggers when a new contact note is added.": "Triggert wanneer een nieuwe contactnotitie wordt toegevoegd.",
|
||||
"Triggers when a new contact task is added.": "Activeert wanneer een nieuwe contacttaak is toegevoegd.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Triggert wanneer een nieuwe transactie wordt aangemaakt of een bestaande deal wordt bijgewerkt.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Triggert wanneer een nieuw account is toegevoegd of bestaande accountgegevens worden bijgewerkt",
|
||||
"Triggers when a new deal note is created.": "Triggert wanneer een nieuwe transactienotitie wordt aangemaakt.",
|
||||
"Triggers when a new deal task is created.": "Triggert wanneer een nieuwe transactie taak wordt aangemaakt.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Triggert wanneer een Tag wordt toegevoegd of verwijderd uit een contactpersoon",
|
||||
"Triggers when an existing contact details are updated.": "Triggert wanneer bestaande contactgegevens worden bijgewerkt."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "Marketing por e-mail, automação de marketing e ferramentas de CRM que você precisa para criar experiências incríveis para o cliente.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "Chave de API",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nPara obter sua Campanha Ativa API URL e chave, seguir esses passos:\n1. Acessar sua conta Campanha Ativa.\n2. Navegar para seção **Configurações->Desenvolvedor**\n3. Sob **Acesso API** você encontrará sua API URL e Chave.\n",
|
||||
"Add Contact to Account": "Adicionar contato a conta",
|
||||
"Add Tag to Contact": "Adicionar Tag ao Contato",
|
||||
"Create Account": "Criar conta",
|
||||
"Create Contact": "Criar contato",
|
||||
"Update Account": "Atualizar conta",
|
||||
"Update Contact": "Atualizar contato",
|
||||
"Subscribe or Unsubscribe Contact From List": "Inscrever-se ou Cancelar Contato na Lista de Contatos",
|
||||
"Adds a contact to an ActiveCampaign account.": "Adiciona um contato a uma conta ActiveCampaign",
|
||||
"Adds a tag to contact.": "Adiciona uma etiqueta para contato.",
|
||||
"Creates a new account.": "Cria uma nova conta.",
|
||||
"Creates a new contact.": "Cria um novo contato.",
|
||||
"Updates an account.": "Atualiza uma conta.",
|
||||
"Updates an existing contact.": "Atualiza um contato existente.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Assinar um Contato a uma Lista com quem ele não está atualmente associado, ou cancelar a assinatura de um Contato a partir de uma lista está atualmente associado.",
|
||||
"Contact ID": "ID do contato",
|
||||
"Account ID": "ID da Conta",
|
||||
"Job Title": "Título do Cargo",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Nome da Conta",
|
||||
"Account URL": "URL da Conta",
|
||||
"Account Custom Fields": "Campos personalizados de clientes",
|
||||
"Email": "e-mail",
|
||||
"First Name": "Nome",
|
||||
"Last Name": "Sobrenome",
|
||||
"Phone": "Smartphone",
|
||||
"Contact Custom Fields": "Campos personalizados de contato",
|
||||
"List": "Lista",
|
||||
"Action": "Acão",
|
||||
"Subscribe": "Inscrever-se",
|
||||
"Unsubscribe": "Desinscrever",
|
||||
"Deal Task Completed": "Tarefa de negócio concluída",
|
||||
"New Contact Note": "Nova Nota de Contato",
|
||||
"New Contact Task": "Nova tarefa de contato",
|
||||
"New Deal Added or Updated": "Nova Oferta adicionada ou atualizada",
|
||||
"New or Updated Account": "Conta nova ou atualizada",
|
||||
"New Deal Note": "Nova Nota de Oferta",
|
||||
"New Deal Task": "Nova tarefa de negócio",
|
||||
"Tag Added or Removed From Contact": "Tag adicionada ou removida do contato",
|
||||
"Updated Contact": "Contato atualizado",
|
||||
"Triggers when a deal task has been completed.": "Dispara quando uma tarefa de negócio for concluída.",
|
||||
"Triggers when a new contact note is added.": "Aciona quando uma nova nota de contato é adicionada.",
|
||||
"Triggers when a new contact task is added.": "Aciona quando uma nova tarefa de contato é adicionada.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Aciona quando uma nova operação é criada ou uma operação existente é atualizada.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Dispara quando uma nova conta é adicionada ou os detalhes de uma conta existente são atualizados",
|
||||
"Triggers when a new deal note is created.": "Aciona quando uma nova nota de negócio é criada.",
|
||||
"Triggers when a new deal task is created.": "Aciona quando uma nova tarefa de negócio é criada.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Aciona quando uma Tag é adicionada ou removida de um Contato",
|
||||
"Triggers when an existing contact details are updated.": "Aciona quando detalhes de contato existentes são atualizados."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"ActiveCampaign": "Активная Кампания",
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "Электронный маркетинг, маркетинговая автоматизация и CRM инструменты, необходимые для создания невероятных впечатлений от клиентов.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "Ключ API",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n",
|
||||
"Add Contact to Account": "Добавить контакт в аккаунт",
|
||||
"Add Tag to Contact": "Добавить тег в контакт",
|
||||
"Create Account": "Создать Аккаунт",
|
||||
"Create Contact": "Создать контакт",
|
||||
"Update Account": "Обновить аккаунт",
|
||||
"Update Contact": "Обновить контакт",
|
||||
"Subscribe or Unsubscribe Contact From List": "Подписаться или Отписаться от контакта из списка",
|
||||
"Adds a contact to an ActiveCampaign account.": "Добавляет контакт с учетной записью Activeкампании.",
|
||||
"Adds a tag to contact.": "Добавляет тег контакту.",
|
||||
"Creates a new account.": "Создать новую учетную запись.",
|
||||
"Creates a new contact.": "Создает новый контакт.",
|
||||
"Updates an account.": "Обновление учетной записи.",
|
||||
"Updates an existing contact.": "Обновляет существующий контакт.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Подписаться на контакт из списка, с которым он в настоящее время не связан или отписаться от контакта из списка в настоящее время связан с.",
|
||||
"Contact ID": "ID контакта",
|
||||
"Account ID": "ID клиента",
|
||||
"Job Title": "Заголовок",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Имя аккаунта",
|
||||
"Account URL": "URL аккаунта",
|
||||
"Account Custom Fields": "Пользовательские поля клиента",
|
||||
"Email": "Почта",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Phone": "Телефон",
|
||||
"Contact Custom Fields": "Пользовательские поля контакта",
|
||||
"List": "Список",
|
||||
"Action": "Действие",
|
||||
"Subscribe": "Подписаться",
|
||||
"Unsubscribe": "Отписаться",
|
||||
"Deal Task Completed": "Задача на сделку выполнена",
|
||||
"New Contact Note": "Новая контактная заметка",
|
||||
"New Contact Task": "Новая задача Контакта",
|
||||
"New Deal Added or Updated": "Новая сделка добавлена или обновлена",
|
||||
"New or Updated Account": "Новый или обновленный аккаунт",
|
||||
"New Deal Note": "Новая заметка о сделке",
|
||||
"New Deal Task": "Новая сделка",
|
||||
"Tag Added or Removed From Contact": "Тег добавлен или удален из контакта",
|
||||
"Updated Contact": "Контакт обновлен",
|
||||
"Triggers when a deal task has been completed.": "Триггеры по завершении сделки.",
|
||||
"Triggers when a new contact note is added.": "Включает при добавлении новой контактной заметки.",
|
||||
"Triggers when a new contact task is added.": "Триггеры при добавлении новой задачи контакта.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Триггеры при создании новой сделки или обновлении существующей сделки.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Триггеры при добавлении новой учетной записи или обновлении данных существующего аккаунта",
|
||||
"Triggers when a new deal note is created.": "Триггеры при создании новой заметки о сделке.",
|
||||
"Triggers when a new deal task is created.": "Триггеры при создании новой сделки.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Триггеры при добавлении или удалении тега из контакта",
|
||||
"Triggers when an existing contact details are updated.": "Включает при обновлении существующих контактных данных."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "API Key",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n",
|
||||
"Add Contact to Account": "Add Contact to Account",
|
||||
"Add Tag to Contact": "Add Tag to Contact",
|
||||
"Create Account": "Create Account",
|
||||
"Create Contact": "Create Contact",
|
||||
"Update Account": "Update Account",
|
||||
"Update Contact": "Update Contact",
|
||||
"Subscribe or Unsubscribe Contact From List": "Subscribe or Unsubscribe Contact From List",
|
||||
"Adds a contact to an ActiveCampaign account.": "Adds a contact to an ActiveCampaign account.",
|
||||
"Adds a tag to contact.": "Adds a tag to contact.",
|
||||
"Creates a new account.": "Creates a new account.",
|
||||
"Creates a new contact.": "Creates a new contact.",
|
||||
"Updates an account.": "Updates an account.",
|
||||
"Updates an existing contact.": "Updates an existing contact.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.",
|
||||
"Contact ID": "Contact ID",
|
||||
"Account ID": "Account ID",
|
||||
"Job Title": "Job Title",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Account Name",
|
||||
"Account URL": "Account URL",
|
||||
"Account Custom Fields": "Account Custom Fields",
|
||||
"Email": "Email",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Phone": "Phone",
|
||||
"Contact Custom Fields": "Contact Custom Fields",
|
||||
"List": "List",
|
||||
"Action": "Action",
|
||||
"Subscribe": "Subscribe",
|
||||
"Unsubscribe": "Unsubscribe",
|
||||
"Deal Task Completed": "Deal Task Completed",
|
||||
"New Contact Note": "New Contact Note",
|
||||
"New Contact Task": "New Contact Task",
|
||||
"New Deal Added or Updated": "New Deal Added or Updated",
|
||||
"New or Updated Account": "New or Updated Account",
|
||||
"New Deal Note": "New Deal Note",
|
||||
"New Deal Task": "New Deal Task",
|
||||
"Tag Added or Removed From Contact": "Tag Added or Removed From Contact",
|
||||
"Updated Contact": "Updated Contact",
|
||||
"Triggers when a deal task has been completed.": "Triggers when a deal task has been completed.",
|
||||
"Triggers when a new contact note is added.": "Triggers when a new contact note is added.",
|
||||
"Triggers when a new contact task is added.": "Triggers when a new contact task is added.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Triggers when a new deal is created or existing deal is updated.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Triggers when a new account is added or an existing account’s details are updated",
|
||||
"Triggers when a new deal note is created.": "Triggers when a new deal note is created.",
|
||||
"Triggers when a new deal task is created.": "Triggers when a new deal task is created.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Triggers when a a Tag is added or removed from a Contact",
|
||||
"Triggers when an existing contact details are updated.": "Triggers when an existing contact details are updated."
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"ActiveCampaign": "ActiveCampaign",
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "API Key",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n",
|
||||
"Add Contact to Account": "Add Contact to Account",
|
||||
"Add Tag to Contact": "Add Tag to Contact",
|
||||
"Create Account": "Create Account",
|
||||
"Create Contact": "Create Contact",
|
||||
"Update Account": "Update Account",
|
||||
"Update Contact": "Update Contact",
|
||||
"Subscribe or Unsubscribe Contact From List": "Subscribe or Unsubscribe Contact From List",
|
||||
"Adds a contact to an ActiveCampaign account.": "Adds a contact to an ActiveCampaign account.",
|
||||
"Adds a tag to contact.": "Adds a tag to contact.",
|
||||
"Creates a new account.": "Creates a new account.",
|
||||
"Creates a new contact.": "Creates a new contact.",
|
||||
"Updates an account.": "Updates an account.",
|
||||
"Updates an existing contact.": "Updates an existing contact.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.",
|
||||
"Contact ID": "Contact ID",
|
||||
"Account ID": "Account ID",
|
||||
"Job Title": "Job Title",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Account Name",
|
||||
"Account URL": "Account URL",
|
||||
"Account Custom Fields": "Account Custom Fields",
|
||||
"Email": "Email",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Phone": "Phone",
|
||||
"Contact Custom Fields": "Contact Custom Fields",
|
||||
"List": "List",
|
||||
"Action": "Action",
|
||||
"Subscribe": "Subscribe",
|
||||
"Unsubscribe": "Unsubscribe",
|
||||
"Deal Task Completed": "Deal Task Completed",
|
||||
"New Contact Note": "New Contact Note",
|
||||
"New Contact Task": "New Contact Task",
|
||||
"New Deal Added or Updated": "New Deal Added or Updated",
|
||||
"New or Updated Account": "New or Updated Account",
|
||||
"New Deal Note": "New Deal Note",
|
||||
"New Deal Task": "New Deal Task",
|
||||
"Tag Added or Removed From Contact": "Tag Added or Removed From Contact",
|
||||
"Updated Contact": "Updated Contact",
|
||||
"Triggers when a deal task has been completed.": "Triggers when a deal task has been completed.",
|
||||
"Triggers when a new contact note is added.": "Triggers when a new contact note is added.",
|
||||
"Triggers when a new contact task is added.": "Triggers when a new contact task is added.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Triggers when a new deal is created or existing deal is updated.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Triggers when a new account is added or an existing account’s details are updated",
|
||||
"Triggers when a new deal note is created.": "Triggers when a new deal note is created.",
|
||||
"Triggers when a new deal task is created.": "Triggers when a new deal task is created.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Triggers when a a Tag is added or removed from a Contact",
|
||||
"Triggers when an existing contact details are updated.": "Triggers when an existing contact details are updated."
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.": "Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.",
|
||||
"API URL": "API URL",
|
||||
"API Key": "API 密钥",
|
||||
"\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n": "\nTo obtain your ActiveCampaign API URL and Key, follow these steps:\n\n1. Log in to your ActiveCampaign account.\n2. Navigate to **Settings->Developer** section.\n3. Under **API Access** ,you'll find your API URL and Key.\n",
|
||||
"Add Contact to Account": "Add Contact to Account",
|
||||
"Add Tag to Contact": "Add Tag to Contact",
|
||||
"Create Account": "Create Account",
|
||||
"Create Contact": "Create Contact",
|
||||
"Update Account": "Update Account",
|
||||
"Update Contact": "Update Contact",
|
||||
"Subscribe or Unsubscribe Contact From List": "Subscribe or Unsubscribe Contact From List",
|
||||
"Adds a contact to an ActiveCampaign account.": "Adds a contact to an ActiveCampaign account.",
|
||||
"Adds a tag to contact.": "Adds a tag to contact.",
|
||||
"Creates a new account.": "Creates a new account.",
|
||||
"Creates a new contact.": "Creates a new contact.",
|
||||
"Updates an account.": "Updates an account.",
|
||||
"Updates an existing contact.": "Updates an existing contact.",
|
||||
"Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.": "Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.",
|
||||
"Contact ID": "Contact ID",
|
||||
"Account ID": "Account ID",
|
||||
"Job Title": "Job Title",
|
||||
"Tag ID": "Tag ID",
|
||||
"Account Name": "Account Name",
|
||||
"Account URL": "Account URL",
|
||||
"Account Custom Fields": "Account Custom Fields",
|
||||
"Email": "电子邮件地址",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "名字",
|
||||
"Phone": "Phone",
|
||||
"Contact Custom Fields": "Contact Custom Fields",
|
||||
"List": "List",
|
||||
"Action": "行 动",
|
||||
"Subscribe": "Subscribe",
|
||||
"Unsubscribe": "Unsubscribe",
|
||||
"Deal Task Completed": "Deal Task Completed",
|
||||
"New Contact Note": "New Contact Note",
|
||||
"New Contact Task": "New Contact Task",
|
||||
"New Deal Added or Updated": "New Deal Added or Updated",
|
||||
"New or Updated Account": "New or Updated Account",
|
||||
"New Deal Note": "New Deal Note",
|
||||
"New Deal Task": "New Deal Task",
|
||||
"Tag Added or Removed From Contact": "Tag Added or Removed From Contact",
|
||||
"Updated Contact": "Updated Contact",
|
||||
"Triggers when a deal task has been completed.": "Triggers when a deal task has been completed.",
|
||||
"Triggers when a new contact note is added.": "Triggers when a new contact note is added.",
|
||||
"Triggers when a new contact task is added.": "Triggers when a new contact task is added.",
|
||||
"Triggers when a new deal is created or existing deal is updated.": "Triggers when a new deal is created or existing deal is updated.",
|
||||
"Triggers when a new account is added or an existing account’s details are updated": "Triggers when a new account is added or an existing account’s details are updated",
|
||||
"Triggers when a new deal note is created.": "Triggers when a new deal note is created.",
|
||||
"Triggers when a new deal task is created.": "Triggers when a new deal task is created.",
|
||||
"Triggers when a a Tag is added or removed from a Contact": "Triggers when a a Tag is added or removed from a Contact",
|
||||
"Triggers when an existing contact details are updated.": "Triggers when an existing contact details are updated."
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
import {
|
||||
createPiece,
|
||||
PieceAuth,
|
||||
Property,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { newDealAddedOrUpdatedTrigger } from './lib/triggers/new-deal-added-or-updated';
|
||||
import { createAccountAction } from './lib/actions/accounts/create-account';
|
||||
import { updateAccountAction } from './lib/actions/accounts/update-account';
|
||||
import { subscribeOrUnsubscribeContactFromListAction } from './lib/actions/contacts/subscribe-or-unsubscribe-contact-from-list';
|
||||
import { createContactAction } from './lib/actions/contacts/create-contact';
|
||||
import { updateContactAction } from './lib/actions/contacts/update-contact';
|
||||
import { addContactToAccountAction } from './lib/actions/contacts/add-contact-to-account';
|
||||
import { addTagToContactAction } from './lib/actions/contacts/add-tag-to-contact';
|
||||
import { makeClient } from './lib/common';
|
||||
import { newDealNoteTrigger } from './lib/triggers/new-deal-note';
|
||||
import { newDealTaskTrigger } from './lib/triggers/new-deal-task';
|
||||
import { dealTaskCompletedTrigger } from './lib/triggers/deal-task-completed';
|
||||
import { newtagAddedOrRemovedFromContactTrigger } from './lib/triggers/tag-added-or-removed-from-contact';
|
||||
import { newOrUpdatedAccountTrigger } from './lib/triggers/new-or-updated-account';
|
||||
import { newContactNoteTrigger } from './lib/triggers/new-contact-note';
|
||||
import { newContactTaskTrigger } from './lib/triggers/new-contact-task';
|
||||
import { updatedContactTrigger } from './lib/triggers/updated-contact';
|
||||
|
||||
const authGuide = `
|
||||
To obtain your ActiveCampaign API URL and Key, follow these steps:
|
||||
|
||||
1. Log in to your ActiveCampaign account.
|
||||
2. Navigate to **Settings->Developer** section.
|
||||
3. Under **API Access** ,you'll find your API URL and Key.
|
||||
`;
|
||||
|
||||
export const activeCampaignAuth = PieceAuth.CustomAuth({
|
||||
required: true,
|
||||
description: authGuide,
|
||||
props: {
|
||||
apiUrl: Property.ShortText({
|
||||
displayName: 'API URL',
|
||||
required: true,
|
||||
}),
|
||||
apiKey: Property.ShortText({
|
||||
displayName: 'API Key',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
validate: async ({ auth }) => {
|
||||
try {
|
||||
const client = makeClient(auth);
|
||||
await client.authenticate();
|
||||
return { valid: true };
|
||||
} catch (error) {
|
||||
return {
|
||||
valid: false,
|
||||
error: 'Invalid API credentials',
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const activecampaign = createPiece({
|
||||
displayName: 'ActiveCampaign',
|
||||
description:
|
||||
'Email marketing, marketing automation, and CRM tools you need to create incredible customer experiences.',
|
||||
auth: activeCampaignAuth,
|
||||
minimumSupportedRelease: '0.30.0',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/activecampaign.png',
|
||||
categories: [PieceCategory.MARKETING, PieceCategory.SALES_AND_CRM],
|
||||
authors: ["kishanprmr","abuaboud"],
|
||||
actions: [
|
||||
addContactToAccountAction,
|
||||
addTagToContactAction,
|
||||
createAccountAction,
|
||||
createContactAction,
|
||||
updateAccountAction,
|
||||
updateContactAction,
|
||||
subscribeOrUnsubscribeContactFromListAction,
|
||||
],
|
||||
triggers: [
|
||||
dealTaskCompletedTrigger,
|
||||
newContactNoteTrigger,
|
||||
newContactTaskTrigger,
|
||||
newDealAddedOrUpdatedTrigger,
|
||||
newOrUpdatedAccountTrigger,
|
||||
newDealNoteTrigger,
|
||||
newDealTaskTrigger,
|
||||
newtagAddedOrRemovedFromContactTrigger,
|
||||
updatedContactTrigger,
|
||||
],
|
||||
});
|
||||
@@ -0,0 +1,37 @@
|
||||
import { activeCampaignAuth } from '../../..';
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { activecampaignCommon, makeClient } from '../../common';
|
||||
import { CreateAccountRequest } from '../../common/types';
|
||||
|
||||
export const createAccountAction = createAction({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_create_account',
|
||||
displayName: 'Create Account',
|
||||
description: 'Creates a new account.',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Account Name',
|
||||
required: true,
|
||||
}),
|
||||
accountUrl: Property.ShortText({
|
||||
displayName: 'Account URL',
|
||||
required: false,
|
||||
}),
|
||||
accountCustomFields: activecampaignCommon.accountCustomFields,
|
||||
},
|
||||
async run(context) {
|
||||
const { name, accountUrl, accountCustomFields } = context.propsValue;
|
||||
const createAccountParams: CreateAccountRequest = {
|
||||
name,
|
||||
accountUrl,
|
||||
fields: [],
|
||||
};
|
||||
|
||||
Object.entries(accountCustomFields).forEach(([key, value]) => {
|
||||
createAccountParams.fields?.push({ customFieldId: Number(key), fieldValue: value });
|
||||
});
|
||||
|
||||
const client = makeClient(context.auth.props);
|
||||
return await client.createAccount(createAccountParams);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,38 @@
|
||||
import { activeCampaignAuth } from '../../..';
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { activecampaignCommon, makeClient } from '../../common';
|
||||
import { CreateAccountRequest } from '../../common/types';
|
||||
|
||||
export const updateAccountAction = createAction({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_update_account',
|
||||
displayName: 'Update Account',
|
||||
description: 'Updates an account.',
|
||||
props: {
|
||||
accountId: activecampaignCommon.accountId,
|
||||
name: Property.ShortText({
|
||||
displayName: 'Account Name',
|
||||
required: false,
|
||||
}),
|
||||
accountUrl: Property.ShortText({
|
||||
displayName: 'Account URL',
|
||||
required: false,
|
||||
}),
|
||||
accountCustomFields: activecampaignCommon.accountCustomFields,
|
||||
},
|
||||
async run(context) {
|
||||
const { accountId, name, accountUrl, accountCustomFields } = context.propsValue;
|
||||
const updateAccountParams: Partial<CreateAccountRequest> = {
|
||||
name,
|
||||
accountUrl,
|
||||
fields: [],
|
||||
};
|
||||
|
||||
Object.entries(accountCustomFields).forEach(([key, value]) => {
|
||||
updateAccountParams.fields?.push({ customFieldId: Number(key), fieldValue: value });
|
||||
});
|
||||
|
||||
const client = makeClient(context.auth.props);
|
||||
return await client.updateAccount(Number(accountId), updateAccountParams);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,29 @@
|
||||
import { activeCampaignAuth } from '../../..';
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { activecampaignCommon, makeClient } from '../../common';
|
||||
|
||||
export const addContactToAccountAction = createAction({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_add_contact_to_account',
|
||||
displayName: 'Add Contact to Account',
|
||||
description: 'Adds a contact to an ActiveCampaign account.',
|
||||
props: {
|
||||
contactId: activecampaignCommon.contactId,
|
||||
accountId: activecampaignCommon.accountId,
|
||||
jobTitle: Property.ShortText({
|
||||
displayName: 'Job Title',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { contactId, accountId, jobTitle } = context.propsValue;
|
||||
|
||||
const client = makeClient(context.auth.props);
|
||||
|
||||
return await client.createAccountContactAssociation(
|
||||
Number(contactId),
|
||||
Number(accountId),
|
||||
jobTitle,
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
import { activeCampaignAuth } from '../../..';
|
||||
import { createAction } from '@activepieces/pieces-framework';
|
||||
import { activecampaignCommon, makeClient } from '../../common';
|
||||
|
||||
export const addTagToContactAction = createAction({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_add_tag_to_contact',
|
||||
displayName: 'Add Tag to Contact',
|
||||
description: 'Adds a tag to contact.',
|
||||
props: {
|
||||
contactId: activecampaignCommon.contactId,
|
||||
tagId: activecampaignCommon.tagId,
|
||||
},
|
||||
async run(context) {
|
||||
const { contactId, tagId } = context.propsValue;
|
||||
|
||||
const client = makeClient(context.auth.props);
|
||||
return await client.addTagToContact(contactId, tagId);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,48 @@
|
||||
import { activeCampaignAuth } from '../../../';
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { activecampaignCommon, makeClient } from '../../common';
|
||||
import { CreateContactRequest } from '../../common/types';
|
||||
|
||||
export const createContactAction = createAction({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_create_contact',
|
||||
displayName: 'Create Contact',
|
||||
description: 'Creates a new contact.',
|
||||
props: {
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
required: true,
|
||||
}),
|
||||
firstName: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
lastName: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
required: false,
|
||||
}),
|
||||
contactCustomFields: activecampaignCommon.contactCustomFields,
|
||||
},
|
||||
async run(context) {
|
||||
const { email, firstName, lastName, phone, contactCustomFields } = context.propsValue;
|
||||
|
||||
const createContactParams: CreateContactRequest = {
|
||||
email,
|
||||
firstName,
|
||||
lastName,
|
||||
phone,
|
||||
fieldValues: [],
|
||||
};
|
||||
|
||||
Object.entries(contactCustomFields).forEach(([key, value]) => {
|
||||
createContactParams.fieldValues.push({ field: key, value: value });
|
||||
});
|
||||
|
||||
const client = makeClient(context.auth.props);
|
||||
return await client.createContact(createContactParams);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,41 @@
|
||||
import { activeCampaignAuth } from '../../../';
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { activecampaignCommon, makeClient } from '../../common';
|
||||
|
||||
export const subscribeOrUnsubscribeContactFromListAction = createAction({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_subscribe_or_unsubscribe_contact_from_list',
|
||||
displayName: 'Subscribe or Unsubscribe Contact From List',
|
||||
description:
|
||||
'Subscribes a Contact to a List it is not currently associated with, or Unsubscribes a Contact from a list is currently associated with.',
|
||||
props: {
|
||||
listId: activecampaignCommon.listId(true),
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Action',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: 'Subscribe',
|
||||
value: '1',
|
||||
},
|
||||
{
|
||||
label: 'Unsubscribe',
|
||||
value: '2',
|
||||
},
|
||||
],
|
||||
},
|
||||
}),
|
||||
contactId: Property.ShortText({
|
||||
displayName: 'Contact ID',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { listId, status, contactId } = context.propsValue;
|
||||
|
||||
const client = makeClient(context.auth.props);
|
||||
return await client.addContactToList(listId!, contactId, status);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,50 @@
|
||||
import { activeCampaignAuth } from '../../../';
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { activecampaignCommon, makeClient } from '../../common';
|
||||
import { CreateContactRequest } from '../../common/types';
|
||||
|
||||
export const updateContactAction = createAction({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_update_contact',
|
||||
displayName: 'Update Contact',
|
||||
description: 'Updates an existing contact.',
|
||||
props: {
|
||||
contactId: activecampaignCommon.contactId,
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
required: false,
|
||||
}),
|
||||
firstName: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
lastName: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({
|
||||
displayName: 'Phone',
|
||||
required: false,
|
||||
}),
|
||||
contactCustomFields: activecampaignCommon.contactCustomFields,
|
||||
},
|
||||
async run(context) {
|
||||
const { email, contactId, firstName, lastName, phone, contactCustomFields } =
|
||||
context.propsValue;
|
||||
|
||||
const updateContactParams: Partial<CreateContactRequest> = {
|
||||
email,
|
||||
firstName,
|
||||
lastName,
|
||||
phone,
|
||||
fieldValues: [],
|
||||
};
|
||||
|
||||
Object.entries(contactCustomFields).forEach(([key, value]) => {
|
||||
updateContactParams.fieldValues?.push({ field: key, value: value });
|
||||
});
|
||||
|
||||
const client = makeClient(context.auth.props);
|
||||
return await client.updateContact(Number(contactId), updateContactParams);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,148 @@
|
||||
import {
|
||||
HttpMessageBody,
|
||||
HttpMethod,
|
||||
QueryParams,
|
||||
httpClient,
|
||||
HttpRequest,
|
||||
} from '@activepieces/pieces-common';
|
||||
import {
|
||||
AccountCustomFieldsResponse,
|
||||
ContactCustomFieldsResponse,
|
||||
ContactList,
|
||||
CreateAccountRequest,
|
||||
CreateContactRequest,
|
||||
CreateWebhookRequest,
|
||||
CreateWebhookResponse,
|
||||
ListAccountsResponse,
|
||||
ListContactsResponse,
|
||||
ListTagsResponse,
|
||||
} from './types';
|
||||
|
||||
function emptyValueFilter(accessor: (key: string) => any): (key: string) => boolean {
|
||||
return (key: string) => {
|
||||
const val = accessor(key);
|
||||
return val !== null && val !== undefined && (typeof val != 'string' || val.length > 0);
|
||||
};
|
||||
}
|
||||
|
||||
export function prepareQuery(request?: Record<string, any>): QueryParams {
|
||||
const params: QueryParams = {};
|
||||
if (!request) return params;
|
||||
Object.keys(request)
|
||||
.filter(emptyValueFilter((k) => request[k]))
|
||||
.forEach((k: string) => {
|
||||
params[k] = (request as Record<string, any>)[k].toString();
|
||||
});
|
||||
return params;
|
||||
}
|
||||
|
||||
export class ActiveCampaignClient {
|
||||
constructor(private apiUrl: string, private apiKey: string) {}
|
||||
|
||||
async makeRequest<T extends HttpMessageBody>(
|
||||
method: HttpMethod,
|
||||
resourceUri: string,
|
||||
query?: QueryParams,
|
||||
body: any | undefined = undefined,
|
||||
): Promise<T> {
|
||||
const baseUrl = this.apiUrl.replace(/\/$/, '');
|
||||
const request: HttpRequest = {
|
||||
method: method,
|
||||
url: baseUrl + '/api/3' + resourceUri,
|
||||
headers: {
|
||||
'Api-Token': this.apiKey,
|
||||
},
|
||||
queryParams: query,
|
||||
body: body,
|
||||
};
|
||||
const res = await httpClient.sendRequest<T>(request);
|
||||
return res.body;
|
||||
}
|
||||
|
||||
async authenticate() {
|
||||
return await this.makeRequest(HttpMethod.GET, '/users/me');
|
||||
}
|
||||
|
||||
async subscribeWebhook(request: CreateWebhookRequest): Promise<CreateWebhookResponse> {
|
||||
return await this.makeRequest<CreateWebhookResponse>(HttpMethod.POST, '/webhooks', undefined, {
|
||||
webhook: request,
|
||||
});
|
||||
}
|
||||
|
||||
async unsubscribeWebhook(webhookId: string) {
|
||||
return await this.makeRequest(HttpMethod.DELETE, `/webhooks/${webhookId}`);
|
||||
}
|
||||
|
||||
async listContactLists() {
|
||||
return await this.makeRequest<{ lists: ContactList[] }>(
|
||||
HttpMethod.GET,
|
||||
'/lists',
|
||||
prepareQuery({ limit: 20 }),
|
||||
);
|
||||
}
|
||||
|
||||
async createAccount(request: CreateAccountRequest) {
|
||||
return await this.makeRequest(HttpMethod.POST, '/accounts', undefined, { account: request });
|
||||
}
|
||||
|
||||
async updateAccount(accountId: number, request: Partial<CreateAccountRequest>) {
|
||||
return await this.makeRequest(HttpMethod.PUT, `/accounts/${accountId}`, undefined, {
|
||||
account: request,
|
||||
});
|
||||
}
|
||||
|
||||
async listAccounts(search?: string): Promise<ListAccountsResponse> {
|
||||
return await this.makeRequest<ListAccountsResponse>(
|
||||
HttpMethod.GET,
|
||||
'/accounts',
|
||||
prepareQuery({ search: search }),
|
||||
);
|
||||
}
|
||||
|
||||
async listAccountCustomFields() {
|
||||
return await this.makeRequest<{ accountCustomFieldMeta: AccountCustomFieldsResponse[] }>(
|
||||
HttpMethod.GET,
|
||||
'/accountCustomFieldMeta',
|
||||
);
|
||||
}
|
||||
|
||||
async createContact(request: CreateContactRequest) {
|
||||
return await this.makeRequest(HttpMethod.POST, '/contacts', undefined, { contact: request });
|
||||
}
|
||||
|
||||
async updateContact(contactId: number, request: Partial<CreateContactRequest>) {
|
||||
return await this.makeRequest(HttpMethod.PUT, `/contacts/${contactId}`, undefined, {
|
||||
contact: request,
|
||||
});
|
||||
}
|
||||
|
||||
async listContacts(): Promise<ListContactsResponse> {
|
||||
return await this.makeRequest<ListContactsResponse>(HttpMethod.GET, '/contacts');
|
||||
}
|
||||
|
||||
async listContactCustomFields(): Promise<ContactCustomFieldsResponse> {
|
||||
return await this.makeRequest<ContactCustomFieldsResponse>(HttpMethod.GET, '/fields');
|
||||
}
|
||||
|
||||
async addContactToList(listId: string, contactId: string, status: string) {
|
||||
return await this.makeRequest(HttpMethod.POST, '/contactLists', undefined, {
|
||||
contactList: { list: listId, contact: contactId, status: status },
|
||||
});
|
||||
}
|
||||
|
||||
async createAccountContactAssociation(contactId: number, accountId: number, jobTitle?: string) {
|
||||
return await this.makeRequest(HttpMethod.POST, '/accountContacts', undefined, {
|
||||
accountContact: { contact: contactId, account: accountId, jobTitle: jobTitle },
|
||||
});
|
||||
}
|
||||
|
||||
async addTagToContact(contactId: string, tagId: string) {
|
||||
return await this.makeRequest(HttpMethod.POST, '/contactTags', undefined, {
|
||||
contactTag: { contact: contactId, tag: tagId },
|
||||
});
|
||||
}
|
||||
|
||||
async listTags(): Promise<ListTagsResponse> {
|
||||
return await this.makeRequest<ListTagsResponse>(HttpMethod.GET, '/tags');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
export const WEBHOOK_SOURCES = ['public', 'admin', 'api', 'system'];
|
||||
|
||||
export enum CUSTOM_FIELD_TYPE {
|
||||
TEXT = 'text',
|
||||
DROPDOWN = 'dropdown',
|
||||
TEXTAREA = 'textarea',
|
||||
NUMBER = 'number',
|
||||
MONEY = 'currency',
|
||||
DATE = 'date',
|
||||
DATETIME = 'datetime',
|
||||
LIST_BOX = 'listbox',
|
||||
MULTISELECT = 'multiselect',
|
||||
RADIO = 'radio',
|
||||
CHECKBOX = 'checkbox',
|
||||
HIDDEN = 'hidden',
|
||||
}
|
||||
@@ -0,0 +1,299 @@
|
||||
import { activeCampaignAuth } from '../../';
|
||||
import { AppConnectionValueForAuthProperty, DynamicPropsValue, PiecePropValueSchema, Property } from '@activepieces/pieces-framework';
|
||||
import { ActiveCampaignClient } from './client';
|
||||
import { CUSTOM_FIELD_TYPE } from './constants';
|
||||
|
||||
export function makeClient(auth: PiecePropValueSchema<typeof activeCampaignAuth>) {
|
||||
const client = new ActiveCampaignClient(auth.apiUrl, auth.apiKey);
|
||||
return client;
|
||||
}
|
||||
|
||||
export const activecampaignCommon = {
|
||||
listId: (required = false) =>
|
||||
Property.Dropdown({
|
||||
auth: activeCampaignAuth,
|
||||
displayName: 'List',
|
||||
required,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
const client = makeClient(auth.props);
|
||||
const res = await client.listContactLists();
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: res.lists.map((list) => {
|
||||
return {
|
||||
label: list.name,
|
||||
value: list.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
accountId: Property.Dropdown({
|
||||
auth: activeCampaignAuth,
|
||||
displayName: 'Account ID',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
const client = makeClient(auth.props);
|
||||
const res = await client.listAccounts();
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: res.accounts.map((account) => {
|
||||
return {
|
||||
label: account.name,
|
||||
value: account.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
contactId: Property.Dropdown({
|
||||
auth: activeCampaignAuth,
|
||||
displayName: 'Contact ID',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
const client = makeClient((auth as AppConnectionValueForAuthProperty<typeof activeCampaignAuth>).props);
|
||||
const res = await client.listContacts();
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: res.contacts.map((contact) => {
|
||||
return {
|
||||
label: contact.firstName && contact.lastName ? `${contact.firstName} ${contact.lastName}` : contact.email,
|
||||
value: contact.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
tagId: Property.Dropdown({
|
||||
auth: activeCampaignAuth,
|
||||
displayName: 'Tag ID',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Please connect your account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
const client = makeClient(auth.props);
|
||||
const res = await client.listTags();
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: res.tags.map((tag) => {
|
||||
return {
|
||||
label: tag.tag,
|
||||
value: tag.id,
|
||||
};
|
||||
}),
|
||||
};
|
||||
},
|
||||
}),
|
||||
accountCustomFields: Property.DynamicProperties({
|
||||
auth: activeCampaignAuth,
|
||||
displayName: 'Account Custom Fields',
|
||||
refreshers: [],
|
||||
required: true,
|
||||
props: async ({ auth }) => {
|
||||
if (!auth) return {};
|
||||
|
||||
const client = makeClient(auth.props);
|
||||
const res = await client.listAccountCustomFields();
|
||||
const fields: DynamicPropsValue = {};
|
||||
|
||||
for (const field of res.accountCustomFieldMeta) {
|
||||
switch (field.fieldType) {
|
||||
case CUSTOM_FIELD_TYPE.TEXT:
|
||||
case CUSTOM_FIELD_TYPE.HIDDEN:
|
||||
fields[field.id] = Property.ShortText({
|
||||
displayName: field.fieldLabel,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.TEXTAREA:
|
||||
fields[field.id] = Property.LongText({
|
||||
displayName: field.fieldLabel,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.DATE:
|
||||
fields[field.id] = Property.DateTime({
|
||||
displayName: field.fieldLabel,
|
||||
description: 'Please use YYYY-MM-DD format.',
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.DATETIME:
|
||||
fields[field.id] = Property.DateTime({
|
||||
displayName: field.fieldLabel,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.MONEY:
|
||||
case CUSTOM_FIELD_TYPE.NUMBER:
|
||||
fields[field.id] = Property.Number({
|
||||
displayName: field.fieldLabel,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.DROPDOWN:
|
||||
case CUSTOM_FIELD_TYPE.RADIO:
|
||||
fields[field.id] = Property.StaticDropdown({
|
||||
displayName: field.fieldLabel,
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: field.fieldOptions
|
||||
? field.fieldOptions?.map((option) => {
|
||||
return {
|
||||
label: option,
|
||||
value: option,
|
||||
};
|
||||
})
|
||||
: [],
|
||||
},
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.CHECKBOX:
|
||||
case CUSTOM_FIELD_TYPE.LIST_BOX:
|
||||
case CUSTOM_FIELD_TYPE.MULTISELECT:
|
||||
fields[field.id] = Property.StaticMultiSelectDropdown({
|
||||
displayName: field.fieldLabel,
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: field.fieldOptions
|
||||
? field.fieldOptions?.map((option) => {
|
||||
return {
|
||||
label: option,
|
||||
value: option,
|
||||
};
|
||||
})
|
||||
: [],
|
||||
},
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
return fields;
|
||||
},
|
||||
}),
|
||||
contactCustomFields: Property.DynamicProperties({
|
||||
auth: activeCampaignAuth,
|
||||
displayName: 'Contact Custom Fields',
|
||||
refreshers: [],
|
||||
required: true,
|
||||
props: async ({ auth }) => {
|
||||
if (!auth) return {};
|
||||
const client = makeClient(auth.props);
|
||||
const res = await client.listContactCustomFields();
|
||||
|
||||
const fields: DynamicPropsValue = {};
|
||||
|
||||
for (const field of res.fields) {
|
||||
switch (field.type) {
|
||||
case CUSTOM_FIELD_TYPE.TEXT:
|
||||
case CUSTOM_FIELD_TYPE.HIDDEN:
|
||||
fields[field.id] = Property.ShortText({
|
||||
displayName: field.title,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.TEXTAREA:
|
||||
fields[field.id] = Property.LongText({
|
||||
displayName: field.title,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.DATE:
|
||||
fields[field.id] = Property.DateTime({
|
||||
displayName: field.title,
|
||||
description: 'Please use YYYY-MM-DD format.',
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.DATETIME:
|
||||
fields[field.id] = Property.DateTime({
|
||||
displayName: field.title,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.MONEY:
|
||||
case CUSTOM_FIELD_TYPE.NUMBER:
|
||||
fields[field.id] = Property.Number({
|
||||
displayName: field.title,
|
||||
required: false,
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.DROPDOWN:
|
||||
case CUSTOM_FIELD_TYPE.RADIO:
|
||||
fields[field.id] = Property.StaticDropdown({
|
||||
displayName: field.title,
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: res.fieldOptions
|
||||
.filter((option) => option.field === field.id)
|
||||
.map((option) => {
|
||||
return {
|
||||
label: option.label,
|
||||
value: option.value,
|
||||
};
|
||||
}),
|
||||
},
|
||||
});
|
||||
break;
|
||||
case CUSTOM_FIELD_TYPE.CHECKBOX:
|
||||
case CUSTOM_FIELD_TYPE.LIST_BOX:
|
||||
case CUSTOM_FIELD_TYPE.MULTISELECT:
|
||||
fields[field.id] = Property.StaticMultiSelectDropdown({
|
||||
displayName: field.title,
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: res.fieldOptions
|
||||
.filter((option) => option.field === field.id)
|
||||
.map((option) => {
|
||||
return {
|
||||
label: option.label,
|
||||
value: option.value,
|
||||
};
|
||||
}),
|
||||
},
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
return fields;
|
||||
},
|
||||
}),
|
||||
};
|
||||
@@ -0,0 +1,83 @@
|
||||
import { CUSTOM_FIELD_TYPE } from './constants';
|
||||
|
||||
export type CreateWebhookRequest = {
|
||||
name: string;
|
||||
url: string;
|
||||
events: string[];
|
||||
sources: string[];
|
||||
listid?: string;
|
||||
};
|
||||
|
||||
export type CreateWebhookResponse = {
|
||||
webhook: {
|
||||
name: string;
|
||||
url: string;
|
||||
events: string[];
|
||||
sources: string[];
|
||||
listid: string;
|
||||
cdate: string;
|
||||
state: string;
|
||||
id: string;
|
||||
};
|
||||
};
|
||||
|
||||
export type ContactList = {
|
||||
id: string;
|
||||
name: string;
|
||||
};
|
||||
|
||||
export type CreateAccountRequest = {
|
||||
name: string;
|
||||
accountUrl?: string;
|
||||
fields?: {
|
||||
customFieldId: number;
|
||||
fieldValue: any;
|
||||
}[];
|
||||
};
|
||||
|
||||
export type CreateContactRequest = {
|
||||
email: string;
|
||||
firstName?: string;
|
||||
lastName?: string;
|
||||
phone?: string;
|
||||
fieldValues: {
|
||||
field: string;
|
||||
value: any;
|
||||
}[];
|
||||
};
|
||||
export type ListAccountsResponse = {
|
||||
accounts: {
|
||||
name: string;
|
||||
id: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
export type ListContactsResponse = {
|
||||
contacts: {
|
||||
email: string;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
id: string;
|
||||
}[];
|
||||
};
|
||||
|
||||
export type ListTagsResponse = {
|
||||
tags: {
|
||||
tagType: string;
|
||||
tag: string;
|
||||
id: string;
|
||||
}[];
|
||||
};
|
||||
export type AccountCustomFieldsResponse = {
|
||||
id: string;
|
||||
fieldLabel: string;
|
||||
fieldType: CUSTOM_FIELD_TYPE;
|
||||
fieldOptions?: string[];
|
||||
fieldDefaultCurrency?: string;
|
||||
fieldDefault?: number | string | string[];
|
||||
};
|
||||
|
||||
export type ContactCustomFieldsResponse = {
|
||||
fieldOptions: { field: string; value: string; label: string; id: string }[];
|
||||
fields: { id: string; title: string; type: CUSTOM_FIELD_TYPE; options: string[] }[];
|
||||
};
|
||||
@@ -0,0 +1,84 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const campaignLinkClickedTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_campaign_link_clicked',
|
||||
displayName: 'New Campaign Link Click',
|
||||
description:
|
||||
'Triggers when a contact clicks a link in a campaign message (will only run once for each unique link).',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces Deal Task Completed Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['click'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_campaign_link_clicked', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_campaign_link_clicked',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'deal_update',
|
||||
date_time: '2024-02-28T04:45:41-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'John',
|
||||
last_name: 'Wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: '1233',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
deal: {
|
||||
id: '1',
|
||||
title: 'Test Deal',
|
||||
create_date: '2024-02-28 04:36:09',
|
||||
create_date_iso: '2024-02-28T04:36:09-06:00',
|
||||
orgid: '1',
|
||||
orgname: 'John Wick',
|
||||
stageid: '1',
|
||||
stage_title: 'To Contact',
|
||||
pipelineid: '1',
|
||||
pipeline_title: 'Test Pipeline',
|
||||
value: '1,044,055.00',
|
||||
value_raw: '1044055',
|
||||
currency: 'usd',
|
||||
currency_symbol: '$',
|
||||
owner: '1',
|
||||
owner_firstname: 'John',
|
||||
owner_lastname: 'Wick',
|
||||
contactid: '3',
|
||||
contact_email: 'code.test@gmail.com',
|
||||
contact_firstname: 'John',
|
||||
contact_lastname: 'Wick',
|
||||
status: '0',
|
||||
fields: [{ id: '1', key: 'Forecasted Close Date', value: '2024-02-08 00:00:00' }],
|
||||
},
|
||||
updated_fields: ['value'],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,83 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const dealTaskCompletedTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_deal_task_completed',
|
||||
displayName: 'Deal Task Completed',
|
||||
description: 'Triggers when a deal task has been completed.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces Deal Task Completed Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['deal_task_complete'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_deal_task_completed', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_deal_task_completed',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'deal_update',
|
||||
date_time: '2024-02-28T04:45:41-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'John',
|
||||
last_name: 'Wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: '1233',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
deal: {
|
||||
id: '1',
|
||||
title: 'Test Deal',
|
||||
create_date: '2024-02-28 04:36:09',
|
||||
create_date_iso: '2024-02-28T04:36:09-06:00',
|
||||
orgid: '1',
|
||||
orgname: 'John Wick',
|
||||
stageid: '1',
|
||||
stage_title: 'To Contact',
|
||||
pipelineid: '1',
|
||||
pipeline_title: 'Test Pipeline',
|
||||
value: '1,044,055.00',
|
||||
value_raw: '1044055',
|
||||
currency: 'usd',
|
||||
currency_symbol: '$',
|
||||
owner: '1',
|
||||
owner_firstname: 'John',
|
||||
owner_lastname: 'Wick',
|
||||
contactid: '3',
|
||||
contact_email: 'code.test@gmail.com',
|
||||
contact_firstname: 'John',
|
||||
contact_lastname: 'Wick',
|
||||
status: '0',
|
||||
fields: [{ id: '1', key: 'Forecasted Close Date', value: '2024-02-08 00:00:00' }],
|
||||
},
|
||||
updated_fields: ['value'],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,83 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newCampaignBounceTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_campaign_bounce',
|
||||
displayName: 'New Campaign Bounce',
|
||||
description: 'Triggers when a contact email address bounces from a sent campaign.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces Campaign Bounce Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['bounce'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_new_campaign_bounce', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_new_campaign_bounce',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'deal_update',
|
||||
date_time: '2024-02-28T04:45:41-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'John',
|
||||
last_name: 'Wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: '1233',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
deal: {
|
||||
id: '1',
|
||||
title: 'Test Deal',
|
||||
create_date: '2024-02-28 04:36:09',
|
||||
create_date_iso: '2024-02-28T04:36:09-06:00',
|
||||
orgid: '1',
|
||||
orgname: 'John Wick',
|
||||
stageid: '1',
|
||||
stage_title: 'To Contact',
|
||||
pipelineid: '1',
|
||||
pipeline_title: 'Test Pipeline',
|
||||
value: '1,044,055.00',
|
||||
value_raw: '1044055',
|
||||
currency: 'usd',
|
||||
currency_symbol: '$',
|
||||
owner: '1',
|
||||
owner_firstname: 'John',
|
||||
owner_lastname: 'Wick',
|
||||
contactid: '3',
|
||||
contact_email: 'code.test@gmail.com',
|
||||
contact_firstname: 'John',
|
||||
contact_lastname: 'Wick',
|
||||
status: '0',
|
||||
fields: [{ id: '1', key: 'Forecasted Close Date', value: '2024-02-08 00:00:00' }],
|
||||
},
|
||||
updated_fields: ['value'],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,58 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newContactNoteTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_contact_note',
|
||||
displayName: 'New Contact Note',
|
||||
description: 'Triggers when a new contact note is added.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces New Contact Note Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['subscriber_note'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_new_contact_note', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_new_contact_note',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'subscriber_note',
|
||||
date_time: '2024-02-28T06:58:11-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
note: 'test note',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'john',
|
||||
last_name: 'wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: '1233',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,68 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newContactTaskTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_contact_task',
|
||||
displayName: 'New Contact Task',
|
||||
description: 'Triggers when a new contact task is added.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces New Contact Task Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['contact_task_add'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_new_contact_task', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_new_contact_task',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'contact_task_add',
|
||||
date_time: '2024-02-28T07:00:57-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'John',
|
||||
last_name: 'Wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: '1233',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
task: {
|
||||
id: '7',
|
||||
type_id: '1',
|
||||
title: 'test task',
|
||||
note: 'Desc',
|
||||
duedate: '2024-02-28 07:00:48',
|
||||
duedate_iso: '2024-02-28T07:00:48-06:00',
|
||||
edate: '2024-02-28 07:15:48',
|
||||
edate_iso: '2024-02-28T07:15:48-06:00',
|
||||
type_title: 'Call',
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,83 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newDealAddedOrUpdatedTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_deal_added_or_updated',
|
||||
displayName: 'New Deal Added or Updated',
|
||||
description: 'Triggers when a new deal is created or existing deal is updated.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces New Deal Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['deal_add', 'deal_update'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_new_deal_added_or_updated', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_new_deal_added_or_updated',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'deal_update',
|
||||
date_time: '2024-02-28T04:45:41-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'John',
|
||||
last_name: 'Wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: '1233',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
deal: {
|
||||
id: '1',
|
||||
title: 'Test Deal',
|
||||
create_date: '2024-02-28 04:36:09',
|
||||
create_date_iso: '2024-02-28T04:36:09-06:00',
|
||||
orgid: '1',
|
||||
orgname: 'John Wick',
|
||||
stageid: '1',
|
||||
stage_title: 'To Contact',
|
||||
pipelineid: '1',
|
||||
pipeline_title: 'Test Pipeline',
|
||||
value: '1,044,055.00',
|
||||
value_raw: '1044055',
|
||||
currency: 'usd',
|
||||
currency_symbol: '$',
|
||||
owner: '1',
|
||||
owner_firstname: 'John',
|
||||
owner_lastname: 'Wick',
|
||||
contactid: '3',
|
||||
contact_email: 'code.test@gmail.com',
|
||||
contact_firstname: 'John',
|
||||
contact_lastname: 'Wick',
|
||||
status: '0',
|
||||
fields: [{ id: '1', key: 'Forecasted Close Date', value: '2024-02-08 00:00:00' }],
|
||||
},
|
||||
updated_fields: ['value'],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,67 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newDealNoteTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_deal_note',
|
||||
displayName: 'New Deal Note',
|
||||
description: 'Triggers when a new deal note is created.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces New Deal Note Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['deal_note_add'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_new_deal_note', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>('activecampaign_new_deal_note');
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'deal_note_add',
|
||||
date_time: '2024-02-28T05:58:27-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
note: { id: '1', text: 'Tst node' },
|
||||
deal: {
|
||||
id: '1',
|
||||
title: 'Test Deal updated',
|
||||
create_date: '2024-02-28 04:36:09',
|
||||
create_date_iso: '2024-02-28T04:36:09-06:00',
|
||||
orgid: '1',
|
||||
orgname: 'John wick',
|
||||
stageid: '1',
|
||||
stage_title: 'To Contact',
|
||||
pipelineid: '1',
|
||||
pipeline_title: 'Test Pipeline',
|
||||
value: '14,055.00',
|
||||
value_raw: '14055',
|
||||
currency: 'usd',
|
||||
currency_symbol: '$',
|
||||
owner: '1',
|
||||
owner_firstname: 'John',
|
||||
owner_lastname: 'wick',
|
||||
contactid: '3',
|
||||
contact_email: 'code.test@gmail.com',
|
||||
contact_firstname: 'John',
|
||||
contact_lastname: 'wick',
|
||||
status: '0',
|
||||
fields: [{ id: '1', key: 'Forecasted Close Date', value: '2024-02-08 00:00:00' }],
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,91 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newDealTaskTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_deal_task',
|
||||
displayName: 'New Deal Task',
|
||||
description: 'Triggers when a new deal task is created.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces New Deal Task Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['deal_task_add'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_new_deal_task', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>('activecampaign_new_deal_task');
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'deal_task_add',
|
||||
date_time: '2024-02-28T06:38:49-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'john',
|
||||
last_name: 'wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: '1233',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
deal: {
|
||||
id: '1',
|
||||
title: 'Test Deal updated',
|
||||
create_date: '2024-02-28 04:36:09',
|
||||
create_date_iso: '2024-02-28T04:36:09-06:00',
|
||||
orgid: '1',
|
||||
orgname: 'john wick',
|
||||
stageid: '1',
|
||||
stage_title: 'To Contact',
|
||||
pipelineid: '1',
|
||||
pipeline_title: 'Test Pipeline',
|
||||
value: '14,055.00',
|
||||
value_raw: '14055',
|
||||
currency: 'usd',
|
||||
currency_symbol: '$',
|
||||
owner: '1',
|
||||
owner_firstname: 'john',
|
||||
owner_lastname: 'wick',
|
||||
contactid: '3',
|
||||
contact_email: 'code.test@gmail.com',
|
||||
contact_firstname: 'john',
|
||||
contact_lastname: 'wick',
|
||||
status: '0',
|
||||
fields: [{ id: '1', key: 'Forecasted Close Date', value: '2024-02-08 00:00:00' }],
|
||||
},
|
||||
task: {
|
||||
id: '6',
|
||||
type_id: '1',
|
||||
title: 'TEST TASK',
|
||||
note: 'fsfssssf',
|
||||
duedate: '2024-02-28 06:38:41',
|
||||
duedate_iso: '2024-02-28T06:38:41-06:00',
|
||||
edate: '2024-02-28 06:53:41',
|
||||
edate_iso: '2024-02-28T06:53:41-06:00',
|
||||
type_title: 'Call',
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,75 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newOrUpdatedAccountTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_or_updated_account',
|
||||
displayName: 'New or Updated Account',
|
||||
description: 'Triggers when a new account is added or an existing account’s details are updated',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces New Account Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['account_add', 'account_update'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_new_or_updated_account', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_new_or_updated_account',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'account_update',
|
||||
date_time: '2024-02-28T06:44:32-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
account: {
|
||||
id: '1',
|
||||
name: 'John Wick',
|
||||
account_url: 'https://www.github.com',
|
||||
created_timestamp: '2024-02-28 01:09:17',
|
||||
updated_timestamp: '2024-02-28 06:44:32',
|
||||
fields: {
|
||||
'0': { id: '1', key: 'Description', value: 'Desc' },
|
||||
'1': { id: '2', key: 'Address 1', value: 'Address 1' },
|
||||
'2': { id: '3', key: 'Address 2', value: 'Address 2' },
|
||||
'3': { id: '4', key: 'City', value: 'City' },
|
||||
'4': { id: '5', key: 'State/Province', value: 'State' },
|
||||
'5': { id: '6', key: 'Postal Code', value: '75156' },
|
||||
'6': { id: '7', key: 'Country', value: 'India' },
|
||||
'7': { id: '8', key: 'Number of Employees', value: '101 - 500' },
|
||||
'8': { id: '9', key: 'Annual Revenue', value: 'Less than 100K' },
|
||||
'9': { id: '10', key: 'Industry/Vertical', value: 'Accounting/Financial' },
|
||||
'10': { key: 'Phone Number', value: '' },
|
||||
'11': { id: '11', key: 'Text Input', value: 'Text Input' },
|
||||
'12': { id: '12', key: 'Text Area', value: 'Text Area' },
|
||||
'13': { id: '13', key: 'Number', value: '18.000' },
|
||||
'14': { id: '14', key: 'money', value: '18' },
|
||||
'15': { id: '15', key: 'Date', value: '2024-02-28 00:00:00' },
|
||||
'16': { key: 'Date Time', value: '' },
|
||||
'17': { id: '16', key: 'Drop Down', value: 'Option 3' },
|
||||
'18': { id: '17', key: 'List box', value: ['Option 1', 'Option 2'] },
|
||||
'19': { id: '18', key: 'Radio Buttons', value: 'Option 1' },
|
||||
'20': { id: '19', key: 'Check Box', value: ['Option 1', 'Option 2'] },
|
||||
'21': { id: '20', key: 'Hidden', value: 'Hidden' },
|
||||
},
|
||||
},
|
||||
updated_fields: ['name'],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,61 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const newtagAddedOrRemovedFromContactTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_new_tag_added_or_removed_from_contact',
|
||||
displayName: 'Tag Added or Removed From Contact',
|
||||
description: 'Triggers when a a Tag is added or removed from a Contact',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces Contact Tag Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['contact_tag_added', 'contact_tag_removed'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>(
|
||||
'activecampaign_new_tag_added_or_removed_from_contact',
|
||||
res,
|
||||
);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_new_tag_added_or_removed_from_contact',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'contact_tag_added',
|
||||
date_time: '2024-02-28T07:04:13-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'John',
|
||||
last_name: 'Wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: 'tag1, tag2',
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
tag: 'tag2',
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,58 @@
|
||||
import { activeCampaignAuth } from '../..';
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { makeClient } from '../common';
|
||||
import { CreateWebhookResponse } from '../common/types';
|
||||
import { WEBHOOK_SOURCES } from '../common/constants';
|
||||
|
||||
export const updatedContactTrigger = createTrigger({
|
||||
auth: activeCampaignAuth,
|
||||
name: 'activecampaign_updated_contact',
|
||||
displayName: 'Updated Contact',
|
||||
description: 'Triggers when an existing contact details are updated.',
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
props: {},
|
||||
async onEnable(context) {
|
||||
const client = makeClient(context.auth.props);
|
||||
const res = await client.subscribeWebhook({
|
||||
name: `Activepieces Updated Contact Hook`,
|
||||
url: context.webhookUrl,
|
||||
events: ['update'],
|
||||
sources: WEBHOOK_SOURCES,
|
||||
});
|
||||
await context.store.put<CreateWebhookResponse>('activecampaign_updated_contact', res);
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
async onDisable(context) {
|
||||
const webhook = await context.store.get<CreateWebhookResponse>(
|
||||
'activecampaign_updated_contact',
|
||||
);
|
||||
if (webhook != null) {
|
||||
const client = makeClient(context.auth.props);
|
||||
await client.unsubscribeWebhook(webhook.webhook.id);
|
||||
}
|
||||
},
|
||||
sampleData: {
|
||||
type: 'update',
|
||||
date_time: '2024-02-28T07:16:48-06:00',
|
||||
initiated_from: 'admin',
|
||||
initiated_by: 'admin',
|
||||
list: '0',
|
||||
contact: {
|
||||
id: '3',
|
||||
email: 'code.test@gmail.com',
|
||||
first_name: 'John',
|
||||
last_name: 'Wick',
|
||||
phone: '',
|
||||
ip: '0.0.0.0',
|
||||
tags: 'tag1, tag2',
|
||||
fields: ['Option 1', '||Option 1||Option 2||'],
|
||||
customer_acct_name: '',
|
||||
orgname: '',
|
||||
},
|
||||
customer_acct_name: '',
|
||||
customer_acct_id: '0',
|
||||
orgname: '',
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"extends": "../../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"noImplicitOverride": true,
|
||||
"noPropertyAccessFromIndexSignature": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"outDir": "../../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user