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.base.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
# pieces-lemlist
|
||||
|
||||
This library was generated with [Nx](https://nx.dev).
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-lemlist` to build the library.
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "@activepieces/piece-lemlist",
|
||||
"version": "0.0.2",
|
||||
"type": "commonjs",
|
||||
"main": "./src/index.js",
|
||||
"types": "./src/index.d.ts",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"name": "pieces-lemlist",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/lemlist/src",
|
||||
"projectType": "library",
|
||||
"release": {
|
||||
"version": {
|
||||
"manifestRootsToUpdate": [
|
||||
"dist/{projectRoot}"
|
||||
],
|
||||
"currentVersionResolver": "git-tag",
|
||||
"fallbackCurrentVersionResolver": "disk"
|
||||
}
|
||||
},
|
||||
"tags": [],
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/lemlist",
|
||||
"tsConfig": "packages/pieces/community/lemlist/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/lemlist/package.json",
|
||||
"main": "packages/pieces/community/lemlist/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/lemlist/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/lemlist/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build",
|
||||
"prebuild"
|
||||
]
|
||||
},
|
||||
"nx-release-publish": {
|
||||
"options": {
|
||||
"packageRoot": "dist/{projectRoot}"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
},
|
||||
"prebuild": {
|
||||
"executor": "nx:run-commands",
|
||||
"options": {
|
||||
"cwd": "packages/pieces/community/lemlist",
|
||||
"command": "bun install --no-save --silent"
|
||||
},
|
||||
"dependsOn": [
|
||||
"^build"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "Geben Sie Ihren Lemlist API-Schlüssel ein",
|
||||
"Mark Lead From One Campaign as Interested": "Lead von einer Kampagne als interessiert markieren",
|
||||
"Mark Lead From One Campaign as Not Interested": "Lead von einer Kampagne als nicht interessiert markieren",
|
||||
"Mark Lead From All Campaign as Interested": "Lead von allen Kampagnen als interessiert markieren",
|
||||
"Mark Lead From All Campaigns as Not Interested": "Lead von allen Kampagnen als nicht interessiert markieren",
|
||||
"Pause Lead From All or Specific Campaigns": "Lead von allen oder bestimmten Kampagnen anhalten",
|
||||
"Resume Lead From All or Specific Campaigns": "Lead von allen oder bestimmten Kampagnen fortsetzen",
|
||||
"Remove Lead From Unsubscribe List": "Lead von der Abmeldeliste entfernen",
|
||||
"Remove Lead from A Campaign": "Lead von einer Kampagne entfernen",
|
||||
"Unsubscribe a Lead": "Lead abbestellen",
|
||||
"Add Lead To A Campaign": "Lead zu einer Kampagne hinzufügen",
|
||||
"Update Lead From Campaign": "Lead von Kampagne aktualisieren",
|
||||
"Search Lead": "Suche Lead",
|
||||
"Mark a lead in a campaign as interested.": "Markieren Sie einen Vorsprung in einer Kampagne als interessiert.",
|
||||
"Mark a lead in a campaign as not interested.": "Markieren Sie einen Vorsprung in einer Kampagne als nicht interessiert.",
|
||||
"Mark a lead as “interested” across all campaigns.": "Markieren Sie einen Vorsprung als „interessiert“ in allen Kampagnen.",
|
||||
"Mark a lead as “not interested” across all campaigns.": "Markieren Sie einen Vorsprung als „nicht interessiert“ in allen Kampagnen.",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "Stoppen Sie den Zugang eines Leiters über alle oder bestimmte Kampagnen hinweg.",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "Fortsetzen Sie die Reichweite eines Leiters über alle oder bestimmte Kampagnen hinweg.",
|
||||
"Remove a lead from “unsubscribe” list.": "Entferne einen Lead von der „Abmelden“-Liste.",
|
||||
"removes a lead from a specific campaign.": "entfernt einen Lead aus einer bestimmten Kampagne.",
|
||||
"Unsubscribe a lead from a campaign.": "Einen Vorsprung von einer Kampagne abbestellen.",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "Fügt eine Führung zu einer bestimmten Kampagne mit optionalen Anreicherungs- und Leaddetails hinzu.",
|
||||
"Updates a lead in a specific campaign.": "Aktualisiert einen Vorsprung in einer bestimmten Kampagne.",
|
||||
"Look up a lead by email and campaign.": "Suchen Sie einen Vorsprung per E-Mail und Kampagne.",
|
||||
"Campaign": "Kampagne",
|
||||
"Lead Email": "Lead E-Mail",
|
||||
"First Name": "Vorname",
|
||||
"Last Name": "Nachname",
|
||||
"Picture URL": "Bild-URL",
|
||||
"Phone": "Telefon",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "Firmenname",
|
||||
"Company Domain": "Firmendomäne",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "Job Titel",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "LinkedIn-Erweiterung",
|
||||
"Find Email": "E-Mail finden",
|
||||
"Verify Email": "E-Mail bestätigen",
|
||||
"Find Phone": "Telefon finden",
|
||||
"Select a campaign": "Kampagne auswählen",
|
||||
"The email of the lead to mark as interested.": "Die E-Mail der Lead zu markieren als interessiert.",
|
||||
"The email of the lead to mark as not interested.": "Die E-Mail der Lead zu markieren, als nicht interessiert.",
|
||||
"Select a campaign (optional)": "Wählen Sie eine Kampagne (optional)",
|
||||
"The email of the lead to pause.": "Die E-Mail der Lead zu pausieren.",
|
||||
"The email of the lead to resume.": "Die E-Mail der Lead zum Fortsetzen.",
|
||||
"The email of the lead to remove from the unsubscribe list.": "Die E-Mail der Lead-Liste, die von der Liste der Abbestellungen entfernt werden soll.",
|
||||
"The email of the lead to remove.": "Die E-Mail des zu entfernenden Leads.",
|
||||
"The email of the lead to unsubscribe.": "Die E-Mail der Lead zum Abmelden.",
|
||||
"The email of the lead to add": "Die E-Mail der Lead hinzufügen",
|
||||
"Avoid adding the lead if it already exists in any campaign": "Vermeiden Sie das Hinzufügen der Lead wenn sie bereits in einer Kampagne existiert",
|
||||
"Run LinkedIn enrichment for this lead": "LinkedIn-Anreicherung für diesen Lead ausführen",
|
||||
"Try to find a verified email for this lead": "Versuche eine verifizierte E-Mail für diesen Lead zu finden",
|
||||
"Verify the lead’s email using debounce": "Bestätigen Sie die E-Mail des Interessenten mit debounce",
|
||||
"Try to find a phone number for this lead": "Versuchen Sie eine Telefonnummer für diesen Lead zu finden",
|
||||
"The email of the lead to update.": "Die E-Mail des zu aktualisierenden Leads.",
|
||||
"The email of the lead to look up": "Die E-Mail der Lead zum nachschlagen",
|
||||
"New Activity": "Neue Aktivität",
|
||||
"Unsubscribed Recipient": "Abgemeldeter Empfänger",
|
||||
"Triggers for each new activity.": "Trigger für jede neue Aktivität.",
|
||||
"Triggers when a recipient unsubscribes.": "Wird ausgelöst, wenn ein Empfänger sich abmeldet."
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "Introduzca su clave API Lemlist",
|
||||
"Mark Lead From One Campaign as Interested": "Marcar líder de una campaña como interesado",
|
||||
"Mark Lead From One Campaign as Not Interested": "Marcar como líder de una campaña como no interesado",
|
||||
"Mark Lead From All Campaign as Interested": "Marcar como líder de toda la campaña como interesado",
|
||||
"Mark Lead From All Campaigns as Not Interested": "Marcar como líder de todas las campañas como no interesado",
|
||||
"Pause Lead From All or Specific Campaigns": "Pausar plomo de todas o campañas específicas",
|
||||
"Resume Lead From All or Specific Campaigns": "Reanudar el plomo de todas o campañas específicas",
|
||||
"Remove Lead From Unsubscribe List": "Quitar cliente potencial de la lista de desuscripción",
|
||||
"Remove Lead from A Campaign": "Eliminar jefe de una campaña",
|
||||
"Unsubscribe a Lead": "Darse de baja de un plomo",
|
||||
"Add Lead To A Campaign": "Añadir Prospectos a una Campaña",
|
||||
"Update Lead From Campaign": "Actualizar jefe de campaña",
|
||||
"Search Lead": "Buscar plomo",
|
||||
"Mark a lead in a campaign as interested.": "Marque un líder en una campaña como interesado.",
|
||||
"Mark a lead in a campaign as not interested.": "Marque un líder en una campaña como no interesado.",
|
||||
"Mark a lead as “interested” across all campaigns.": "Marque un liderazgo como “interesado” en todas las campañas.",
|
||||
"Mark a lead as “not interested” across all campaigns.": "Marque un líder como “no interesado” en todas las campañas.",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "Pausar el alcance de un líder a través de todas o campañas específicas.",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "Reanudar el alcance de un líder a través de todas o campañas específicas.",
|
||||
"Remove a lead from “unsubscribe” list.": "Elimine un cliente potencial de la lista de “darse de baja”.",
|
||||
"removes a lead from a specific campaign.": "elimina un plomo de una campaña específica.",
|
||||
"Unsubscribe a lead from a campaign.": "Darse de baja de un líder de una campaña.",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "Añade una campaña específica con enrichment opcional y detalles de plomo.",
|
||||
"Updates a lead in a specific campaign.": "Actualiza un líder en una campaña específica.",
|
||||
"Look up a lead by email and campaign.": "Buscar un líder por correo electrónico y campaña.",
|
||||
"Campaign": "Campaña",
|
||||
"Lead Email": "Correo principal",
|
||||
"First Name": "Nombre",
|
||||
"Last Name": "Apellido",
|
||||
"Picture URL": "URL de la imagen",
|
||||
"Phone": "Teléfono",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "Nombre De La Empresa",
|
||||
"Company Domain": "Dominio de la empresa",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "Trabajo",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "Enriquecimiento de LinkedIn",
|
||||
"Find Email": "Buscar Email",
|
||||
"Verify Email": "Verificar Email",
|
||||
"Find Phone": "Encontrar teléfono",
|
||||
"Select a campaign": "Seleccione una campaña",
|
||||
"The email of the lead to mark as interested.": "El correo electrónico de la iniciativa a marcar como interesado.",
|
||||
"The email of the lead to mark as not interested.": "El correo electrónico de la persona a marcar como no interesado.",
|
||||
"Select a campaign (optional)": "Seleccione una campaña (opcional)",
|
||||
"The email of the lead to pause.": "El correo electrónico del lead a la pausa.",
|
||||
"The email of the lead to resume.": "El correo electrónico de la iniciativa a reanudar.",
|
||||
"The email of the lead to remove from the unsubscribe list.": "El correo electrónico de la iniciativa a eliminar de la lista de desuscripción.",
|
||||
"The email of the lead to remove.": "El correo electrónico de la iniciativa a eliminar.",
|
||||
"The email of the lead to unsubscribe.": "El correo electrónico de la iniciativa a darse de baja.",
|
||||
"The email of the lead to add": "El correo electrónico de la iniciativa a añadir",
|
||||
"Avoid adding the lead if it already exists in any campaign": "Evitar añadir el cliente principal si ya existe en cualquier campaña",
|
||||
"Run LinkedIn enrichment for this lead": "Ejecutar enrichment LinkedIn para esta iniciativa",
|
||||
"Try to find a verified email for this lead": "Intenta encontrar un correo electrónico verificado para esta iniciativa",
|
||||
"Verify the lead’s email using debounce": "Verifique el correo electrónico del cliente potencial usando debounce",
|
||||
"Try to find a phone number for this lead": "Intenta encontrar un número de teléfono para esta iniciativa",
|
||||
"The email of the lead to update.": "El correo electrónico de la iniciativa a actualizar.",
|
||||
"The email of the lead to look up": "El correo electrónico de la iniciativa a buscar",
|
||||
"New Activity": "Nueva actividad",
|
||||
"Unsubscribed Recipient": "Destinatario no suscrito",
|
||||
"Triggers for each new activity.": "Disparadores para cada nueva actividad.",
|
||||
"Triggers when a recipient unsubscribes.": "Se activa cuando un destinatario se quita de suscripción."
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "Entrez votre clé API Lemlist",
|
||||
"Mark Lead From One Campaign as Interested": "Marquer le plomb d'une campagne comme intéressé",
|
||||
"Mark Lead From One Campaign as Not Interested": "Marquer le prospect d'une seule campagne comme non intéressé",
|
||||
"Mark Lead From All Campaign as Interested": "Marquer le prospect de toutes les campagnes comme étant intéressé",
|
||||
"Mark Lead From All Campaigns as Not Interested": "Marquer le prospect de toutes les campagnes comme n'étant pas intéressé",
|
||||
"Pause Lead From All or Specific Campaigns": "Suspendre le plomb de toutes les campagnes ou campagnes spécifiques",
|
||||
"Resume Lead From All or Specific Campaigns": "Reprendre le prospect de toutes les campagnes ou campagnes spécifiques",
|
||||
"Remove Lead From Unsubscribe List": "Supprimer le prospect de la liste de désinscription",
|
||||
"Remove Lead from A Campaign": "Retirer le prospect d'une campagne",
|
||||
"Unsubscribe a Lead": "Désabonner un prospect",
|
||||
"Add Lead To A Campaign": "Ajouter un prospect à une campagne",
|
||||
"Update Lead From Campaign": "Mettre à jour le prospect depuis la campagne",
|
||||
"Search Lead": "Rechercher un prospect",
|
||||
"Mark a lead in a campaign as interested.": "Marquer un leader dans une campagne comme intéressé.",
|
||||
"Mark a lead in a campaign as not interested.": "Marquer comme un leader dans une campagne comme non intéressé.",
|
||||
"Mark a lead as “interested” across all campaigns.": "Marquer un leader comme « intéressé » dans toutes les campagnes.",
|
||||
"Mark a lead as “not interested” across all campaigns.": "Marquer un leader comme « pas intéressé » dans toutes les campagnes.",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "Suspendre le contact d’un chef de file dans toutes les campagnes ou campagnes spécifiques.",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "Reprendre la portée d’un chef de file dans toutes les campagnes ou campagnes spécifiques.",
|
||||
"Remove a lead from “unsubscribe” list.": "Retirer un prospect de la liste de \"désabonnement\".",
|
||||
"removes a lead from a specific campaign.": "supprime un plomb d'une campagne spécifique.",
|
||||
"Unsubscribe a lead from a campaign.": "Désabonnez-vous un prospect d'une campagne.",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "Ajoute un résultat à une campagne spécifique avec des détails supplémentaires sur l'enrichissement et le plomb.",
|
||||
"Updates a lead in a specific campaign.": "Met à jour un chef de file dans une campagne spécifique.",
|
||||
"Look up a lead by email and campaign.": "Recherchez un leader par e-mail et campagne.",
|
||||
"Campaign": "Campagnes",
|
||||
"Lead Email": "Courriel du prospect",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Picture URL": "URL de l'image",
|
||||
"Phone": "Téléphone",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "Nom de l’entreprise",
|
||||
"Company Domain": "Domaine de la société",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "Titre du poste",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "Enrichissement LinkedIn",
|
||||
"Find Email": "Trouver un e-mail",
|
||||
"Verify Email": "Vérifier l'e-mail",
|
||||
"Find Phone": "Trouver le téléphone",
|
||||
"Select a campaign": "Sélectionnez une campagne",
|
||||
"The email of the lead to mark as interested.": "Le courriel du plomb à marquer comme intéressé.",
|
||||
"The email of the lead to mark as not interested.": "Le courriel du plomb à marquer comme non intéressé.",
|
||||
"Select a campaign (optional)": "Sélectionnez une campagne (facultatif)",
|
||||
"The email of the lead to pause.": "L'e-mail de la piste à mettre en pause.",
|
||||
"The email of the lead to resume.": "Le courriel de la conduite à la reprise.",
|
||||
"The email of the lead to remove from the unsubscribe list.": "L'e-mail du prospect à supprimer de la liste de désinscription.",
|
||||
"The email of the lead to remove.": "L'e-mail de la piste à supprimer.",
|
||||
"The email of the lead to unsubscribe.": "L'e-mail du conduit à se désabonner.",
|
||||
"The email of the lead to add": "L'e-mail du prospect à ajouter",
|
||||
"Avoid adding the lead if it already exists in any campaign": "Éviter d'ajouter le prospect s'il existe déjà dans une campagne",
|
||||
"Run LinkedIn enrichment for this lead": "Exécuter l'enrichissement LinkedIn pour ce prospect",
|
||||
"Try to find a verified email for this lead": "Essayez de trouver un e-mail vérifié pour ce prospect",
|
||||
"Verify the lead’s email using debounce": "Vérifiez l'email du prospect en utilisant debounce",
|
||||
"Try to find a phone number for this lead": "Essayez de trouver un numéro de téléphone pour ce prospect",
|
||||
"The email of the lead to update.": "L'e-mail de la conduite à mettre à jour.",
|
||||
"The email of the lead to look up": "L'e-mail du prospect à rechercher",
|
||||
"New Activity": "Nouvelle activité",
|
||||
"Unsubscribed Recipient": "Destinataire désabonné",
|
||||
"Triggers for each new activity.": "Déclencheurs pour chaque nouvelle activité.",
|
||||
"Triggers when a recipient unsubscribes.": "Déclenche lorsqu'un destinataire se désabonne."
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "レムリストAPIキーを入力してください",
|
||||
"Mark Lead From One Campaign as Interested": "1つのキャンペーンからリードを興味があるとマークする",
|
||||
"Mark Lead From One Campaign as Not Interested": "1つのキャンペーンからリードを興味がないとマークする",
|
||||
"Mark Lead From All Campaign as Interested": "すべてのキャンペーンからリードを興味があるとしてマーク",
|
||||
"Mark Lead From All Campaigns as Not Interested": "すべてのキャンペーンからリードを非興味としてマーク",
|
||||
"Pause Lead From All or Specific Campaigns": "すべてまたは特定のキャンペーンからのリードを一時停止",
|
||||
"Resume Lead From All or Specific Campaigns": "すべてまたは特定のキャンペーンからリードを再開",
|
||||
"Remove Lead From Unsubscribe List": "購読解除リストからリードを削除",
|
||||
"Remove Lead from A Campaign": "キャンペーンからリードを削除",
|
||||
"Unsubscribe a Lead": "リードの購読を解除",
|
||||
"Add Lead To A Campaign": "キャンペーンにリードを追加",
|
||||
"Update Lead From Campaign": "キャンペーンからリードを更新",
|
||||
"Search Lead": "リードを検索",
|
||||
"Mark a lead in a campaign as interested.": "キャンペーンのリードを興味があるとマークします。",
|
||||
"Mark a lead in a campaign as not interested.": "興味のないキャンペーンでリードをマークします。",
|
||||
"Mark a lead as “interested” across all campaigns.": "すべてのキャンペーンでリードを「興味がある」としてマークします。",
|
||||
"Mark a lead as “not interested” across all campaigns.": "すべてのキャンペーンでリードを「興味がない」としてマークします。",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "すべてまたは特定のキャンペーンでリードのアウトリーチを一時停止します。",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "すべてまたは特定のキャンペーンでリードのアウトリーチを再開します。",
|
||||
"Remove a lead from “unsubscribe” list.": "「購読解除」リストからリードを削除します。",
|
||||
"removes a lead from a specific campaign.": "特定のキャンペーンのリードを削除します",
|
||||
"Unsubscribe a lead from a campaign.": "キャンペーンのリードを購読解除します。",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "オプションのエンリッチメントとリードの詳細を含む特定のキャンペーンにリードを追加します。",
|
||||
"Updates a lead in a specific campaign.": "特定のキャンペーンのリードを更新します。",
|
||||
"Look up a lead by email and campaign.": "メールとキャンペーンでリードを探します。",
|
||||
"Campaign": "キャンペーン",
|
||||
"Lead Email": "見込み客のメール",
|
||||
"First Name": "名",
|
||||
"Last Name": "姓",
|
||||
"Picture URL": "画像 URL",
|
||||
"Phone": "電話番号",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "会社名",
|
||||
"Company Domain": "会社ドメイン",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "役職名",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "LinkedIn Enrichment",
|
||||
"Find Email": "電子メールを検索",
|
||||
"Verify Email": "メールアドレスを確認する",
|
||||
"Find Phone": "電話番号を検索",
|
||||
"Select a campaign": "キャンペーンを選択",
|
||||
"The email of the lead to mark as interested.": "興味があるとマークするリードの電子メール。",
|
||||
"The email of the lead to mark as not interested.": "興味がないとマークするリードの電子メール。",
|
||||
"Select a campaign (optional)": "キャンペーンを選択 (オプション)",
|
||||
"The email of the lead to pause.": "一時停止するリードのメール。",
|
||||
"The email of the lead to resume.": "再開するリードの電子メール。",
|
||||
"The email of the lead to remove from the unsubscribe list.": "購読解除リストから削除するリードのメール。",
|
||||
"The email of the lead to remove.": "削除するリードのメール。",
|
||||
"The email of the lead to unsubscribe.": "購読を解除するリードのEメール。",
|
||||
"The email of the lead to add": "追加するリードのメールアドレス",
|
||||
"Avoid adding the lead if it already exists in any campaign": "キャンペーンに既に存在する場合はリードを追加しないでください",
|
||||
"Run LinkedIn enrichment for this lead": "このリードのLinkedInエンリッチメントを実行",
|
||||
"Try to find a verified email for this lead": "このリードの確認済みメールを探してみてください",
|
||||
"Verify the lead’s email using debounce": "デバウンスを使用してリードのメールを確認する",
|
||||
"Try to find a phone number for this lead": "このリードの電話番号を見つけてみてください",
|
||||
"The email of the lead to update.": "更新するリードのメール。",
|
||||
"The email of the lead to look up": "検索する見込み客のメールアドレス",
|
||||
"New Activity": "新しいアクティビティ",
|
||||
"Unsubscribed Recipient": "未購読の受信者",
|
||||
"Triggers for each new activity.": "新しいアクティビティごとにトリガーします。",
|
||||
"Triggers when a recipient unsubscribes.": "受信者が購読を解除したときにトリガーします。"
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "Voer uw Lemlist API-sleutel in",
|
||||
"Mark Lead From One Campaign as Interested": "Markeer Lead van één campagne als geïnteresseerd",
|
||||
"Mark Lead From One Campaign as Not Interested": "Markeer Lead van één campagne als niet interessant",
|
||||
"Mark Lead From All Campaign as Interested": "Markeer Lead van alle campagne als interessant",
|
||||
"Mark Lead From All Campaigns as Not Interested": "Markeer voorsprong van alle campagnes als niet interessant",
|
||||
"Pause Lead From All or Specific Campaigns": "Pauzeer Lead van alle of specifieke campagnes",
|
||||
"Resume Lead From All or Specific Campaigns": "Hervat Lead van alles of specifieke campagnes",
|
||||
"Remove Lead From Unsubscribe List": "Verwijder Lead uit de afmeldlijst",
|
||||
"Remove Lead from A Campaign": "Verwijder Lead uit een Campagne",
|
||||
"Unsubscribe a Lead": "Een Lead uitschrijven",
|
||||
"Add Lead To A Campaign": "Voeg Lead toe aan een Campagne",
|
||||
"Update Lead From Campaign": "Update Lead Uit Campagne",
|
||||
"Search Lead": "Zoek Lead",
|
||||
"Mark a lead in a campaign as interested.": "Markeer een voorsprong in een campagne als geïnteresseerd.",
|
||||
"Mark a lead in a campaign as not interested.": "Markeer een voorsprong in een campagne als niet geïnteresseerd.",
|
||||
"Mark a lead as “interested” across all campaigns.": "Markeer een voorsprong als \"interessant\" over alle campagnes.",
|
||||
"Mark a lead as “not interested” across all campaigns.": "Markeer een voorsprong als “niet geïnteresseerd” over alle campagnes.",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "Onderbreek het outreach van een lead over alle of specifieke campagnes.",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "Hervat het outreach van een leidraad over alle of specifieke campagnes.",
|
||||
"Remove a lead from “unsubscribe” list.": "Verwijder een lead uit de \"uitschrijving\" lijst.",
|
||||
"removes a lead from a specific campaign.": "verwijdert een lead uit een specifieke campagne.",
|
||||
"Unsubscribe a lead from a campaign.": "Een voorsprong afmelden voor een campagne.",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "Voegt een lead toe aan een specifieke campagne met optionele verrijking en looddetails.",
|
||||
"Updates a lead in a specific campaign.": "Werkt een lead bij in een specifieke campagne.",
|
||||
"Look up a lead by email and campaign.": "Zoek een voorsprong op via e-mail en campagne.",
|
||||
"Campaign": "Campagne",
|
||||
"Lead Email": "Lead e-mail",
|
||||
"First Name": "Voornaam",
|
||||
"Last Name": "Achternaam",
|
||||
"Picture URL": "URL afbeelding",
|
||||
"Phone": "Telefoonnummer",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "Bedrijfsnaam",
|
||||
"Company Domain": "Bedrijfsdomein",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "Job titel",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "LinkedIn verrijking",
|
||||
"Find Email": "Zoek e-mail",
|
||||
"Verify Email": "Bevestig e-mailadres",
|
||||
"Find Phone": "Telefoon zoeken",
|
||||
"Select a campaign": "Selecteer een campagne",
|
||||
"The email of the lead to mark as interested.": "De e-mail van de lead om te markeren als geïnteresseerd.",
|
||||
"The email of the lead to mark as not interested.": "De e-mail van de lead om te markeren als niet geïnteresseerd.",
|
||||
"Select a campaign (optional)": "Selecteer een campagne (optioneel)",
|
||||
"The email of the lead to pause.": "De e-mail van de lead om te pauzeren.",
|
||||
"The email of the lead to resume.": "De e-mail van de lead om te hervatten.",
|
||||
"The email of the lead to remove from the unsubscribe list.": "De e-mail van de lead om uit de afmeldlijst te verwijderen.",
|
||||
"The email of the lead to remove.": "De e-mail van de te verwijderen lead",
|
||||
"The email of the lead to unsubscribe.": "De e-mail van de lead die u wilt uitschrijven.",
|
||||
"The email of the lead to add": "De e-mail van de toe te voegen lead",
|
||||
"Avoid adding the lead if it already exists in any campaign": "Vermijd het toevoegen van de lead als deze al bestaat in een campagne",
|
||||
"Run LinkedIn enrichment for this lead": "Start LinkedIn verrijking voor deze lead",
|
||||
"Try to find a verified email for this lead": "Probeer een geverifieerde e-mail te vinden voor deze lead",
|
||||
"Verify the lead’s email using debounce": "Verifieer de lead e-mail met behulp van debounces",
|
||||
"Try to find a phone number for this lead": "Probeer een telefoonnummer te vinden voor deze lead",
|
||||
"The email of the lead to update.": "De e-mail van de lead om bij te werken.",
|
||||
"The email of the lead to look up": "De e-mail van de lead om op te zoeken",
|
||||
"New Activity": "Nieuwe activiteit",
|
||||
"Unsubscribed Recipient": "Ontvanger uitgeschreven",
|
||||
"Triggers for each new activity.": "Triggert voor elke nieuwe activiteit.",
|
||||
"Triggers when a recipient unsubscribes.": "Triggert wanneer een ontvanger zich uitschrijft."
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "Digite sua chave de API do Lemlist",
|
||||
"Mark Lead From One Campaign as Interested": "Marcar Lead de uma campanha como Interessado",
|
||||
"Mark Lead From One Campaign as Not Interested": "Marcar Lead de uma campanha como Não Interessado",
|
||||
"Mark Lead From All Campaign as Interested": "Marcar Potencial de Todas as Campanhas como Interessado",
|
||||
"Mark Lead From All Campaigns as Not Interested": "Marcar Potencial de Todas as Campanhas, como Não Interessado",
|
||||
"Pause Lead From All or Specific Campaigns": "Pausar Lead de todas ou campanhas específicas",
|
||||
"Resume Lead From All or Specific Campaigns": "Retomar Lead de Todas ou Campanhas Específicas",
|
||||
"Remove Lead From Unsubscribe List": "Remover Lead de Lista de Desinscrever",
|
||||
"Remove Lead from A Campaign": "Remover Lead de uma Campanha",
|
||||
"Unsubscribe a Lead": "Cancelar inscrição de um Lead",
|
||||
"Add Lead To A Campaign": "Adicionar Lead a Uma Campanha",
|
||||
"Update Lead From Campaign": "Atualizar Lead de Campanha",
|
||||
"Search Lead": "Buscar Potencial",
|
||||
"Mark a lead in a campaign as interested.": "Marque uma liderança em uma campanha como interessada.",
|
||||
"Mark a lead in a campaign as not interested.": "Marque uma liderança em uma campanha como não interessada.",
|
||||
"Mark a lead as “interested” across all campaigns.": "Marque uma liderança como \"interessada\" em todas as campanhas.",
|
||||
"Mark a lead as “not interested” across all campaigns.": "Marque uma liderança como \"não interessada\" em todas as campanhas.",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "Pausa a divulgação de um líder em todas ou campanhas específicas.",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "Retomar o alcance de um líder em todas ou campanhas específicas.",
|
||||
"Remove a lead from “unsubscribe” list.": "Remover lead da lista de \"cancelar inscrição\".",
|
||||
"removes a lead from a specific campaign.": "remove um líder de uma campanha específica.",
|
||||
"Unsubscribe a lead from a campaign.": "Cancelar assinatura de uma iniciativa de uma campanha.",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "Adiciona um lead a uma campanha específica com enriquecimento opcional e detalhes do chumbo.",
|
||||
"Updates a lead in a specific campaign.": "Atualiza um potencial em uma campanha específica.",
|
||||
"Look up a lead by email and campaign.": "Procure um líder por e-mail e campanha.",
|
||||
"Campaign": "Campanha",
|
||||
"Lead Email": "Email do lead",
|
||||
"First Name": "Nome",
|
||||
"Last Name": "Sobrenome",
|
||||
"Picture URL": "URL da imagem",
|
||||
"Phone": "Smartphone",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "Nome da Empresa",
|
||||
"Company Domain": "Domínio da empresa",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "Título do Cargo",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "Enriquecimento no LinkedIn",
|
||||
"Find Email": "Encontrar E-mail",
|
||||
"Verify Email": "Verificar e-mail",
|
||||
"Find Phone": "Localizar Telefone",
|
||||
"Select a campaign": "Selecione a campanha",
|
||||
"The email of the lead to mark as interested.": "O e-mail do Lead para marcar como interessado.",
|
||||
"The email of the lead to mark as not interested.": "O e-mail do lead para marcar como não interessado.",
|
||||
"Select a campaign (optional)": "Selecione uma campanha (opcional)",
|
||||
"The email of the lead to pause.": "O e-mail do Lead para pausa.",
|
||||
"The email of the lead to resume.": "O e-mail do Lead a retomar.",
|
||||
"The email of the lead to remove from the unsubscribe list.": "O e-mail do Lead para remover da lista de cancelamento.",
|
||||
"The email of the lead to remove.": "O e-mail do Lead a remover.",
|
||||
"The email of the lead to unsubscribe.": "O e-mail do Lead para cancelar a assinatura.",
|
||||
"The email of the lead to add": "O e-mail do Lead a adicionar",
|
||||
"Avoid adding the lead if it already exists in any campaign": "Evite adicionar o lead se ele já existe em qualquer campanha",
|
||||
"Run LinkedIn enrichment for this lead": "Executar enriquecimento do LinkedIn para esta vantagem",
|
||||
"Try to find a verified email for this lead": "Tente encontrar um e-mail verificado para este lead",
|
||||
"Verify the lead’s email using debounce": "Verifique o e-mail do cliente usando a mensagem debounce",
|
||||
"Try to find a phone number for this lead": "Tentar encontrar um número de telefone para este lead",
|
||||
"The email of the lead to update.": "O e-mail do Lead para atualização.",
|
||||
"The email of the lead to look up": "O e-mail do Lead para procurar",
|
||||
"New Activity": "Nova atividade",
|
||||
"Unsubscribed Recipient": "Destinatário não inscrito",
|
||||
"Triggers for each new activity.": "Gatilhos para cada nova atividade.",
|
||||
"Triggers when a recipient unsubscribes.": "Aciona quando um destinatário cancela."
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "Enter your Lemlist API key",
|
||||
"Mark Lead From One Campaign as Interested": "Mark Lead From One Campaign as Interested",
|
||||
"Mark Lead From One Campaign as Not Interested": "Mark Lead From One Campaign as Not Interested",
|
||||
"Mark Lead From All Campaign as Interested": "Mark Lead From All Campaign as Interested",
|
||||
"Mark Lead From All Campaigns as Not Interested": "Mark Lead From All Campaigns as Not Interested",
|
||||
"Pause Lead From All or Specific Campaigns": "Pause Lead From All or Specific Campaigns",
|
||||
"Resume Lead From All or Specific Campaigns": "Resume Lead From All or Specific Campaigns",
|
||||
"Remove Lead From Unsubscribe List": "Remove Lead From Unsubscribe List",
|
||||
"Remove Lead from A Campaign": "Remove Lead from A Campaign",
|
||||
"Unsubscribe a Lead": "Unsubscribe a Lead",
|
||||
"Add Lead To A Campaign": "Add Lead To A Campaign",
|
||||
"Update Lead From Campaign": "Update Lead From Campaign",
|
||||
"Search Lead": "Search Lead",
|
||||
"Mark a lead in a campaign as interested.": "Mark a lead in a campaign as interested.",
|
||||
"Mark a lead in a campaign as not interested.": "Mark a lead in a campaign as not interested.",
|
||||
"Mark a lead as “interested” across all campaigns.": "Mark a lead as “interested” across all campaigns.",
|
||||
"Mark a lead as “not interested” across all campaigns.": "Mark a lead as “not interested” across all campaigns.",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "Pause a lead’s outreach across all or specific campaigns.",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "Resume a lead’s outreach across all or specific campaigns.",
|
||||
"Remove a lead from “unsubscribe” list.": "Remove a lead from “unsubscribe” list.",
|
||||
"removes a lead from a specific campaign.": "removes a lead from a specific campaign.",
|
||||
"Unsubscribe a lead from a campaign.": "Unsubscribe a lead from a campaign.",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "Adds a lead to a specific campaign with optional enrichment and lead details.",
|
||||
"Updates a lead in a specific campaign.": "Updates a lead in a specific campaign.",
|
||||
"Look up a lead by email and campaign.": "Look up a lead by email and campaign.",
|
||||
"Campaign": "Campaign",
|
||||
"Lead Email": "Lead Email",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Picture URL": "Picture URL",
|
||||
"Phone": "Phone",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "Company Name",
|
||||
"Company Domain": "Company Domain",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "Job Title",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "LinkedIn Enrichment",
|
||||
"Find Email": "Find Email",
|
||||
"Verify Email": "Verify Email",
|
||||
"Find Phone": "Find Phone",
|
||||
"Select a campaign": "Select a campaign",
|
||||
"The email of the lead to mark as interested.": "The email of the lead to mark as interested.",
|
||||
"The email of the lead to mark as not interested.": "The email of the lead to mark as not interested.",
|
||||
"Select a campaign (optional)": "Select a campaign (optional)",
|
||||
"The email of the lead to pause.": "The email of the lead to pause.",
|
||||
"The email of the lead to resume.": "The email of the lead to resume.",
|
||||
"The email of the lead to remove from the unsubscribe list.": "The email of the lead to remove from the unsubscribe list.",
|
||||
"The email of the lead to remove.": "The email of the lead to remove.",
|
||||
"The email of the lead to unsubscribe.": "The email of the lead to unsubscribe.",
|
||||
"The email of the lead to add": "The email of the lead to add",
|
||||
"Avoid adding the lead if it already exists in any campaign": "Avoid adding the lead if it already exists in any campaign",
|
||||
"Run LinkedIn enrichment for this lead": "Run LinkedIn enrichment for this lead",
|
||||
"Try to find a verified email for this lead": "Try to find a verified email for this lead",
|
||||
"Verify the lead’s email using debounce": "Verify the lead’s email using debounce",
|
||||
"Try to find a phone number for this lead": "Try to find a phone number for this lead",
|
||||
"The email of the lead to update.": "The email of the lead to update.",
|
||||
"The email of the lead to look up": "The email of the lead to look up",
|
||||
"New Activity": "New Activity",
|
||||
"Unsubscribed Recipient": "Unsubscribed Recipient",
|
||||
"Triggers for each new activity.": "Triggers for each new activity.",
|
||||
"Triggers when a recipient unsubscribes.": "Triggers when a recipient unsubscribes."
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
{
|
||||
"Enter your Lemlist API key": "Enter your Lemlist API key",
|
||||
"Mark Lead From One Campaign as Interested": "Mark Lead From One Campaign as Interested",
|
||||
"Mark Lead From One Campaign as Not Interested": "Mark Lead From One Campaign as Not Interested",
|
||||
"Mark Lead From All Campaign as Interested": "Mark Lead From All Campaign as Interested",
|
||||
"Mark Lead From All Campaigns as Not Interested": "Mark Lead From All Campaigns as Not Interested",
|
||||
"Pause Lead From All or Specific Campaigns": "Pause Lead From All or Specific Campaigns",
|
||||
"Resume Lead From All or Specific Campaigns": "Resume Lead From All or Specific Campaigns",
|
||||
"Remove Lead From Unsubscribe List": "Remove Lead From Unsubscribe List",
|
||||
"Remove Lead from A Campaign": "Remove Lead from A Campaign",
|
||||
"Unsubscribe a Lead": "Unsubscribe a Lead",
|
||||
"Add Lead To A Campaign": "Add Lead To A Campaign",
|
||||
"Update Lead From Campaign": "Update Lead From Campaign",
|
||||
"Search Lead": "Search Lead",
|
||||
"Mark a lead in a campaign as interested.": "Mark a lead in a campaign as interested.",
|
||||
"Mark a lead in a campaign as not interested.": "Mark a lead in a campaign as not interested.",
|
||||
"Mark a lead as “interested” across all campaigns.": "Mark a lead as “interested” across all campaigns.",
|
||||
"Mark a lead as “not interested” across all campaigns.": "Mark a lead as “not interested” across all campaigns.",
|
||||
"Pause a lead’s outreach across all or specific campaigns.": "Pause a lead’s outreach across all or specific campaigns.",
|
||||
"Resume a lead’s outreach across all or specific campaigns.": "Resume a lead’s outreach across all or specific campaigns.",
|
||||
"Remove a lead from “unsubscribe” list.": "Remove a lead from “unsubscribe” list.",
|
||||
"removes a lead from a specific campaign.": "removes a lead from a specific campaign.",
|
||||
"Unsubscribe a lead from a campaign.": "Unsubscribe a lead from a campaign.",
|
||||
"Adds a lead to a specific campaign with optional enrichment and lead details.": "Adds a lead to a specific campaign with optional enrichment and lead details.",
|
||||
"Updates a lead in a specific campaign.": "Updates a lead in a specific campaign.",
|
||||
"Look up a lead by email and campaign.": "Look up a lead by email and campaign.",
|
||||
"Campaign": "Campaign",
|
||||
"Lead Email": "Lead Email",
|
||||
"First Name": "名字",
|
||||
"Last Name": "名字",
|
||||
"Picture URL": "Picture URL",
|
||||
"Phone": "Phone",
|
||||
"LinkedIn URL": "LinkedIn URL",
|
||||
"Company Name": "Company Name",
|
||||
"Company Domain": "Company Domain",
|
||||
"Icebreaker": "Icebreaker",
|
||||
"Job Title": "Job Title",
|
||||
"Deduplicate": "Deduplicate",
|
||||
"LinkedIn Enrichment": "LinkedIn Enrichment",
|
||||
"Find Email": "Find Email",
|
||||
"Verify Email": "Verify Email",
|
||||
"Find Phone": "Find Phone",
|
||||
"Select a campaign": "Select a campaign",
|
||||
"The email of the lead to mark as interested.": "The email of the lead to mark as interested.",
|
||||
"The email of the lead to mark as not interested.": "The email of the lead to mark as not interested.",
|
||||
"Select a campaign (optional)": "Select a campaign (optional)",
|
||||
"The email of the lead to pause.": "The email of the lead to pause.",
|
||||
"The email of the lead to resume.": "The email of the lead to resume.",
|
||||
"The email of the lead to remove from the unsubscribe list.": "The email of the lead to remove from the unsubscribe list.",
|
||||
"The email of the lead to remove.": "The email of the lead to remove.",
|
||||
"The email of the lead to unsubscribe.": "The email of the lead to unsubscribe.",
|
||||
"The email of the lead to add": "The email of the lead to add",
|
||||
"Avoid adding the lead if it already exists in any campaign": "Avoid adding the lead if it already exists in any campaign",
|
||||
"Run LinkedIn enrichment for this lead": "Run LinkedIn enrichment for this lead",
|
||||
"Try to find a verified email for this lead": "Try to find a verified email for this lead",
|
||||
"Verify the lead’s email using debounce": "Verify the lead’s email using debounce",
|
||||
"Try to find a phone number for this lead": "Try to find a phone number for this lead",
|
||||
"The email of the lead to update.": "The email of the lead to update.",
|
||||
"The email of the lead to look up": "The email of the lead to look up",
|
||||
"New Activity": "New Activity",
|
||||
"Unsubscribed Recipient": "Unsubscribed Recipient",
|
||||
"Triggers for each new activity.": "Triggers for each new activity.",
|
||||
"Triggers when a recipient unsubscribes.": "Triggers when a recipient unsubscribes."
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from './lib/common/constants';
|
||||
import { newActivity } from './lib/triggers/new-activity';
|
||||
import { unsubscribedRecipient } from './lib/triggers/unsubscribed-recipient';
|
||||
import { markLeadFromOneCampaignAsInterested } from './lib/actions/mark-lead-from-one-campaign-as-interested';
|
||||
import { markLeadFromOneCampaignAsNotInterested } from './lib/actions/mark-lead-from-one-campaign-as-not-interested';
|
||||
import { markLeadFromAllCampaignAsInterested } from './lib/actions/mark-lead-from-all-campaign-as-interested';
|
||||
import { markLeadFromAllCampaignsAsNotInterested } from './lib/actions/mark-lead-from-all-campaigns-as-not-interested';
|
||||
import { pauseLeadFromAllOrSpecificCampaigns } from './lib/actions/pause-lead-from-all-or-specific-campaigns';
|
||||
import { resumeLeadFromAllOrSpecificCampaigns } from './lib/actions/resume-lead-from-all-or-specific-campaigns';
|
||||
import { removeLeadFromUnsubscribeList } from './lib/actions/remove-lead-from-unsubscribe-list';
|
||||
import { removeLeadFromACampaign } from './lib/actions/remove-lead-from-a-campaign';
|
||||
import { unsubscribeALead } from './lib/actions/unsubscribe-a-lead';
|
||||
import { addLeadToACampaign } from './lib/actions/add-lead-to-a-campaign';
|
||||
import { updateLeadFromCampaign } from './lib/actions/update-lead-from-campaign';
|
||||
import { searchLead } from './lib/actions/search-lead';
|
||||
|
||||
export const lemlist = createPiece({
|
||||
displayName: 'Lemlist',
|
||||
auth: lemlistAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/lemlist.png',
|
||||
authors: ['gs03-dev'],
|
||||
actions: [
|
||||
markLeadFromOneCampaignAsInterested,
|
||||
markLeadFromOneCampaignAsNotInterested,
|
||||
markLeadFromAllCampaignAsInterested,
|
||||
markLeadFromAllCampaignsAsNotInterested,
|
||||
pauseLeadFromAllOrSpecificCampaigns,
|
||||
resumeLeadFromAllOrSpecificCampaigns,
|
||||
removeLeadFromUnsubscribeList,
|
||||
removeLeadFromACampaign,
|
||||
unsubscribeALead,
|
||||
addLeadToACampaign,
|
||||
updateLeadFromCampaign,
|
||||
searchLead,
|
||||
],
|
||||
triggers: [newActivity, unsubscribedRecipient],
|
||||
});
|
||||
@@ -0,0 +1,100 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const addLeadToACampaign = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'addLeadToACampaign',
|
||||
displayName: 'Add Lead To A Campaign',
|
||||
description:
|
||||
'Adds a lead to a specific campaign with optional enrichment and lead details.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'] }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to add',
|
||||
required: true,
|
||||
}),
|
||||
firstName: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
lastName: Property.ShortText({ displayName: 'Last Name', required: false }),
|
||||
picture: Property.ShortText({
|
||||
displayName: 'Picture URL',
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({ displayName: 'Phone', required: false }),
|
||||
linkedinUrl: Property.ShortText({
|
||||
displayName: 'LinkedIn URL',
|
||||
required: false,
|
||||
}),
|
||||
companyName: Property.ShortText({
|
||||
displayName: 'Company Name',
|
||||
required: false,
|
||||
}),
|
||||
companyDomain: Property.ShortText({
|
||||
displayName: 'Company Domain',
|
||||
required: false,
|
||||
}),
|
||||
icebreaker: Property.LongText({
|
||||
displayName: 'Icebreaker',
|
||||
required: false,
|
||||
}),
|
||||
jobTitle: Property.ShortText({ displayName: 'Job Title', required: false }),
|
||||
deduplicate: Property.Checkbox({
|
||||
displayName: 'Deduplicate',
|
||||
description: 'Avoid adding the lead if it already exists in any campaign',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
linkedinEnrichment: Property.Checkbox({
|
||||
displayName: 'LinkedIn Enrichment',
|
||||
description: 'Run LinkedIn enrichment for this lead',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
findEmail: Property.Checkbox({
|
||||
displayName: 'Find Email',
|
||||
description: 'Try to find a verified email for this lead',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
verifyEmail: Property.Checkbox({
|
||||
displayName: 'Verify Email',
|
||||
description: 'Verify the lead’s email using debounce',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
findPhone: Property.Checkbox({
|
||||
displayName: 'Find Phone',
|
||||
description: 'Try to find a phone number for this lead',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const {
|
||||
campaignId,
|
||||
email,
|
||||
deduplicate,
|
||||
linkedinEnrichment,
|
||||
findEmail,
|
||||
verifyEmail,
|
||||
findPhone,
|
||||
...leadData
|
||||
} = propsValue as any;
|
||||
|
||||
return await lemlistApiService.addLeadToACampaign(auth, {
|
||||
campaignId,
|
||||
leadEmail: email,
|
||||
leadData,
|
||||
deduplicate,
|
||||
linkedinEnrichment,
|
||||
findEmail,
|
||||
verifyEmail,
|
||||
findPhone,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const markLeadFromAllCampaignAsInterested = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'markLeadFromAllCampaignAsInterested',
|
||||
displayName: 'Mark Lead From All Campaign as Interested',
|
||||
description: 'Mark a lead as “interested” across all campaigns.',
|
||||
props: {
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to mark as interested.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { email } }) {
|
||||
return await lemlistApiService.markLeadAsInterestedInAllCampaigns(auth, {
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,23 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const markLeadFromAllCampaignsAsNotInterested = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'markLeadFromAllCampaignsAsNotInterested',
|
||||
displayName: 'Mark Lead From All Campaigns as Not Interested',
|
||||
description: 'Mark a lead as “not interested” across all campaigns.',
|
||||
props: {
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to mark as not interested.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { email } }) {
|
||||
return await lemlistApiService.markLeadAsNotInterestedInAllCampaigns(auth, {
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,28 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const markLeadFromOneCampaignAsInterested = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'markLeadFromOneCampaignAsInterested',
|
||||
displayName: 'Mark Lead From One Campaign as Interested',
|
||||
description: 'Mark a lead in a campaign as interested.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({refreshers: ['auth']}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to mark as interested.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { campaignId, email } }) {
|
||||
return await lemlistApiService.markLeadAsInterestedInCampaign(
|
||||
auth,
|
||||
{
|
||||
campaignId: campaignId as string,
|
||||
leadEmail: email as string,
|
||||
}
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const markLeadFromOneCampaignAsNotInterested = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'markLeadFromOneCampaignAsNotInterested',
|
||||
displayName: 'Mark Lead From One Campaign as Not Interested',
|
||||
description: 'Mark a lead in a campaign as not interested.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'] }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to mark as not interested.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { campaignId, email } }) {
|
||||
return await lemlistApiService.markLeadAsNotInterestedInCampaign(auth, {
|
||||
campaignId: campaignId as string,
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const pauseLeadFromAllOrSpecificCampaigns = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'pauseLeadFromAllOrSpecificCampaigns',
|
||||
displayName: 'Pause Lead From All or Specific Campaigns',
|
||||
description: 'Pause a lead’s outreach across all or specific campaigns.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'], required: false }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to pause.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { campaignId, email } }) {
|
||||
return await lemlistApiService.pauseLeadInSpecificOrAllCampaigns(auth, {
|
||||
campaignId: campaignId as string,
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const removeLeadFromACampaign = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'removeLeadFromACampaign',
|
||||
displayName: 'Remove Lead from A Campaign',
|
||||
description: 'removes a lead from a specific campaign.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'] }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to remove.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { campaignId, email } }) {
|
||||
return await lemlistApiService.removeLeadFromACampaign(auth, {
|
||||
campaignId: campaignId as string,
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,22 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const removeLeadFromUnsubscribeList = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'removeLeadFromUnsubscribeList',
|
||||
displayName: 'Remove Lead From Unsubscribe List',
|
||||
description: 'Remove a lead from “unsubscribe” list.',
|
||||
props: {
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to remove from the unsubscribe list.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { email } }) {
|
||||
return await lemlistApiService.removeLeadFromUnsubscribeList(auth, {
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const resumeLeadFromAllOrSpecificCampaigns = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'resumeLeadFromAllOrSpecificCampaigns',
|
||||
displayName: 'Resume Lead From All or Specific Campaigns',
|
||||
description: 'Resume a lead’s outreach across all or specific campaigns.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'], required: false }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to resume.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { campaignId, email } }) {
|
||||
return await lemlistApiService.resumeLeadInSpecificOrAllCampaigns(auth, {
|
||||
campaignId: campaignId as string,
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,44 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const searchLead = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'searchLead',
|
||||
displayName: 'Search Lead',
|
||||
description: 'Look up a lead by email and campaign.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'], required: false }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to look up',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { email, campaignId } = propsValue as {
|
||||
email: string;
|
||||
campaignId: string;
|
||||
};
|
||||
|
||||
const leads = await lemlistApiService.getLeadByEmail(auth, email);
|
||||
|
||||
if (!Array.isArray(leads) || leads.length === 0) {
|
||||
return { found: false, message: `No leads found for ${email}` };
|
||||
}
|
||||
|
||||
const matching = campaignId
|
||||
? leads.filter((lead) => lead.campaign.id === campaignId)
|
||||
: leads;
|
||||
|
||||
if (matching.length === 0) {
|
||||
return {
|
||||
found: false,
|
||||
message: `Lead with email ${email} not found in campaign ${campaignId}`,
|
||||
};
|
||||
}
|
||||
|
||||
return { found: true, leads: matching };
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const unsubscribeALead = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'unsubscribeALead',
|
||||
displayName: 'Unsubscribe a Lead',
|
||||
description: 'Unsubscribe a lead from a campaign.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'] }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to unsubscribe.',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue: { campaignId, email } }) {
|
||||
return await lemlistApiService.unsubscribeLeadFromACampaign(auth, {
|
||||
campaignId: campaignId as string,
|
||||
leadEmail: email as string,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,60 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { campaignsDropdown } from '../common/props';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
export const updateLeadFromCampaign = createAction({
|
||||
auth: lemlistAuth,
|
||||
name: 'updateLeadFromCampaign',
|
||||
displayName: 'Update Lead From Campaign',
|
||||
description:
|
||||
'Updates a lead in a specific campaign.',
|
||||
props: {
|
||||
campaignId: campaignsDropdown({ refreshers: ['auth'] }),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Lead Email',
|
||||
description: 'The email of the lead to update.',
|
||||
required: true,
|
||||
}),
|
||||
firstName: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
required: false,
|
||||
}),
|
||||
lastName: Property.ShortText({ displayName: 'Last Name', required: false }),
|
||||
picture: Property.ShortText({
|
||||
displayName: 'Picture URL',
|
||||
required: false,
|
||||
}),
|
||||
phone: Property.ShortText({ displayName: 'Phone', required: false }),
|
||||
linkedinUrl: Property.ShortText({
|
||||
displayName: 'LinkedIn URL',
|
||||
required: false,
|
||||
}),
|
||||
companyName: Property.ShortText({
|
||||
displayName: 'Company Name',
|
||||
required: false,
|
||||
}),
|
||||
companyDomain: Property.ShortText({
|
||||
displayName: 'Company Domain',
|
||||
required: false,
|
||||
}),
|
||||
icebreaker: Property.LongText({
|
||||
displayName: 'Icebreaker',
|
||||
required: false,
|
||||
}),
|
||||
jobTitle: Property.ShortText({ displayName: 'Job Title', required: false })
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const {
|
||||
campaignId,
|
||||
email,
|
||||
...leadData
|
||||
} = propsValue as any;
|
||||
|
||||
return await lemlistApiService.updateLeadFromCampaign(auth, {
|
||||
campaignId,
|
||||
leadEmail: email,
|
||||
leadData,
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,38 @@
|
||||
import { PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { lemlistApiService } from './requests';
|
||||
import { AppConnectionType } from '@activepieces/shared';
|
||||
|
||||
export const BASE_URL = 'https://api.lemlist.com/api';
|
||||
|
||||
export const lemlistAuth = PieceAuth.SecretText({
|
||||
displayName: 'Lemlist API Key',
|
||||
description: 'Enter your Lemlist API key',
|
||||
required: true,
|
||||
validate: async ({ auth }) => {
|
||||
try {
|
||||
await lemlistApiService.fetchTeams({
|
||||
secret_text: auth,
|
||||
type: AppConnectionType.SECRET_TEXT
|
||||
}).catch((err) => {
|
||||
throw err;
|
||||
});
|
||||
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
} catch (e: any) {
|
||||
return {
|
||||
valid: false,
|
||||
error: `Auth validation error: ${e.message}`,
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const API_ENDPOINTS = {
|
||||
TEAM: '/team',
|
||||
HOOKS: '/hooks',
|
||||
CAMPAIGNS: '/campaigns',
|
||||
LEADS: '/leads',
|
||||
UNSUBSCRIBES: '/unsubscribes',
|
||||
};
|
||||
@@ -0,0 +1,46 @@
|
||||
import { Property } from '@activepieces/pieces-framework';
|
||||
import { lemlistApiService } from './requests';
|
||||
import { lemlistAuth } from './constants';
|
||||
|
||||
export const campaignsDropdown = ({
|
||||
refreshers,
|
||||
required = true,
|
||||
}: {
|
||||
refreshers: string[];
|
||||
required?: boolean;
|
||||
}) =>
|
||||
Property.Dropdown({
|
||||
auth: lemlistAuth,
|
||||
displayName: 'Campaign',
|
||||
description: required
|
||||
? 'Select a campaign'
|
||||
: 'Select a campaign (optional)',
|
||||
required,
|
||||
refreshers,
|
||||
async options({ auth }: any) {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Connect your Lemlist account first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const campaigns = await lemlistApiService.fetchCampaigns(auth);
|
||||
|
||||
return {
|
||||
options: campaigns.map((c: any) => ({
|
||||
label: c.name,
|
||||
value: c._id,
|
||||
})),
|
||||
};
|
||||
} catch (e) {
|
||||
console.error('Failed to fetch campaigns', e);
|
||||
return {
|
||||
options: [],
|
||||
placeholder: 'Unable to load campaigns',
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,244 @@
|
||||
import {
|
||||
AuthenticationType,
|
||||
HttpMethod,
|
||||
httpClient,
|
||||
} from '@activepieces/pieces-common';
|
||||
import { API_ENDPOINTS, BASE_URL } from './constants';
|
||||
import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from './constants';
|
||||
|
||||
async function fireHttpRequest({
|
||||
method,
|
||||
path,
|
||||
auth,
|
||||
body,
|
||||
}: {
|
||||
method: HttpMethod;
|
||||
path: string;
|
||||
auth: string;
|
||||
body?: unknown;
|
||||
}) {
|
||||
return await httpClient
|
||||
.sendRequest({
|
||||
method,
|
||||
url: `${BASE_URL}${path}`,
|
||||
headers: {
|
||||
Accept: 'application/json',
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body,
|
||||
authentication: {
|
||||
type: AuthenticationType.BASIC,
|
||||
username: '',
|
||||
password: auth,
|
||||
},
|
||||
})
|
||||
.then((res) => res.body);
|
||||
}
|
||||
|
||||
export const lemlistApiService = {
|
||||
async fetchTeams(auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>) {
|
||||
return await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.TEAM}`,
|
||||
method: HttpMethod.GET,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
},
|
||||
async getLeadByEmail(auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>, email: string) {
|
||||
return await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.LEADS}/${email}?version=v2`,
|
||||
method: HttpMethod.GET,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
},
|
||||
async fetchCampaigns(auth: string) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.CAMPAIGNS}?version=v2&sortBy=createdAt&sortOrder=desc`,
|
||||
method: HttpMethod.GET,
|
||||
auth,
|
||||
});
|
||||
return response.campaigns;
|
||||
},
|
||||
async removeLeadFromACampaign(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ campaignId, leadEmail }: { campaignId: string; leadEmail: string }
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.CAMPAIGNS}/${campaignId}${API_ENDPOINTS.LEADS}/${leadEmail}?action=remove`,
|
||||
method: HttpMethod.DELETE,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
return response;
|
||||
},
|
||||
async addLeadToACampaign(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{
|
||||
campaignId,
|
||||
leadEmail,
|
||||
leadData,
|
||||
deduplicate,
|
||||
linkedinEnrichment,
|
||||
findEmail,
|
||||
verifyEmail,
|
||||
findPhone,
|
||||
}: {
|
||||
campaignId: string;
|
||||
leadEmail: string;
|
||||
leadData?: Record<string, unknown>;
|
||||
deduplicate?: boolean;
|
||||
linkedinEnrichment?: boolean;
|
||||
findEmail?: boolean;
|
||||
verifyEmail?: boolean;
|
||||
findPhone?: boolean;
|
||||
}
|
||||
) {
|
||||
const queryParams = new URLSearchParams();
|
||||
if (deduplicate) queryParams.append('deduplicate', 'true');
|
||||
if (linkedinEnrichment) queryParams.append('linkedinEnrichment', 'true');
|
||||
if (findEmail) queryParams.append('findEmail', 'true');
|
||||
if (verifyEmail) queryParams.append('verifyEmail', 'true');
|
||||
if (findPhone) queryParams.append('findPhone', 'true');
|
||||
|
||||
const query = queryParams.toString() ? `?${queryParams.toString()}` : '';
|
||||
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.CAMPAIGNS}/${campaignId}${API_ENDPOINTS.LEADS}/${leadEmail}${query}`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
body: leadData,
|
||||
});
|
||||
|
||||
return response;
|
||||
},
|
||||
async updateLeadFromCampaign(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{
|
||||
campaignId,
|
||||
leadEmail,
|
||||
leadData,
|
||||
}: {
|
||||
campaignId: string;
|
||||
leadEmail: string;
|
||||
leadData?: Record<string, unknown>;
|
||||
}
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.CAMPAIGNS}/${campaignId}${API_ENDPOINTS.LEADS}/${leadEmail}`,
|
||||
method: HttpMethod.PATCH,
|
||||
auth: auth.secret_text,
|
||||
body: leadData,
|
||||
});
|
||||
|
||||
return response;
|
||||
},
|
||||
async unsubscribeLeadFromACampaign(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ campaignId, leadEmail }: { campaignId: string; leadEmail: string }
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.CAMPAIGNS}/${campaignId}${API_ENDPOINTS.LEADS}/${leadEmail}`,
|
||||
method: HttpMethod.DELETE,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
return response;
|
||||
},
|
||||
async markLeadAsInterestedInCampaign(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ campaignId, leadEmail }: { campaignId: string; leadEmail: string }
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.CAMPAIGNS}/${campaignId}${API_ENDPOINTS.LEADS}/${leadEmail}/interested`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
return response;
|
||||
},
|
||||
async markLeadAsInterestedInAllCampaigns(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ leadEmail }: { leadEmail: string }
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.LEADS}/interested/${leadEmail}`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
return response;
|
||||
},
|
||||
async markLeadAsNotInterestedInAllCampaigns(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ leadEmail }: { leadEmail: string }
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.LEADS}/notinterested/${leadEmail}`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
return response;
|
||||
},
|
||||
async markLeadAsNotInterestedInCampaign(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ campaignId, leadEmail }: { campaignId: string; leadEmail: string }
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.CAMPAIGNS}/${campaignId}${API_ENDPOINTS.LEADS}/${leadEmail}/notinterested`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
return response;
|
||||
},
|
||||
async pauseLeadInSpecificOrAllCampaigns(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ campaignId, leadEmail }: { campaignId?: string; leadEmail: string }
|
||||
) {
|
||||
const query = campaignId ? `?campaignId=${campaignId}` : '';
|
||||
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.LEADS}/pause/${leadEmail}${query}`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
|
||||
return response;
|
||||
},
|
||||
async resumeLeadInSpecificOrAllCampaigns(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ campaignId, leadEmail }: { campaignId?: string; leadEmail: string }
|
||||
) {
|
||||
const query = campaignId ? `?campaignId=${campaignId}` : '';
|
||||
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.LEADS}/start/${leadEmail}${query}`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
|
||||
return response;
|
||||
},
|
||||
async removeLeadFromUnsubscribeList(
|
||||
auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>,
|
||||
{ leadEmail }: { leadEmail: string }
|
||||
) {
|
||||
const response = await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.UNSUBSCRIBES}/${leadEmail}`,
|
||||
method: HttpMethod.DELETE,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
|
||||
return response;
|
||||
},
|
||||
async createWebhook(auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>, payload: any) {
|
||||
return await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.HOOKS}`,
|
||||
method: HttpMethod.POST,
|
||||
auth: auth.secret_text,
|
||||
body: payload,
|
||||
});
|
||||
},
|
||||
async deleteWebhook(auth: AppConnectionValueForAuthProperty<typeof lemlistAuth>, webhookId: string) {
|
||||
return await fireHttpRequest({
|
||||
path: `${API_ENDPOINTS.HOOKS}/${webhookId}`,
|
||||
method: HttpMethod.DELETE,
|
||||
auth: auth.secret_text,
|
||||
});
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,38 @@
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
const CACHE_KEY = 'lemlist_new_activity_trigger_key';
|
||||
|
||||
export const newActivity = createTrigger({
|
||||
auth: lemlistAuth,
|
||||
name: 'newActivity',
|
||||
displayName: 'New Activity',
|
||||
description: 'Triggers for each new activity.',
|
||||
props: {},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
const response = await lemlistApiService.createWebhook(context.auth, {
|
||||
targetUrl: context.webhookUrl,
|
||||
});
|
||||
|
||||
await context.store.put(CACHE_KEY, {
|
||||
webhookId: response._id,
|
||||
});
|
||||
},
|
||||
async onDisable(context) {
|
||||
const cachedWebhookData: any = await context.store.get(CACHE_KEY);
|
||||
|
||||
if (cachedWebhookData) {
|
||||
await lemlistApiService
|
||||
.deleteWebhook(context.auth, cachedWebhookData.webhookId)
|
||||
.then(async () => {
|
||||
await context.store.delete(CACHE_KEY);
|
||||
});
|
||||
}
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,39 @@
|
||||
import { createTrigger, TriggerStrategy } from '@activepieces/pieces-framework';
|
||||
import { lemlistAuth } from '../common/constants';
|
||||
import { lemlistApiService } from '../common/requests';
|
||||
|
||||
const CACHE_KEY = 'lemlist_unsubscribed_recipient_trigger_key';
|
||||
|
||||
export const unsubscribedRecipient = createTrigger({
|
||||
auth: lemlistAuth,
|
||||
name: 'unsubscribedRecipient',
|
||||
displayName: 'Unsubscribed Recipient',
|
||||
description: 'Triggers when a recipient unsubscribes.',
|
||||
props: {},
|
||||
sampleData: {},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(context) {
|
||||
const response = await lemlistApiService.createWebhook(context.auth, {
|
||||
targetUrl: context.webhookUrl,
|
||||
type: 'emailsUnsubscribed',
|
||||
});
|
||||
|
||||
await context.store.put(CACHE_KEY, {
|
||||
webhookId: response._id,
|
||||
});
|
||||
},
|
||||
async onDisable(context) {
|
||||
const cachedWebhookData: any = await context.store.get(CACHE_KEY);
|
||||
|
||||
if (cachedWebhookData) {
|
||||
await lemlistApiService
|
||||
.deleteWebhook(context.auth, cachedWebhookData.webhookId)
|
||||
.then(async () => {
|
||||
await context.store.delete(CACHE_KEY);
|
||||
});
|
||||
}
|
||||
},
|
||||
async run(context) {
|
||||
return [context.payload.body];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"extends": "../../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"importHelpers": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user