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:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-smoove
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-smoove` to build the library.

View File

@@ -0,0 +1,10 @@
{
"name": "@activepieces/piece-smoove",
"version": "0.0.7",
"type": "commonjs",
"main": "./src/index.js",
"types": "./src/index.d.ts",
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-smoove",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/smoove/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/smoove",
"tsConfig": "packages/pieces/community/smoove/tsconfig.lib.json",
"packageJson": "packages/pieces/community/smoove/package.json",
"main": "packages/pieces/community/smoove/src/index.ts",
"assets": [
"packages/pieces/community/smoove/*.md",
{
"input": "packages/pieces/community/smoove/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/smoove",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove ist eine Plattform zur Erstellung und Verwaltung Ihrer E-Mail-Liste und zum Versenden von E-Mails an Ihre Abonnenten.",
"Add or Update Subscriber": "Abonnent hinzufügen oder aktualisieren",
"Create a List": "Liste erstellen",
"Find Subscriber": "Abonnent finden",
"Unsubscribe Subscriber": "Abonnent abbestellen",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Abonnenten-Daten erstellen oder aktualisieren und Listen abonnieren/abbestellen",
"Create a new mailing list with custom settings and descriptions": "Erstellen Sie eine neue Mailingliste mit individuellen Einstellungen und Beschreibungen",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Suche nach Abonnenten mit eindeutigen Identifikatoren (ID, E-Mail, Telefon, externe ID) oder Namen",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Einen Kontakt von allen Listen abbestellen und in die Liste \"Abbestellen\" verschieben",
"Email Address": "E-Mail-Adresse",
"First Name": "Vorname",
"Last Name": "Nachname",
"Date of Birth": "Geburtsdatum",
"Phone Number": "Telefonnummer",
"Cell Phone": "Handy",
"Address": "Adresse",
"City": "Stadt",
"Country": "Land",
"Company": "Firma",
"Position": "Position",
"External ID": "Externe ID",
"Campaign Source": "Kampagnenquelle",
"Can Receive Emails": "Kann E-Mails empfangen",
"Can Receive SMS": "Kann SMS empfangen",
"Lists": "Listen",
"Custom Fields": "Eigene Felder",
"Operation": "Operation",
"List Name": "Listenname",
"Description": "Beschreibung",
"Public Name": "Öffentlicher Name",
"Public Description": "Öffentliche Beschreibung",
"Is Public": "Ist öffentlich",
"Allow Users to Subscribe": "Benutzern erlauben, sich zu abonnieren",
"Allow Users to Unsubscribe": "Benutzern erlauben, sich abzumelden",
"Is Portal": "Ist Portal",
"Search Type": "Suchtyp",
"Contact ID": "Kontakt-ID",
"Fields to Return": "Felder zum Zurückgeben",
"Include Custom Fields": "Benutzerdefinierte Felder einbeziehen",
"Include Linked Lists": "Verknüpfte Listen einbeziehen",
"Skip Records": "Datensätze überspringen",
"Max Records": "Max. Datensätze",
"Sort By": "Sortieren nach",
"Contact": "Kontakt",
"Unsubscribe Reason": "Grund für Abmeldung",
"Select an existing contact email or type a new one": "Wählen Sie eine vorhandene Kontakt-E-Mail oder geben Sie eine neue ein",
"The first name of the contact": "Der Vorname des Kontakts",
"The last name of the contact": "Der Nachname des Kontakts",
"The date of birth of the contact": "Das Geburtsdatum des Kontakts",
"The primary phone number of the contact": "Die primäre Telefonnummer des Kontakts",
"The cell phone number of the contact": "Die Handynummer des Kontakts",
"The street address of the contact": "Die Straßenadresse des Kontakts",
"The city of the contact": "Die Stadt des Kontakts",
"The country of the contact": "Das Land des Kontakts",
"The company name of the contact": "Der Firmenname des Kontakts",
"The job title or position of the contact": "Der Jobtitel oder die Position des Kontakts",
"External identifier for the contact (useful for syncing with other systems)": "Externe Kennung für den Kontakt (nützlich für die Synchronisierung mit anderen Systemen)",
"The campaign source that brought this contact": "Die Kampagnenquelle, die diesen Kontakt brachte",
"Whether the contact can receive email communications": "Ob der Kontakt E-Mail-Kommunikation empfangen kann",
"Whether the contact can receive SMS messages": "Ob der Kontakt SMS-Nachrichten empfangen kann",
"Select lists to subscribe the contact to": "Wählen Sie Listen, um den Kontakt zu abonnieren",
"Custom fields data (JSON object with field IDs as keys)": "Benutzerdefinierte Felder Daten (JSON-Objekt mit Feld-IDs als Schlüssel)",
"Choose the contact operation type": "Wählen Sie den Typ der Kontaktoperation",
"The name of the list to be created": "Der Name der zu erstellenden Liste",
"Internal description of the list for your reference": "Interne Beschreibung der Liste für Ihre Referenz",
"The public-facing name of the list visible to subscribers": "Der öffentliche Name der Liste, der für Abonnenten sichtbar ist",
"Public description of the list visible to subscribers": "Öffentliche Beschreibung der Liste, die für Abonnenten sichtbar ist",
"Make this list publicly visible": "Diese Liste öffentlich machen",
"Allow users to subscribe to this list themselves": "Benutzern erlauben, diese Liste selbst zu abonnieren",
"Allow users to unsubscribe from this list themselves": "Benutzern erlauben, sich von dieser Liste selbst abzumelden",
"Enable portal access for this list": "Portalzugriff für diese Liste aktivieren",
"Choose how to search for subscribers": "Wählen Sie die Suche nach Abonnenten",
"The unique ID of the contact": "Die eindeutige ID des Kontakts",
"The email address of the contact": "Die E-Mail-Adresse des Kontakts",
"The phone number of the contact (cellphone)": "Die Telefonnummer des Kontakts (Handy)",
"The external ID of the contact": "Die externe ID des Kontakts",
"Search by first name": "Nach Vornamen suchen",
"Search by last name": "Nach Nachnamen suchen",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Kommaseparierte Liste von Feldern, die zurückgegeben werden sollen (z.B. Id, E-Mail, Vorname,Nachname). Leer lassen für alle Felder.",
"Include custom fields in the response": "Benutzerdefinierte Felder in die Antwort einbeziehen",
"Include linked lists in the response": "Verknüpfte Listen in die Antwort einbeziehen",
"Number of records to skip (for pagination, default: 0)": "Anzahl der zu überspringenden Datensätze (für Seiteneinstellung, Standard: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Maximale Anzahl der zurückzugebenden Datensätze (Standard: 100, max: 100)",
"Sort the results by a specific field": "Ergebnisse nach einem bestimmten Feld sortieren",
"Select the contact to unsubscribe": "Kontakt zum Abmelden auswählen",
"Reason for unsubscribing the contact": "Grund für die Abmeldung des Kontakts",
"Create Only": "Nur erstellen",
"Create or Update if Exists": "Erstelle oder aktualisiere wenn vorhanden",
"Restore if Deleted": "Wiederherstellen wenn gelöscht",
"Restore if Unsubscribed": "Wiederherstellen, wenn abgemeldet",
"Override Nullable Values": "Nullable Werte überschreiben",
"By Identifier (ID, Email, Phone, External ID)": "Per Identifikator (ID, E-Mail, Telefon, externe ID)",
"By Name (First Name, Last Name)": "Nach Name (Vorname, Nachname)",
"All Active Contacts (with pagination)": "Alle aktiven Kontakte (mit Seitenination)",
"ID (Newest First)": "ID (Neueste Erste)",
"ID (Oldest First)": "ID (Älteste zuerst)",
"Email (A-Z)": "E-Mail (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "Vorname (A-Z)",
"First Name (Z-A)": "Vorname (Z-A)",
"Last Changed (Newest)": "Zuletzt geändert (Neueste)",
"Last Changed (Oldest)": "Zuletzt geändert (Älteste)",
"Signup Date (Newest)": "Anmeldedatum (Neuest)",
"Signup Date (Oldest)": "Anmeldedatum (älteste)",
"New List Created": "Neue Liste erstellt",
"New Subscriber": "Neuer Abonnent",
"New Form Created": "Neues Formular erstellt",
"New Lead Submitted": "Neuer Lead eingereicht",
"Fires when a new mailing list is created in your Smoove account": "Feuert ab, wenn eine neue Mailingliste in Ihrem Smoove-Konto erstellt wird",
"Fires when a new subscriber is added to your Smoove account": "Feuert ab, wenn ein neuer Abonnent zu Ihrem Smoove-Konto hinzugefügt wird",
"Fires when a new form/landing page is created in your Smoove account": "Feuert ab, wenn eine neue Formular/Landing-Seite in Ihrem Smoove-Konto erstellt wird",
"Fires when a lead submits via form, popup, or mobile campaign": "Feuert ab, wenn ein Lead Formular, Popup oder mobile Kampagne absendet",
"Fields to Include": "Zu berücksichtigende Felder",
"Sort Order": "Sortierung",
"Max Lists to Monitor": "Max. zu überwachende Listen",
"Join Source Filter": "Quellfilter beitreten",
"Max Items to Check": "Max. zu überprüfende Elemente",
"Form Type Filter": "Formulartyp-Filter",
"Monitoring Mode": "Überwachungsmodus",
"LandingPage/Form ID": "Startseite/Formular-ID",
"Include Full Contact Details": "Füge vollständige Kontaktdaten hinzu",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Kommaseparierte Liste der einzuschließenden Felder (z.B. id,name,description,contactsCount). Leer lassen für alle Felder.",
"How to sort the lists for monitoring": "Sortieren der Listen für die Überwachung",
"Maximum number of lists to check for new additions (1-100)": "Maximale Anzahl von Listen, die nach neuen Ergänzungen gesucht werden sollen (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Kommaseparierte Felder zum Einfügen (z. B. Id, E-Mail, Vorname,Nachname,Zeitstempelregistrierung). Leer lassen für Standardfelder.",
"Include custom field data in subscriber information": "Fügen Sie benutzerdefinierte Feld-Daten in die Abonnenten-Informationen ein",
"Include list associations in subscriber information": "Listenzuordnungen in Abonnenteninformationen einbeziehen",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Abonnenten filtern, wie sie beigetreten sind (als \"Alle\" lassen, um alle Quellen zu überwachen)",
"How to sort contacts for monitoring new subscribers": "Wie sortieren Sie Kontakte für die Überwachung neuer Abonnenten",
"Maximum number of contacts to check for new subscribers (1-100)": "Maximale Anzahl von Kontakten, die nach neuen Abonnenten gesucht werden sollen (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Nach einem bestimmten Formulartyp filtern oder \"Alle\" wählen, um alle Formulartypen zu überwachen",
"Choose whether to monitor all forms or a specific form": "Wählen Sie, ob alle Formulare oder ein bestimmtes Formular überwachen sollen",
"Select the andingPage/Form ": "Wählen Sie die andingPage/das Formular ",
"Include custom field data in the lead submission": "Fügen Sie benutzerdefinierte Felddaten in die Lead-Sendung ein",
"Include complete contact information in the submission data": "Fügen Sie vollständige Kontaktinformationen in die Einreichungsdaten ein",
"Newest First (by ID)": "Neueste zuerst (nach ID)",
"Oldest First (by ID)": "Älteste zuerst (nach ID)",
"Name (A-Z)": "Name (A-Z)",
"Name (Z-A)": "Name (Z-A)",
"All Sources": "Alle Quellen",
"Unknown": "Unbekannt",
"Manual Entry": "Manueller Eintrag",
"Import": "Importieren",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Startseite",
"Embed Form": "Formular einbetten",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "Formular",
"Automation": "Automatisierung",
"Newest Signups First": "Neueste Anmeldungen zuerst",
"Oldest Signups First": "Älteste Anmeldungen zuerst",
"Recently Changed First": "Zuletzt zuerst geändert",
"All Types": "Alle Typen",
"Facebook Form": "Facebook Formular",
"Mobile Form": "Mobiles Formular",
"Popup Form": "Popup-Formular",
"All Forms/Landing Pages": "Alle Formulare/Landing Seiten",
"Specific Form/Landing Page": "Spezifische Formular/Landing-Seite"
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "smoove es una plataforma para crear y administrar tu lista de correo electrónico y enviar correos electrónicos a tus suscriptores.",
"Add or Update Subscriber": "Añadir o actualizar suscriptores",
"Create a List": "Crear una lista",
"Find Subscriber": "Buscar suscriptores",
"Unsubscribe Subscriber": "Darse de baja de suscriptores",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Crear o actualizar datos del suscriptor y suscribirse/darse de baja de las listas",
"Create a new mailing list with custom settings and descriptions": "Crear una nueva lista de correo con configuraciones y descripciones personalizadas",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Buscar suscriptores por identificadores únicos (ID, correo electrónico, teléfono, ID externa) o nombre",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Darse de baja de un contacto de todas las listas y moverlos a la lista de \"Darse de baja\"",
"Email Address": "Dirección de email",
"First Name": "Nombre",
"Last Name": "Apellido",
"Date of Birth": "Fecha de nacimiento",
"Phone Number": "Número de teléfono",
"Cell Phone": "Teléfono",
"Address": "Dirección",
"City": "Ciudad",
"Country": "País",
"Company": "Empresa",
"Position": "Posición",
"External ID": "ID Externo",
"Campaign Source": "Origen de campaña",
"Can Receive Emails": "Puede recibir correos electrónicos",
"Can Receive SMS": "Puede recibir SMS",
"Lists": "Listas",
"Custom Fields": "Campos personalizados",
"Operation": "Operación",
"List Name": "Nombre de lista",
"Description": "Descripción",
"Public Name": "Nombre público",
"Public Description": "Descripción pública",
"Is Public": "Es público",
"Allow Users to Subscribe": "Permitir a los usuarios suscribirse",
"Allow Users to Unsubscribe": "Permitir a los usuarios darse de baja",
"Is Portal": "Es Portal",
"Search Type": "Tipo de búsqueda",
"Contact ID": "ID de contacto",
"Fields to Return": "Campos a devolver",
"Include Custom Fields": "Incluye campos personalizados",
"Include Linked Lists": "Incluye listas vinculadas",
"Skip Records": "Saltar registros",
"Max Records": "Grabaciones máximas",
"Sort By": "Ordenar por",
"Contact": "Contacto",
"Unsubscribe Reason": "Razón de desuscripción",
"Select an existing contact email or type a new one": "Seleccione un correo electrónico de contacto existente o escriba uno nuevo",
"The first name of the contact": "El nombre del contacto",
"The last name of the contact": "El apellido del contacto",
"The date of birth of the contact": "La fecha de nacimiento del contacto",
"The primary phone number of the contact": "El número de teléfono principal del contacto",
"The cell phone number of the contact": "El número de teléfono celular del contacto",
"The street address of the contact": "La dirección del contacto",
"The city of the contact": "La ciudad del contacto",
"The country of the contact": "El país del contacto",
"The company name of the contact": "El nombre de la empresa del contacto",
"The job title or position of the contact": "El título o posición del trabajo del contacto",
"External identifier for the contact (useful for syncing with other systems)": "Identificador externo para el contacto (útil para sincronizar con otros sistemas)",
"The campaign source that brought this contact": "La fuente de la campaña que trajo este contacto",
"Whether the contact can receive email communications": "Si el contacto puede recibir comunicaciones por correo electrónico",
"Whether the contact can receive SMS messages": "Si el contacto puede recibir mensajes SMS",
"Select lists to subscribe the contact to": "Seleccionar listas a las que suscribir el contacto",
"Custom fields data (JSON object with field IDs as keys)": "Datos de campos personalizados (objeto JSON con ID de campo como claves)",
"Choose the contact operation type": "Elija el tipo de operación de contacto",
"The name of the list to be created": "El nombre de la lista a crear",
"Internal description of the list for your reference": "Descripción interna de la lista para su referencia",
"The public-facing name of the list visible to subscribers": "El nombre público de la lista visible para los suscriptores",
"Public description of the list visible to subscribers": "Descripción pública de la lista visible para los suscriptores",
"Make this list publicly visible": "Hacer esta lista visible públicamente",
"Allow users to subscribe to this list themselves": "Permitir a los usuarios suscribirse a esta lista en sí mismos",
"Allow users to unsubscribe from this list themselves": "Permitir a los usuarios darse de baja de esta lista",
"Enable portal access for this list": "Habilitar acceso al portal para esta lista",
"Choose how to search for subscribers": "Elegir cómo buscar suscriptores",
"The unique ID of the contact": "El ID único del contacto",
"The email address of the contact": "La dirección de correo electrónico del contacto",
"The phone number of the contact (cellphone)": "El número de teléfono del contacto (celular)",
"The external ID of the contact": "El ID externo del contacto",
"Search by first name": "Buscar por nombre",
"Search by last name": "Buscar por apellido",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Lista separada por comas de campos a retornar (por ejemplo, id,email,nombre,apellido). Dejar en blanco para todos los campos.",
"Include custom fields in the response": "Incluye campos personalizados en la respuesta",
"Include linked lists in the response": "Incluye listas enlazadas en la respuesta",
"Number of records to skip (for pagination, default: 0)": "Número de registros a omitir (para paginación, predeterminado: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Número máximo de registros a devolver (por defecto: 100, max: 100)",
"Sort the results by a specific field": "Ordenar los resultados por un campo específico",
"Select the contact to unsubscribe": "Seleccione el contacto para darse de baja",
"Reason for unsubscribing the contact": "Razón para cancelar la suscripción al contacto",
"Create Only": "Sólo crear",
"Create or Update if Exists": "Crear o actualizar si existe",
"Restore if Deleted": "Restaurar si se borra",
"Restore if Unsubscribed": "Restaurar si se cancela la suscripción",
"Override Nullable Values": "Anular Valores Nullables",
"By Identifier (ID, Email, Phone, External ID)": "Por identificador (ID, Email, Phone, ID Externo)",
"By Name (First Name, Last Name)": "Por nombre (nombre, apellido)",
"All Active Contacts (with pagination)": "Todos los contactos activos (con paginación)",
"ID (Newest First)": "ID (el primero más reciente)",
"ID (Oldest First)": "ID (el más antiguo primero)",
"Email (A-Z)": "Email (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "Nombre (A-Z)",
"First Name (Z-A)": "Nombre (Z-A)",
"Last Changed (Newest)": "Último cambio (más reciente)",
"Last Changed (Oldest)": "Último cambio (más antiguo)",
"Signup Date (Newest)": "Fecha de registro (más reciente)",
"Signup Date (Oldest)": "Fecha de registro (más antiguo)",
"New List Created": "Nueva lista creada",
"New Subscriber": "Nuevo suscriptor",
"New Form Created": "Nuevo formulario creado",
"New Lead Submitted": "Nuevo plomo enviado",
"Fires when a new mailing list is created in your Smoove account": "Dispara cuando se crea una nueva lista de correo en tu cuenta de smoove",
"Fires when a new subscriber is added to your Smoove account": "Dispara cuando se añade un nuevo suscriptor a tu cuenta de smoove",
"Fires when a new form/landing page is created in your Smoove account": "Dispara cuando se crea un nuevo formulario/página de inicio en tu cuenta de smoove",
"Fires when a lead submits via form, popup, or mobile campaign": "Dispara cuando un líder envía una campaña a través de formulario, ventana emergente o móvil",
"Fields to Include": "Campos a incluir",
"Sort Order": "Ordenar",
"Max Lists to Monitor": "Listas máximas para el seguidor",
"Join Source Filter": "Unirse al filtro de origen",
"Max Items to Check": "Máximo de elementos a comprobar",
"Form Type Filter": "Filtro de tipo de formulario",
"Monitoring Mode": "Modo de seguimiento",
"LandingPage/Form ID": "ID del Formulario",
"Include Full Contact Details": "Incluye detalles completos de contacto",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Lista separada por comas de campos a incluir (por ejemplo, id,nombre,descripción,contactsCount). Dejar vacío para todos los campos.",
"How to sort the lists for monitoring": "Cómo ordenar las listas para monitorear",
"Maximum number of lists to check for new additions (1-100)": "Número máximo de listas a buscar nuevas adiciones (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Campos separados por comas a incluir (por ejemplo, id,email,nombre,apellido,timestampSignup). Dejar en blanco para los campos predeterminados.",
"Include custom field data in subscriber information": "Incluye datos de campo personalizado en la información del suscriptor",
"Include list associations in subscriber information": "Incluye asociaciones de la lista en la información del suscriptor",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Filtrar suscriptores por cómo se unieron (dejar como \"Todos\" para monitorear todas las fuentes)",
"How to sort contacts for monitoring new subscribers": "Cómo ordenar contactos para monitorear nuevos suscriptores",
"Maximum number of contacts to check for new subscribers (1-100)": "Número máximo de contactos a buscar nuevos suscriptores (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Filtrar por tipo de formulario específico, o seleccionar \"Todos\" para monitorear todos los tipos de formulario",
"Choose whether to monitor all forms or a specific form": "Elija si desea monitorizar todos los formularios o un formulario específico",
"Select the andingPage/Form ": "Seleccionar andingPage/Form ",
"Include custom field data in the lead submission": "Incluye datos de campo personalizado en el envío principal",
"Include complete contact information in the submission data": "Incluye información completa de contacto en los datos de envío",
"Newest First (by ID)": "Último primero (por ID)",
"Oldest First (by ID)": "Lo más antiguo primero (por ID)",
"Name (A-Z)": "Nombre (A-Z)",
"Name (Z-A)": "Nombre (Z-A)",
"All Sources": "Todas las fuentes",
"Unknown": "Desconocido",
"Manual Entry": "Entrada manual",
"Import": "Importar",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Página de tierra",
"Embed Form": "Formulario integrado",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "Forma",
"Automation": "Automatización",
"Newest Signups First": "Registros más nuevos primero",
"Oldest Signups First": "Registros más antiguos primero",
"Recently Changed First": "Cambiado recientemente primero",
"All Types": "Todos los tipos",
"Facebook Form": "Formulario de Facebook",
"Mobile Form": "Formulario móvil",
"Popup Form": "Forma emergente",
"All Forms/Landing Pages": "Todos los formularios/páginas de tierra",
"Specific Form/Landing Page": "Página de Formulario Específico"
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove est une plateforme pour créer et gérer votre liste de courriels et envoyer des courriels à vos abonnés.",
"Add or Update Subscriber": "Ajouter ou mettre à jour l'abonné",
"Create a List": "Créer une liste",
"Find Subscriber": "Trouver un abonné",
"Unsubscribe Subscriber": "Se désabonner de l'abonné",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Créer ou mettre à jour les données des abonnés, et s'abonner/se désabonner des listes",
"Create a new mailing list with custom settings and descriptions": "Créer une nouvelle liste de diffusion avec des paramètres et des descriptions personnalisés",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Rechercher des abonnés par identifiants uniques (ID, email, téléphone, ID externe) ou par nom",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Désabonner un contact de toutes les listes et le déplacer vers la liste \"Désabonné\"",
"Email Address": "Adresse e-mail",
"First Name": "First Name",
"Last Name": "Last Name",
"Date of Birth": "Date de naissance",
"Phone Number": "Numéro de téléphone",
"Cell Phone": "Téléphone cellulaire",
"Address": "Adresses",
"City": "Ville",
"Country": "Pays",
"Company": "Entreprise",
"Position": "Position",
"External ID": "ID externe",
"Campaign Source": "Source de la campagne",
"Can Receive Emails": "Peut recevoir des E-mails",
"Can Receive SMS": "Peut recevoir des SMS",
"Lists": "Listes",
"Custom Fields": "Champs personnalisés",
"Operation": "Opération",
"List Name": "Nom de la liste",
"Description": "Libellé",
"Public Name": "Nom public",
"Public Description": "Description publique",
"Is Public": "Est public",
"Allow Users to Subscribe": "Autoriser les utilisateurs à s'abonner",
"Allow Users to Unsubscribe": "Autoriser les utilisateurs à se désabonner",
"Is Portal": "Portail",
"Search Type": "Type de recherche",
"Contact ID": "ID du contact",
"Fields to Return": "Champs à retourner",
"Include Custom Fields": "Inclure les champs personnalisés",
"Include Linked Lists": "Inclure les listes liées",
"Skip Records": "Ignorer les enregistrements",
"Max Records": "Nombre maximum d'enregistrements",
"Sort By": "Trier par",
"Contact": "Contacter",
"Unsubscribe Reason": "Raison de la désinscription",
"Select an existing contact email or type a new one": "Sélectionnez un e-mail de contact existant ou tapez un nouveau",
"The first name of the contact": "Le prénom du contact",
"The last name of the contact": "Le nom de famille du contact",
"The date of birth of the contact": "La date de naissance du contact",
"The primary phone number of the contact": "Le numéro de téléphone principal du contact",
"The cell phone number of the contact": "Le numéro de téléphone cellulaire du contact",
"The street address of the contact": "L'adresse postale du contact",
"The city of the contact": "La ville du contact",
"The country of the contact": "Le pays du contact",
"The company name of the contact": "Le nom de la société du contact",
"The job title or position of the contact": "Le titre du poste ou le poste du contact",
"External identifier for the contact (useful for syncing with other systems)": "Identifiant externe pour le contact (utile pour la synchronisation avec d'autres systèmes)",
"The campaign source that brought this contact": "La source de la campagne qui a amené ce contact",
"Whether the contact can receive email communications": "Si le contact peut recevoir des communications par e-mail",
"Whether the contact can receive SMS messages": "Si le contact peut recevoir des messages SMS",
"Select lists to subscribe the contact to": "Sélectionnez les listes auxquelles s'abonner le contact",
"Custom fields data (JSON object with field IDs as keys)": "Données de champs personnalisés (objet JSON avec ID de champ comme clés)",
"Choose the contact operation type": "Choisissez le type d'opération de contact",
"The name of the list to be created": "Le nom de la liste à créer",
"Internal description of the list for your reference": "Description interne de la liste de votre référence",
"The public-facing name of the list visible to subscribers": "Le nom public de la liste visible aux abonnés",
"Public description of the list visible to subscribers": "Description publique de la liste visible aux abonnés",
"Make this list publicly visible": "Rendre cette liste visible publiquement",
"Allow users to subscribe to this list themselves": "Permettre aux utilisateurs de s'abonner à cette liste eux-mêmes",
"Allow users to unsubscribe from this list themselves": "Permettre aux utilisateurs de se désabonner de cette liste eux-mêmes",
"Enable portal access for this list": "Activer l'accès au portail pour cette liste",
"Choose how to search for subscribers": "Choisir comment rechercher des abonnés",
"The unique ID of the contact": "L'ID unique du contact",
"The email address of the contact": "L'adresse e-mail du contact",
"The phone number of the contact (cellphone)": "Le numéro de téléphone du contact (téléphone cellulaire)",
"The external ID of the contact": "L'ID externe du contact",
"Search by first name": "Recherche par prénom",
"Search by last name": "Rechercher par nom de famille",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Liste de champs séparés par des virgules à retourner (par exemple, id,email,firstName,lastName). Laisser vide pour tous les champs.",
"Include custom fields in the response": "Inclure les champs personnalisés dans la réponse",
"Include linked lists in the response": "Inclure les listes liées dans la réponse",
"Number of records to skip (for pagination, default: 0)": "Nombre d'enregistrements à ignorer (pour la pagination, par défaut: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Nombre maximum d'enregistrements à retourner (par défaut: 100, max: 100)",
"Sort the results by a specific field": "Trier les résultats par champ spécifique",
"Select the contact to unsubscribe": "Sélectionnez le contact à désabonner",
"Reason for unsubscribing the contact": "Raison de la désinscription du contact",
"Create Only": "Créer uniquement",
"Create or Update if Exists": "Créer ou mettre à jour si existe",
"Restore if Deleted": "Restaurer si supprimé",
"Restore if Unsubscribed": "Restaurer si désabonné",
"Override Nullable Values": "Remplacer les valeurs Nullables",
"By Identifier (ID, Email, Phone, External ID)": "Par identifiant (ID, Email, Téléphone, ID externe)",
"By Name (First Name, Last Name)": "Par nom (prénom, nom)",
"All Active Contacts (with pagination)": "Tous les contacts actifs (avec pagination)",
"ID (Newest First)": "ID (plus récent d'abord)",
"ID (Oldest First)": "ID (plus ancien d'abord)",
"Email (A-Z)": "Courriel (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "Prénom (A-Z)",
"First Name (Z-A)": "Prénom (Z-A)",
"Last Changed (Newest)": "Dernier changement (plus récent)",
"Last Changed (Oldest)": "Dernier changement (plus récent)",
"Signup Date (Newest)": "Date d'inscription (plus récente)",
"Signup Date (Oldest)": "Date d'inscription (plus récent)",
"New List Created": "Nouvelle liste créée",
"New Subscriber": "Nouvel abonné",
"New Form Created": "Nouveau formulaire créé",
"New Lead Submitted": "Nouveau prospect soumis",
"Fires when a new mailing list is created in your Smoove account": "Se déclenche lorsqu'une nouvelle liste de diffusion est créée dans votre compte Smoove",
"Fires when a new subscriber is added to your Smoove account": "Se déclenche lorsqu'un nouvel abonné est ajouté à votre compte Smoove",
"Fires when a new form/landing page is created in your Smoove account": "Tire quand une nouvelle page de formulaire/de destination est créée dans votre compte Smoove",
"Fires when a lead submits via form, popup, or mobile campaign": "Tire lorsqu'un prospect soumet via un formulaire, une popup ou une campagne mobile",
"Fields to Include": "Champs à inclure",
"Sort Order": "Ordre de tri",
"Max Lists to Monitor": "Nombre maximum de listes à surveiller",
"Join Source Filter": "Rejoindre le filtre source",
"Max Items to Check": "Nombre maximum d'éléments à vérifier",
"Form Type Filter": "Filtre de type de formulaire",
"Monitoring Mode": "Mode de surveillance",
"LandingPage/Form ID": "Page d'atterrissage / ID de formulaire",
"Include Full Contact Details": "Inclure les coordonnées complètes",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Liste de champs séparés par des virgules à inclure (par exemple, id,name,description,contactsCount). Laisser vide pour tous les champs.",
"How to sort the lists for monitoring": "Comment trier les listes de suivi",
"Maximum number of lists to check for new additions (1-100)": "Nombre maximum de listes à vérifier pour de nouveaux ajouts (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Champs séparés par des virgules à inclure (par exemple, id,email,firstName,lastName,timestampSignup). Laisser vide pour les champs par défaut.",
"Include custom field data in subscriber information": "Inclure les données du champ personnalisé dans les informations de l'abonné",
"Include list associations in subscriber information": "Inclure les associations de listes dans les informations des abonnés",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Filtrer les abonnés par la façon dont ils ont rejoint (laisser \"Tous\" pour surveiller toutes les sources)",
"How to sort contacts for monitoring new subscribers": "Comment trier les contacts pour surveiller les nouveaux abonnés",
"Maximum number of contacts to check for new subscribers (1-100)": "Nombre maximum de contacts à vérifier pour les nouveaux abonnés (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Filtrer par type de formulaire spécifique, ou sélectionner \"Tous\" pour surveiller tous les types de formulaire",
"Choose whether to monitor all forms or a specific form": "Choisissez si vous souhaitez surveiller tous les formulaires ou un formulaire spécifique",
"Select the andingPage/Form ": "Sélectionnez le formulaire andingPage/Form ",
"Include custom field data in the lead submission": "Inclure les données de champs personnalisés dans la soumission de prospect",
"Include complete contact information in the submission data": "Inclure les coordonnées complètes dans les données d'envoi",
"Newest First (by ID)": "Plus récent en premier (par ID)",
"Oldest First (by ID)": "Le plus ancien en premier (par ID)",
"Name (A-Z)": "Nom (A-Z)",
"Name (Z-A)": "Nom (Z-A)",
"All Sources": "Toutes les sources",
"Unknown": "Unknown",
"Manual Entry": "Saisie manuelle",
"Import": "Import",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Page d'accueil",
"Embed Form": "Intégrer le formulaire",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "Formulaire",
"Automation": "Automatisation",
"Newest Signups First": "Les plus récentes inscriptions en premier",
"Oldest Signups First": "Les plus anciennes inscriptions en premier",
"Recently Changed First": "Récemment modifié en premier",
"All Types": "Tous les types",
"Facebook Form": "Formulaire Facebook",
"Mobile Form": "Forme mobile",
"Popup Form": "Formulaire de popup",
"All Forms/Landing Pages": "Toutes les formes/pages d'atterrissage",
"Specific Form/Landing Page": "Forme/Page d'atterrissage spécifique"
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smooveはメールリストを作成し、管理し、購読者にメールを送信するためのプラットフォームです。",
"Add or Update Subscriber": "購読者を追加または更新",
"Create a List": "リストを作成",
"Find Subscriber": "購読者を検索",
"Unsubscribe Subscriber": "購読を解除",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "購読者データを作成または更新し、リストから購読/解除する",
"Create a new mailing list with custom settings and descriptions": "カスタム設定と説明を含む新しいメーリングリストを作成します",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "一意の識別子ID、メールアドレス、電話番号、外部IDまたは名前で購読者を検索",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "すべてのリストから連絡先の登録を解除し、「登録解除」リストに移動します",
"Email Address": "メールアドレス",
"First Name": "名",
"Last Name": "Last Name",
"Date of Birth": "誕生日",
"Phone Number": "電話番号",
"Cell Phone": "携帯電話",
"Address": "住所",
"City": "市区町村名",
"Country": "国",
"Company": "会社名",
"Position": "位置",
"External ID": "外部 ID",
"Campaign Source": "キャンペーンのソース",
"Can Receive Emails": "メールを受信できます。",
"Can Receive SMS": "SMSを受信できます",
"Lists": "リスト",
"Custom Fields": "カスタムフィールド",
"Operation": "操作",
"List Name": "リスト名",
"Description": "説明",
"Public Name": "公開名",
"Public Description": "公開説明",
"Is Public": "公開された",
"Allow Users to Subscribe": "ユーザーに購読を許可する",
"Allow Users to Unsubscribe": "ユーザーの登録解除を許可",
"Is Portal": "ポータル",
"Search Type": "検索タイプ",
"Contact ID": "連絡先ID",
"Fields to Return": "Fields to Return",
"Include Custom Fields": "カスタムフィールドを含める",
"Include Linked Lists": "リンクされたリストを含める",
"Skip Records": "記録をスキップ",
"Max Records": "最大レコード",
"Sort By": "並び替え",
"Contact": "お問い合わせ",
"Unsubscribe Reason": "登録解除の理由",
"Select an existing contact email or type a new one": "既存の連絡先メールアドレスを選択するか、新しいメールアドレスを入力してください",
"The first name of the contact": "連絡先の名",
"The last name of the contact": "連絡先の姓",
"The date of birth of the contact": "連絡先の生年月日",
"The primary phone number of the contact": "連絡先のプライマリ電話番号",
"The cell phone number of the contact": "連絡先の携帯電話",
"The street address of the contact": "連絡先の住所",
"The city of the contact": "連絡先の都市",
"The country of the contact": "連絡先の国",
"The company name of the contact": "連絡先の会社名",
"The job title or position of the contact": "連絡先の職名または位置",
"External identifier for the contact (useful for syncing with other systems)": "連絡先の外部識別子 (他のシステムとの同期に便利)",
"The campaign source that brought this contact": "この連絡先をもたらしたキャンペーンソース",
"Whether the contact can receive email communications": "連絡先が電子メール通信を受信できるかどうか",
"Whether the contact can receive SMS messages": "連絡先がSMSメッセージを受信できるかどうか",
"Select lists to subscribe the contact to": "連絡先を購読するリストを選択",
"Custom fields data (JSON object with field IDs as keys)": "カスタムフィールドデータフィールドIDをキーとするJSONオブジェクト",
"Choose the contact operation type": "連絡先の操作タイプを選択してください",
"The name of the list to be created": "作成するリストの名前",
"Internal description of the list for your reference": "参照リストの内部説明",
"The public-facing name of the list visible to subscribers": "購読者に表示されるリストの公開面名",
"Public description of the list visible to subscribers": "購読者に表示されるリストの説明",
"Make this list publicly visible": "このリストを公開する",
"Allow users to subscribe to this list themselves": "ユーザーがこのリストを自分自身で購読できるようにする",
"Allow users to unsubscribe from this list themselves": "ユーザー自身でこのリストの購読解除を許可する",
"Enable portal access for this list": "このリストのポータルアクセスを有効にする",
"Choose how to search for subscribers": "購読者を検索する方法を選択します",
"The unique ID of the contact": "連絡先の固有のID",
"The email address of the contact": "連絡先のメールアドレス",
"The phone number of the contact (cellphone)": "連絡先の電話番号 (携帯)",
"The external ID of the contact": "連絡先の外部 ID",
"Search by first name": "名前で検索",
"Search by last name": "姓で検索",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "カンマで区切られたフィールドのリストを返しますid,email,firstName,lastName。すべてのフィールドに対して空のままにします。",
"Include custom fields in the response": "返信にカスタムフィールドを含める",
"Include linked lists in the response": "回答にリンクされたリストを含める",
"Number of records to skip (for pagination, default: 0)": "スキップするレコード数ページネーションの場合、デフォルト0",
"Maximum number of records to return (default: 100, max: 100)": "Maximum number of records to return (default: 100, max: 100)",
"Sort the results by a specific field": "特定のフィールドで結果をソート",
"Select the contact to unsubscribe": "登録解除する連絡先を選択してください",
"Reason for unsubscribing the contact": "連絡先の登録解除の理由",
"Create Only": "作成のみ",
"Create or Update if Exists": "存在する場合に作成または更新",
"Restore if Deleted": "削除した場合に復元",
"Restore if Unsubscribed": "購読解除時に復元",
"Override Nullable Values": "Nullable値を上書き",
"By Identifier (ID, Email, Phone, External ID)": "識別子(ID、Eメール、電話、外部ID)",
"By Name (First Name, Last Name)": "名前順 (姓、姓)",
"All Active Contacts (with pagination)": "すべてのアクティブな連絡先 (ページネーション付き)",
"ID (Newest First)": "ID (最新のもの)",
"ID (Oldest First)": "ID (古い順)",
"Email (A-Z)": "メール (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "名 (A-Z)",
"First Name (Z-A)": "名 (Z-A)",
"Last Changed (Newest)": "最終変更(新規)",
"Last Changed (Oldest)": "最終変更(最新)",
"Signup Date (Newest)": "サインアップ日(新規)",
"Signup Date (Oldest)": "サインアップ日(最小限)",
"New List Created": "新しいリストが作成されました",
"New Subscriber": "新規購読",
"New Form Created": "新しいフォームが作成されました",
"New Lead Submitted": "新しいリードが提出されました",
"Fires when a new mailing list is created in your Smoove account": "Smooveアカウントに新しいメーリングリストが作成されたときに発行されます。",
"Fires when a new subscriber is added to your Smoove account": "スムーブアカウントに新しい購読者が追加されたときに発行されます",
"Fires when a new form/landing page is created in your Smoove account": "Smooveアカウントに新しいフォーム/ランディングページが作成されたときに発生します。",
"Fires when a lead submits via form, popup, or mobile campaign": "リードがフォーム、ポップアップ、またはモバイルキャンペーンで送信したときに発生します。",
"Fields to Include": "含めるフィールド",
"Sort Order": "並び順",
"Max Lists to Monitor": "最大リストからモニターへ",
"Join Source Filter": "ソースフィルタを結合",
"Max Items to Check": "チェックするアイテムの最大数",
"Form Type Filter": "フォームタイプフィルタ",
"Monitoring Mode": "監視モード",
"LandingPage/Form ID": "LandingPage/Form ID",
"Include Full Contact Details": "連絡先の全詳細を含める",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "カンマ区切りで含める項目のリストid,name,description,contactsCount。すべての項目に対して空のままにします。",
"How to sort the lists for monitoring": "監視するリストを並べ替える方法",
"Maximum number of lists to check for new additions (1-100)": "新しい追加を確認するリストの最大数 (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "コンマで区切られたフィールドを含めますid,email,firstName,lastName,timestampSignup。デフォルトフィールドは空のままにします。",
"Include custom field data in subscriber information": "購読者情報にカスタム項目のデータを含める",
"Include list associations in subscriber information": "購読者情報にリストの関連性を含める",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "加入方法で購読者をフィルター (すべてのソースを監視するには「すべて」のままにしてください)",
"How to sort contacts for monitoring new subscribers": "新しい購読者を監視するための連絡先を並べ替える方法",
"Maximum number of contacts to check for new subscribers (1-100)": "新しい購読者を確認する連絡先の最大数1-100",
"Filter by specific form type, or select \"All\" to monitor all form types": "特定のフォームタイプでフィルタするか、「すべて」を選択してすべてのフォームタイプを監視します",
"Choose whether to monitor all forms or a specific form": "すべてのフォームまたは特定のフォームを監視するかどうかを選択します",
"Select the andingPage/Form ": "andingPage/Formを選択します ",
"Include custom field data in the lead submission": "リード提出にカスタム項目のデータを含める",
"Include complete contact information in the submission data": "提出データに完全な連絡先情報を含める",
"Newest First (by ID)": "新しい順 (ID)",
"Oldest First (by ID)": "古い順 (ID)",
"Name (A-Z)": "名前 (A-Z)",
"Name (Z-A)": "名前 (Z-A)",
"All Sources": "すべてのソース",
"Unknown": "不明",
"Manual Entry": "手動入力",
"Import": "インポート",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "ランディングページ",
"Embed Form": "埋め込みフォーム",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "フォーム",
"Automation": "自動化",
"Newest Signups First": "最近のサインアップが最初に",
"Oldest Signups First": "最も古いサインアップが最初です",
"Recently Changed First": "最近変更したものを先頭に",
"All Types": "すべてのタイプ",
"Facebook Form": "Facebookフォーム",
"Mobile Form": "モバイルフォーム",
"Popup Form": "ポップアップフォーム",
"All Forms/Landing Pages": "すべてのフォーム/ランディングページ",
"Specific Form/Landing Page": "特定のフォーム/着陸ページ"
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove is een platform voor het maken en beheren van uw e-maillijst en het verzenden van e-mails naar uw abonnees.",
"Add or Update Subscriber": "Voeg of update abonnee toe",
"Create a List": "Lijst aanmaken",
"Find Subscriber": "Abonnee zoeken",
"Unsubscribe Subscriber": "Abonnee afmelden",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Abonnee gegevens aanmaken of bijwerken en abonneren op lijsten",
"Create a new mailing list with custom settings and descriptions": "Maak een nieuwe mailing lijst met aangepaste instellingen en beschrijvingen",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Zoeken naar abonnees met unieke id's (ID, e-mail, telefoon, externe ID) of naam",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Een contactpersoon uit alle lijsten opzeggen en verplaatsen naar de \"Uitgeschrijven\" lijst",
"Email Address": "Uw e-mailadres",
"First Name": "Voornaam",
"Last Name": "Achternaam",
"Date of Birth": "Geboortedatum",
"Phone Number": "Telefoon nummer",
"Cell Phone": "Mobiele telefoon",
"Address": "Adres:",
"City": "Woonplaats",
"Country": "Land:",
"Company": "Bedrijfsnaam",
"Position": "Positie",
"External ID": "Extern ID",
"Campaign Source": "Bron campagne",
"Can Receive Emails": "Kan e-mails ontvangen",
"Can Receive SMS": "Kan SMS ontvangen",
"Lists": "Lijsten",
"Custom Fields": "Aangepaste velden",
"Operation": "Bewerking",
"List Name": "Lijst Naam",
"Description": "Beschrijving",
"Public Name": "Openbare naam",
"Public Description": "Openbare beschrijving",
"Is Public": "Is openbaar",
"Allow Users to Subscribe": "Gebruikers toestaan zich te abonneren",
"Allow Users to Unsubscribe": "Sta gebruikers toe om uit te schrijven",
"Is Portal": "Is Portaal",
"Search Type": "Type zoeken",
"Contact ID": "Contact ID",
"Fields to Return": "Velden om te retourneren",
"Include Custom Fields": "Inclusief aangepaste velden",
"Include Linked Lists": "Inclusief gekoppelde lijsten",
"Skip Records": "Records overslaan",
"Max Records": "Max Records",
"Sort By": "Sorteren op",
"Contact": "Contactpersoon",
"Unsubscribe Reason": "Reden van opzeggen",
"Select an existing contact email or type a new one": "Selecteer een bestaand contact e-mailadres of typ een nieuw e-mailadres",
"The first name of the contact": "De voornaam van het contact",
"The last name of the contact": "De achternaam van de contactpersoon",
"The date of birth of the contact": "De geboortedatum van het contact",
"The primary phone number of the contact": "Het primaire telefoonnummer van de contactpersoon",
"The cell phone number of the contact": "Het mobiele telefoonnummer van de contactpersoon",
"The street address of the contact": "Het adres van de contactpersoon",
"The city of the contact": "De stad van het contact",
"The country of the contact": "Het land van de contactpersoon",
"The company name of the contact": "De bedrijfsnaam van de contactpersoon",
"The job title or position of the contact": "De job titel of positie van de contactpersoon",
"External identifier for the contact (useful for syncing with other systems)": "Externe identificatie voor de contactpersoon (handig voor synchronisatie met andere systemen)",
"The campaign source that brought this contact": "De campagne bron die dit contact bracht",
"Whether the contact can receive email communications": "Of de contactpersoon e-mail communicatie kan ontvangen",
"Whether the contact can receive SMS messages": "Of de contactpersoon SMS-berichten kan ontvangen",
"Select lists to subscribe the contact to": "Selecteer lijsten om de contactpersoon op te abonneren",
"Custom fields data (JSON object with field IDs as keys)": "Gegevens aangepaste velden (JSON object met veld IDs als sleutels)",
"Choose the contact operation type": "Kies het type contact",
"The name of the list to be created": "De naam van de lijst die aangemaakt moet worden",
"Internal description of the list for your reference": "Interne beschrijving van de lijst voor uw referentie",
"The public-facing name of the list visible to subscribers": "De publieke naam van de lijst zichtbaar voor abonnees",
"Public description of the list visible to subscribers": "Openbare beschrijving van de lijst zichtbaar voor abonnees",
"Make this list publicly visible": "Maak deze lijst publiekelijk zichtbaar",
"Allow users to subscribe to this list themselves": "Sta gebruikers toe om zich op deze lijst te abonneren",
"Allow users to unsubscribe from this list themselves": "Sta gebruikers toe om zich uit te schrijven voor deze lijst",
"Enable portal access for this list": "Schakel portal toegang in voor deze lijst",
"Choose how to search for subscribers": "Kies hoe u wilt zoeken voor abonnees",
"The unique ID of the contact": "Het unieke ID van de contactpersoon",
"The email address of the contact": "Het e-mailadres van de contactpersoon",
"The phone number of the contact (cellphone)": "Het telefoonnummer van de contactpersoon (mobiel)",
"The external ID of the contact": "De externe ID van de contactpersoon",
"Search by first name": "Zoek op voornaam",
"Search by last name": "Zoek op achternaam",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Kommagescheiden lijst van velden om terug te keren (bijv. id,email,firstName,lastName). Laat leeg voor alle velden.",
"Include custom fields in the response": "Inclusief aangepaste velden in het antwoord",
"Include linked lists in the response": "Inclusief gekoppelde lijsten in het antwoord",
"Number of records to skip (for pagination, default: 0)": "Aantal records om over te slaan (voor pagina, standaard: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Maximum aantal terug te sturen records (standaard: 100, max: 100)",
"Sort the results by a specific field": "Sorteer de resultaten op een specifiek veld",
"Select the contact to unsubscribe": "Selecteer contactpersoon om uit te schrijven",
"Reason for unsubscribing the contact": "Reden voor uitschrijving van de contactpersoon",
"Create Only": "Alleen maken",
"Create or Update if Exists": "Aanmaken of bijwerken als Bestaat",
"Restore if Deleted": "Herstellen als verwijderd",
"Restore if Unsubscribed": "Herstellen als uitgeschreven",
"Override Nullable Values": "Nulbare waarden overschrijven",
"By Identifier (ID, Email, Phone, External ID)": "Op Id (ID, E-mail, telefoon, externe ID)",
"By Name (First Name, Last Name)": "Op naam (voornaam, achternaam)",
"All Active Contacts (with pagination)": "Alle actieve contacten (met pagina)",
"ID (Newest First)": "ID (Nieuwste eerst)",
"ID (Oldest First)": "ID (oudste eerst)",
"Email (A-Z)": "E-mail (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "Voornaam (A-Z)",
"First Name (Z-A)": "Voornaam (Z-A)",
"Last Changed (Newest)": "Laatst gewijzigd (nieuwste)",
"Last Changed (Oldest)": "Laatst gewijzigd (oudste)",
"Signup Date (Newest)": "Inschrijvingsdatum (nieuwste)",
"Signup Date (Oldest)": "Inschrijvingsdatum (oudste)",
"New List Created": "Nieuwe Lijst Aangemaakt",
"New Subscriber": "Nieuwe abonnee",
"New Form Created": "Nieuw formulier aangemaakt",
"New Lead Submitted": "Nieuwe Lead verzonden",
"Fires when a new mailing list is created in your Smoove account": "Vuurt wanneer een nieuwe mailing lijst is gemaakt in uw Smoove account",
"Fires when a new subscriber is added to your Smoove account": "Vuurt wanneer een nieuwe abonnee is toegevoegd aan uw Smoove account",
"Fires when a new form/landing page is created in your Smoove account": "Vuurt wanneer een nieuwe formulier/landing pagina wordt gemaakt in uw Smoove account",
"Fires when a lead submits via form, popup, or mobile campaign": "Schiet wanneer een lead verzendt via formulier, popup of mobiele campagne",
"Fields to Include": "Velden om op te nemen",
"Sort Order": "Sorteren bestelling",
"Max Lists to Monitor": "Maximaal aantal lijsten te monitoren",
"Join Source Filter": "Samenvoegen bronfilter",
"Max Items to Check": "Max items om te controleren",
"Form Type Filter": "Formulier type filter",
"Monitoring Mode": "Bewaking Mode",
"LandingPage/Form ID": "LandingPagina/Formulier ID",
"Include Full Contact Details": "Inclusief volledige contactgegevens",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Kommagescheiden lijst van velden op te nemen (bijv. id,naam,beschrijving, contactsCount). Laat leeg voor alle velden.",
"How to sort the lists for monitoring": "Hoe de monitoringslijsten te sorteren",
"Maximum number of lists to check for new additions (1-100)": "Maximum aantal lijsten te controleren op nieuwe toevoegingen (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Kommagescheiden velden op te nemen (bijv., id,email,firstName,lastNaam,timestampSignup). Laat leeg voor standaard velden.",
"Include custom field data in subscriber information": "Voeg aangepaste veldgegevens toe aan ontvangersgegevens",
"Include list associations in subscriber information": "Lijstassociaties opnemen in ontvangersinformatie",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Filter abonnees op hoe ze zijn toegetreden (verlaat als \"Alle\" om alle bronnen te controleren)",
"How to sort contacts for monitoring new subscribers": "Hoe contacten sorteren voor het monitoren van nieuwe abonnees",
"Maximum number of contacts to check for new subscribers (1-100)": "Maximum aantal contactpersonen om te controleren op nieuwe abonnees (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Filter op specifieke formuliertype, of selecteer \"Alle\" om alle formuliertypes te controleren",
"Choose whether to monitor all forms or a specific form": "Kies of alle formulieren moeten worden gevolgd of een specifiek formulier",
"Select the andingPage/Form ": "Selecteer de andingPage/Formulier ",
"Include custom field data in the lead submission": "Voeg aangepaste veldgegevens toe aan de lead uitwerking",
"Include complete contact information in the submission data": "Volledige contactinformatie opnemen in de uitwerking",
"Newest First (by ID)": "Nieuwste eerst (op ID)",
"Oldest First (by ID)": "Oudste eerst (op ID)",
"Name (A-Z)": "Naam (A-Z)",
"Name (Z-A)": "Naam (Z-A)",
"All Sources": "Alle bronnen",
"Unknown": "Onbekend",
"Manual Entry": "Handmatige invoer",
"Import": "Importeer",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Landingspagina",
"Embed Form": "Formulier insluiten",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "sms",
"WhatsApp": "WhatsApp",
"Form": "Vorm",
"Automation": "Automatisering",
"Newest Signups First": "Nieuwste inschrijvingen eerst",
"Oldest Signups First": "Oudste aanmeldingen eerst",
"Recently Changed First": "Recent gewijzigd eerst",
"All Types": "Alle typen",
"Facebook Form": "Facebook Formulier",
"Mobile Form": "Mobiel formulier",
"Popup Form": "Pop-up formulier",
"All Forms/Landing Pages": "Alle Formulieren/Landing pagina's",
"Specific Form/Landing Page": "Specifieke formulier/landingspagina"
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove é uma plataforma para criar e gerenciar sua lista de e-mails e enviar e-mails para seus inscritos.",
"Add or Update Subscriber": "Adicionar ou Atualizar Assinante",
"Create a List": "Criar uma lista",
"Find Subscriber": "Encontrar Assinante",
"Unsubscribe Subscriber": "Cancelar Assinatura",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Criar ou atualizar dados de assinantes e inscrever/cancelar inscrição em listas",
"Create a new mailing list with custom settings and descriptions": "Crie uma nova lista de e-mails com configurações e descrições personalizadas",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Busca de membros por identificadores únicos (ID, e-mail, telefone, ID externo) ou nome",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Desinscrever um contato de todas as listas e movê-los para a lista \"Desinscrever-se\"",
"Email Address": "Endereço de e-mail",
"First Name": "Nome",
"Last Name": "Sobrenome",
"Date of Birth": "Data de nascimento",
"Phone Number": "Número de telefone",
"Cell Phone": "Telefone Celular",
"Address": "Endereço",
"City": "cidade",
"Country": "País/região",
"Company": "Empresas",
"Position": "Posição",
"External ID": "ID Externo",
"Campaign Source": "Fonte da Campanha",
"Can Receive Emails": "Pode Receber E-mails",
"Can Receive SMS": "Pode receber SMS",
"Lists": "Listas",
"Custom Fields": "Campos Personalizados",
"Operation": "Operação",
"List Name": "Lista de nomes",
"Description": "Descrição",
"Public Name": "Nome Público",
"Public Description": "Descrição pública",
"Is Public": "É Público",
"Allow Users to Subscribe": "Permitir que os usuários se inscrevam",
"Allow Users to Unsubscribe": "Permitir que Usuários Desinscrevam",
"Is Portal": "É Portal",
"Search Type": "Pesquisar Tipo",
"Contact ID": "ID do contato",
"Fields to Return": "Campos para Devolver",
"Include Custom Fields": "Incluir Campos Personalizados",
"Include Linked Lists": "Incluir Listas Vinculadas",
"Skip Records": "Ignorar registros",
"Max Records": "Registros Máx.",
"Sort By": "Classificar por",
"Contact": "contato",
"Unsubscribe Reason": "Razão para descadastrar",
"Select an existing contact email or type a new one": "Selecione um email de contato existente ou digite um novo",
"The first name of the contact": "O primeiro nome do contato",
"The last name of the contact": "O último nome do contato",
"The date of birth of the contact": "A data de nascimento do contato",
"The primary phone number of the contact": "O telefone principal do contato",
"The cell phone number of the contact": "O número do telefone celular do contato",
"The street address of the contact": "O endereço da rua do contato",
"The city of the contact": "A cidade do contato",
"The country of the contact": "O país do contato",
"The company name of the contact": "O nome da empresa do contato",
"The job title or position of the contact": "O título do trabalho ou a posição do contato",
"External identifier for the contact (useful for syncing with other systems)": "Identificador externo para o contato (útil para sincronização com outros sistemas)",
"The campaign source that brought this contact": "A fonte da campanha que trouxe este contato",
"Whether the contact can receive email communications": "Se o contato pode receber comunicações por e-mail",
"Whether the contact can receive SMS messages": "Se o contato pode receber mensagens SMS",
"Select lists to subscribe the contact to": "Selecione listas para assinar o contato para",
"Custom fields data (JSON object with field IDs as keys)": "Dados de campos personalizados (JSON com IDs de campo como chaves)",
"Choose the contact operation type": "Escolha o tipo de operação de contato",
"The name of the list to be created": "O nome da lista a ser criada",
"Internal description of the list for your reference": "Descrição interna da lista para sua referência",
"The public-facing name of the list visible to subscribers": "O nome público da lista visível para os membros",
"Public description of the list visible to subscribers": "Descrição pública da lista visível para os assinantes",
"Make this list publicly visible": "Tornar esta lista publicamente visível",
"Allow users to subscribe to this list themselves": "Permitir que os usuários se inscrevam nesta lista",
"Allow users to unsubscribe from this list themselves": "Permitir que os usuários cancelem a inscrição desta lista",
"Enable portal access for this list": "Habilitar acesso do portal para esta lista",
"Choose how to search for subscribers": "Escolha como procurar por assinantes",
"The unique ID of the contact": "A ID única do contato",
"The email address of the contact": "O endereço de e-mail do contato",
"The phone number of the contact (cellphone)": "O número de telefone do contato (celular)",
"The external ID of the contact": "O ID externo do contato",
"Search by first name": "Pesquisar pelo primeiro nome",
"Search by last name": "Pesquisar por sobrenome",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Lista de campos separados por vírgula a retornar (por exemplo, id,email,firstName,lastName). Deixe em branco para todos os campos.",
"Include custom fields in the response": "Incluir campos personalizados na resposta",
"Include linked lists in the response": "Incluir listas de links na resposta",
"Number of records to skip (for pagination, default: 0)": "Número de registros a ignorar (para paginação, padrão: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Número máximo de registros a retornar (padrão: 100, máx: 100)",
"Sort the results by a specific field": "Ordenar os resultados por um campo específico",
"Select the contact to unsubscribe": "Selecione o contato para cancelar a inscrição",
"Reason for unsubscribing the contact": "Razão para cancelar a inscrição do contato",
"Create Only": "Criar Apenas",
"Create or Update if Exists": "Criar ou Atualizar se existir",
"Restore if Deleted": "Restaurar se excluído",
"Restore if Unsubscribed": "Restaurar se não inscrito",
"Override Nullable Values": "Sobrescrever valores anuláveis",
"By Identifier (ID, Email, Phone, External ID)": "Por identificador (ID, E-mail, Telefone, ID Externo)",
"By Name (First Name, Last Name)": "Por Nome (Primeiro Nome, Sobrenome)",
"All Active Contacts (with pagination)": "Todos os Contatos Ativos (com paginação)",
"ID (Newest First)": "ID (mais recente primeiro)",
"ID (Oldest First)": "ID mais antigo",
"Email (A-Z)": "E-mail (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "Primeiro Nome (A-Z)",
"First Name (Z-A)": "Primeiro nome (Z-A)",
"Last Changed (Newest)": "Última alteração (mais recente)",
"Last Changed (Oldest)": "Última alteração (mais antigo)",
"Signup Date (Newest)": "Data da Inscrição (Mais recente)",
"Signup Date (Oldest)": "Data da Inscrição (mais antigo)",
"New List Created": "Nova Lista Criada",
"New Subscriber": "Novo Assinante",
"New Form Created": "Novo formulário criado",
"New Lead Submitted": "Novo Potencial Enviado",
"Fires when a new mailing list is created in your Smoove account": "Efetua quando uma nova lista de discussão é criada em sua conta Smoove",
"Fires when a new subscriber is added to your Smoove account": "Efetua quando um novo assinante é adicionado à sua conta do Smoove",
"Fires when a new form/landing page is created in your Smoove account": "Efetua quando um novo formulário/página inicial é criado em sua conta Smoove",
"Fires when a lead submits via form, popup, or mobile campaign": "Atira quando uma chumbo é enviado via formulário, pop-up ou campanha móvel",
"Fields to Include": "Campos a incluir",
"Sort Order": "Ordem de classificação",
"Max Lists to Monitor": "Limite de Listas para Monitorar",
"Join Source Filter": "Filtro de Fonte",
"Max Items to Check": "Máximo de itens para verificar",
"Form Type Filter": "Filtro Tipo de Formulário",
"Monitoring Mode": "Modo de Monitoramento",
"LandingPage/Form ID": "ID do formulário/LandingPage",
"Include Full Contact Details": "Incluir detalhes completos do contato",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Lista de campos separados por vírgula a incluir (por exemplo, id,nome, descrição, contato). Deixe em branco para todos os campos.",
"How to sort the lists for monitoring": "Como ordenar as listas para monitoramento",
"Maximum number of lists to check for new additions (1-100)": "Número máximo de listas de verificação para novas adições (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Campos separados por vírgula para incluir (por exemplo, id,email,firstName,lastName,timestampSignup). Deixe em branco para campos padrão.",
"Include custom field data in subscriber information": "Incluir dados do campo personalizado nas informações do assinante",
"Include list associations in subscriber information": "Incluir associações da lista nas informações dos assinantes",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Filtrar assinantes por como eles entraram (deixe como \"Todos\" para monitorar todas as fontes)",
"How to sort contacts for monitoring new subscribers": "Como classificar contatos para monitorar novos assinantes",
"Maximum number of contacts to check for new subscribers (1-100)": "Número máximo de contatos para verificar se há novos assinantes (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Filtrar por tipo específico de formulário, ou selecione \"Todos\" para monitorar todos os tipos de formulário",
"Choose whether to monitor all forms or a specific form": "Escolher se deseja monitorar todos os formulários ou um formulário específico",
"Select the andingPage/Form ": "Selecione o andingPage/Form ",
"Include custom field data in the lead submission": "Incluir dados de campos personalizados no envio do Lead",
"Include complete contact information in the submission data": "Incluir informações completas do contato nos dados do envio",
"Newest First (by ID)": "Mais recentes primeiro (por ID)",
"Oldest First (by ID)": "Mais antigos primeiro (por ID)",
"Name (A-Z)": "Nome (A-Z)",
"Name (Z-A)": "Nome (Z-A)",
"All Sources": "Todas as Fontes",
"Unknown": "Desconhecido",
"Manual Entry": "Inserir Manualmente",
"Import": "Importar",
"Facebook": "Siga-nos",
"API": "API",
"Landing Page": "Página inicial",
"Embed Form": "Formulário de Incorporação",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "Formulário",
"Automation": "Automatização",
"Newest Signups First": "Inscrições mais recentes primeiro",
"Oldest Signups First": "Inscrições mais antigas primeiro",
"Recently Changed First": "Recentemente modificados primeiro",
"All Types": "Todos os tipos",
"Facebook Form": "Formulário Facebook",
"Mobile Form": "Formulário Móvel",
"Popup Form": "Formulário Popup",
"All Forms/Landing Pages": "Todas as páginas de destino",
"Specific Form/Landing Page": "Formulário Específico/Página inicial"
}

View File

@@ -0,0 +1,165 @@
{
"Smoove": "Сглаживание",
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove - это платформа для создания и управления вашим списком электронной почты и отправки писем вашим подписчикам.",
"Add or Update Subscriber": "Добавить или обновить подписчика",
"Create a List": "Создать список",
"Find Subscriber": "Найти подписчика",
"Unsubscribe Subscriber": "Отписать подписчика",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Создание или обновление данных абонентов и подписка/отписка от рассылки",
"Create a new mailing list with custom settings and descriptions": "Создать новый список рассылки с пользовательскими настройками и описаниями",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Поиск подписчиков по уникальным идентификаторам (ID, email, телефон, внешний ID) или имени",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Отписаться от контакта из всех списков и переместить его в список «Отписаться»",
"Email Address": "Email Address",
"First Name": "First Name",
"Last Name": "Last Name",
"Date of Birth": "Дата рождения",
"Phone Number": "Номер телефона",
"Cell Phone": "Мобильный телефон",
"Address": "Адрес",
"City": "Город",
"Country": "Страна",
"Company": "Компания",
"Position": "Позиция",
"External ID": "Внешний ID",
"Campaign Source": "Источник Кампании",
"Can Receive Emails": "Может получать письма",
"Can Receive SMS": "Можно получать СМС",
"Lists": "Списки",
"Custom Fields": "Пользовательские поля",
"Operation": "Операция",
"List Name": "Название списка",
"Description": "Описание",
"Public Name": "Публичное имя",
"Public Description": "Публичное описание",
"Is Public": "Публичный",
"Allow Users to Subscribe": "Разрешить пользователям подписываться",
"Allow Users to Unsubscribe": "Разрешить пользователям отписываться",
"Is Portal": "Портал",
"Search Type": "Тип поиска",
"Contact ID": "ID контакта",
"Fields to Return": "Поля для возврата",
"Include Custom Fields": "Включить пользовательские поля",
"Include Linked Lists": "Включить список связанных списков",
"Skip Records": "Пропустить записи",
"Max Records": "Макс. записей",
"Sort By": "Сортировать по",
"Contact": "Контакт",
"Unsubscribe Reason": "Причина отказа от подписки",
"Select an existing contact email or type a new one": "Выберите существующий контактный адрес или введите новый",
"The first name of the contact": "Имя контакта",
"The last name of the contact": "Фамилия контакта",
"The date of birth of the contact": "Дата рождения контакта",
"The primary phone number of the contact": "Основной номер телефона контакта",
"The cell phone number of the contact": "Номер сотового телефона контакта",
"The street address of the contact": "Адрес контакта",
"The city of the contact": "Город контакта",
"The country of the contact": "Страна контакта",
"The company name of the contact": "Название компании контакта",
"The job title or position of the contact": "Должность или должность контакта",
"External identifier for the contact (useful for syncing with other systems)": "Внешний идентификатор контакта (полезен для синхронизации с другими системами)",
"The campaign source that brought this contact": "Источник кампании, который привел этот контакт",
"Whether the contact can receive email communications": "Может ли контакт получать сообщения по электронной почте",
"Whether the contact can receive SMS messages": "Может ли контакт получать SMS-сообщения",
"Select lists to subscribe the contact to": "Выберите списки для подписки на контакт",
"Custom fields data (JSON object with field IDs as keys)": "Данные пользовательских полей (JSON объект с ID полей в качестве ключей)",
"Choose the contact operation type": "Выберите тип контактной операции",
"The name of the list to be created": "Название создаваемого списка",
"Internal description of the list for your reference": "Внутреннее описание списка для вашей ссылки",
"The public-facing name of the list visible to subscribers": "Название списка, видимое подписчикам",
"Public description of the list visible to subscribers": "Публичное описание списка, видимое подписчикам",
"Make this list publicly visible": "Сделать этот список публично видимым",
"Allow users to subscribe to this list themselves": "Разрешить пользователям подписываться на этот список самостоятельно",
"Allow users to unsubscribe from this list themselves": "Разрешить пользователям отписаться от этого списка самостоятельно",
"Enable portal access for this list": "Включить доступ к порталу для этого списка",
"Choose how to search for subscribers": "Выберите способ поиска подписчиков",
"The unique ID of the contact": "Уникальный ID контакта",
"The email address of the contact": "Адрес электронной почты контакта",
"The phone number of the contact (cellphone)": "Номер телефона контакта (сотовый телефон)",
"The external ID of the contact": "Внешний ID контакта",
"Search by first name": "Поиск по имени",
"Search by last name": "Поиск по фамилии",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Список полей, разделенных запятыми (например, id,email,имя,фамилия). Оставьте пустым для всех полей.",
"Include custom fields in the response": "Включить настраиваемые поля в ответ",
"Include linked lists in the response": "Включить связанные списки в ответ",
"Number of records to skip (for pagination, default: 0)": "Количество пропущенных записей (для пагинации, по умолчанию: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Максимальное количество возвращаемых записей (по умолчанию: 100, макс: 100)",
"Sort the results by a specific field": "Сортировать результаты по заданному полю",
"Select the contact to unsubscribe": "Выберите контакт, чтобы отписаться",
"Reason for unsubscribing the contact": "Причина отказа от подписки на контакт",
"Create Only": "Создать только",
"Create or Update if Exists": "Создать или обновить, если существует",
"Restore if Deleted": "Восстановить при удалении",
"Restore if Unsubscribed": "Восстановить при отписке",
"Override Nullable Values": "Переопределить Nullable значения",
"By Identifier (ID, Email, Phone, External ID)": "По идентификатору (ID, E-mail, телефону, внешнему ID)",
"By Name (First Name, Last Name)": "По имени (Имя, Фамилия)",
"All Active Contacts (with pagination)": "Все активные контакты (с нумерацией)",
"ID (Newest First)": "ID (сначала новые)",
"ID (Oldest First)": "ID (Старые первые)",
"Email (A-Z)": "Email (А-Я)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "First Name (А-Я)",
"First Name (Z-A)": "First Name (Я-А)",
"Last Changed (Newest)": "Последнее изменение (новый)",
"Last Changed (Oldest)": "Последнее изменение (Отмена)",
"Signup Date (Newest)": "Дата регистрации (новый)",
"Signup Date (Oldest)": "Дата регистрации (должность)",
"New List Created": "Новый список создан",
"New Subscriber": "Новый подписчик",
"New Form Created": "Новая форма создана",
"New Lead Submitted": "Новый предв. контакт отправлен",
"Fires when a new mailing list is created in your Smoove account": "Выполняет создание нового списка рассылки в вашей учетной записи Smoove",
"Fires when a new subscriber is added to your Smoove account": "Показывает при добавлении нового абонента на ваш счет Smoove",
"Fires when a new form/landing page is created in your Smoove account": "Выводит при создании новой формы/целевой страницы в вашем аккаунте Smoove",
"Fires when a lead submits via form, popup, or mobile campaign": "Возникает при отправке свинца через всплывающее окно или мобильную кампанию",
"Fields to Include": "Поля для включения",
"Sort Order": "Порядок сортировки",
"Max Lists to Monitor": "Максимум списков для монитора",
"Join Source Filter": "Фильтр соединения с исходным кодом",
"Max Items to Check": "Максимум элементов для проверки",
"Form Type Filter": "Фильтр типа формы",
"Monitoring Mode": "Режим наблюдения",
"LandingPage/Form ID": "ID посадочной страницы/формы",
"Include Full Contact Details": "Включить полную контактную информацию",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Список полей, разделенных запятыми (например, id,name,description,contactsCount). Оставьте пустым для всех полей.",
"How to sort the lists for monitoring": "Как сортировать списки для наблюдения",
"Maximum number of lists to check for new additions (1-100)": "Максимальное количество списков для проверки новых дополнений (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Поля, разделенные запятыми для включения (например, id,email,Имя,Имя,Имя и Метка времени). Оставьте пустым для полей по умолчанию.",
"Include custom field data in subscriber information": "Включить данные настраиваемого поля в информацию о подписке",
"Include list associations in subscriber information": "Включить в информацию о подписчиках список ассоциаций",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Фильтровать подписчиков по их вступлению (оставьте как \"Все\" для мониторинга всех источников)",
"How to sort contacts for monitoring new subscribers": "Как сортировать контакты для мониторинга новых абонентов",
"Maximum number of contacts to check for new subscribers (1-100)": "Максимальное количество контактов для проверки для новых подписчиков (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Фильтр по заданному типу формы или выберите \"Все\" для мониторинга всех типов форм",
"Choose whether to monitor all forms or a specific form": "Выберите, отслеживать ли все формы или конкретную форму",
"Select the andingPage/Form ": "Выберите andingPage/Form ",
"Include custom field data in the lead submission": "Включить данные настраиваемого поля в сданные свинца",
"Include complete contact information in the submission data": "Включить полную контактную информацию в данные о подаче",
"Newest First (by ID)": "Сначала новые (по ID)",
"Oldest First (by ID)": "Сначала старые (по ID)",
"Name (A-Z)": "Имя (А-Я)",
"Name (Z-A)": "Имя (Я-А)",
"All Sources": "Все источники",
"Unknown": "Неизвестен",
"Manual Entry": "Ввод вручную",
"Import": "Import",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Целевая страница",
"Embed Form": "Форма вставки",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "СМС",
"WhatsApp": "WhatsApp",
"Form": "Форма",
"Automation": "Автоматизация",
"Newest Signups First": "Сначала новые регистрации",
"Oldest Signups First": "Сначала старые регистрации",
"Recently Changed First": "Недавно измененные первыми",
"All Types": "Все типы",
"Facebook Form": "Форма Facebook",
"Mobile Form": "Мобильная форма",
"Popup Form": "Всплывающая форма",
"All Forms/Landing Pages": "Все формы/целевые страницы",
"Specific Form/Landing Page": "Конкретная форма/Целевая страница"
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove is a platform for creating and managing your email list and sending emails to your subscribers.",
"Add or Update Subscriber": "Add or Update Subscriber",
"Create a List": "Create a List",
"Find Subscriber": "Find Subscriber",
"Unsubscribe Subscriber": "Unsubscribe Subscriber",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Create or update subscriber data, and subscribe/unsubscribe from lists",
"Create a new mailing list with custom settings and descriptions": "Create a new mailing list with custom settings and descriptions",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Search for subscribers by unique identifiers (ID, email, phone, external ID) or name",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list",
"Email Address": "Email Address",
"First Name": "First Name",
"Last Name": "Last Name",
"Date of Birth": "Date of Birth",
"Phone Number": "Phone Number",
"Cell Phone": "Cell Phone",
"Address": "Address",
"City": "City",
"Country": "Country",
"Company": "Company",
"Position": "Position",
"External ID": "External ID",
"Campaign Source": "Campaign Source",
"Can Receive Emails": "Can Receive Emails",
"Can Receive SMS": "Can Receive SMS",
"Lists": "Lists",
"Custom Fields": "Custom Fields",
"Operation": "Operation",
"List Name": "List Name",
"Description": "Description",
"Public Name": "Public Name",
"Public Description": "Public Description",
"Is Public": "Is Public",
"Allow Users to Subscribe": "Allow Users to Subscribe",
"Allow Users to Unsubscribe": "Allow Users to Unsubscribe",
"Is Portal": "Is Portal",
"Search Type": "Search Type",
"Contact ID": "Contact ID",
"Fields to Return": "Fields to Return",
"Include Custom Fields": "Include Custom Fields",
"Include Linked Lists": "Include Linked Lists",
"Skip Records": "Skip Records",
"Max Records": "Max Records",
"Sort By": "Sort By",
"Contact": "Contact",
"Unsubscribe Reason": "Unsubscribe Reason",
"Select an existing contact email or type a new one": "Select an existing contact email or type a new one",
"The first name of the contact": "The first name of the contact",
"The last name of the contact": "The last name of the contact",
"The date of birth of the contact": "The date of birth of the contact",
"The primary phone number of the contact": "The primary phone number of the contact",
"The cell phone number of the contact": "The cell phone number of the contact",
"The street address of the contact": "The street address of the contact",
"The city of the contact": "The city of the contact",
"The country of the contact": "The country of the contact",
"The company name of the contact": "The company name of the contact",
"The job title or position of the contact": "The job title or position of the contact",
"External identifier for the contact (useful for syncing with other systems)": "External identifier for the contact (useful for syncing with other systems)",
"The campaign source that brought this contact": "The campaign source that brought this contact",
"Whether the contact can receive email communications": "Whether the contact can receive email communications",
"Whether the contact can receive SMS messages": "Whether the contact can receive SMS messages",
"Select lists to subscribe the contact to": "Select lists to subscribe the contact to",
"Custom fields data (JSON object with field IDs as keys)": "Custom fields data (JSON object with field IDs as keys)",
"Choose the contact operation type": "Choose the contact operation type",
"The name of the list to be created": "The name of the list to be created",
"Internal description of the list for your reference": "Internal description of the list for your reference",
"The public-facing name of the list visible to subscribers": "The public-facing name of the list visible to subscribers",
"Public description of the list visible to subscribers": "Public description of the list visible to subscribers",
"Make this list publicly visible": "Make this list publicly visible",
"Allow users to subscribe to this list themselves": "Allow users to subscribe to this list themselves",
"Allow users to unsubscribe from this list themselves": "Allow users to unsubscribe from this list themselves",
"Enable portal access for this list": "Enable portal access for this list",
"Choose how to search for subscribers": "Choose how to search for subscribers",
"The unique ID of the contact": "The unique ID of the contact",
"The email address of the contact": "The email address of the contact",
"The phone number of the contact (cellphone)": "The phone number of the contact (cellphone)",
"The external ID of the contact": "The external ID of the contact",
"Search by first name": "Search by first name",
"Search by last name": "Search by last name",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.",
"Include custom fields in the response": "Include custom fields in the response",
"Include linked lists in the response": "Include linked lists in the response",
"Number of records to skip (for pagination, default: 0)": "Number of records to skip (for pagination, default: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Maximum number of records to return (default: 100, max: 100)",
"Sort the results by a specific field": "Sort the results by a specific field",
"Select the contact to unsubscribe": "Select the contact to unsubscribe",
"Reason for unsubscribing the contact": "Reason for unsubscribing the contact",
"Create Only": "Create Only",
"Create or Update if Exists": "Create or Update if Exists",
"Restore if Deleted": "Restore if Deleted",
"Restore if Unsubscribed": "Restore if Unsubscribed",
"Override Nullable Values": "Override Nullable Values",
"By Identifier (ID, Email, Phone, External ID)": "By Identifier (ID, Email, Phone, External ID)",
"By Name (First Name, Last Name)": "By Name (First Name, Last Name)",
"All Active Contacts (with pagination)": "All Active Contacts (with pagination)",
"ID (Newest First)": "ID (Newest First)",
"ID (Oldest First)": "ID (Oldest First)",
"Email (A-Z)": "Email (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "First Name (A-Z)",
"First Name (Z-A)": "First Name (Z-A)",
"Last Changed (Newest)": "Last Changed (Newest)",
"Last Changed (Oldest)": "Last Changed (Oldest)",
"Signup Date (Newest)": "Signup Date (Newest)",
"Signup Date (Oldest)": "Signup Date (Oldest)",
"New List Created": "New List Created",
"New Subscriber": "New Subscriber",
"New Form Created": "New Form Created",
"New Lead Submitted": "New Lead Submitted",
"Fires when a new mailing list is created in your Smoove account": "Fires when a new mailing list is created in your Smoove account",
"Fires when a new subscriber is added to your Smoove account": "Fires when a new subscriber is added to your Smoove account",
"Fires when a new form/landing page is created in your Smoove account": "Fires when a new form/landing page is created in your Smoove account",
"Fires when a lead submits via form, popup, or mobile campaign": "Fires when a lead submits via form, popup, or mobile campaign",
"Fields to Include": "Fields to Include",
"Sort Order": "Sort Order",
"Max Lists to Monitor": "Max Lists to Monitor",
"Join Source Filter": "Join Source Filter",
"Max Items to Check": "Max Items to Check",
"Form Type Filter": "Form Type Filter",
"Monitoring Mode": "Monitoring Mode",
"LandingPage/Form ID": "LandingPage/Form ID",
"Include Full Contact Details": "Include Full Contact Details",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.",
"How to sort the lists for monitoring": "How to sort the lists for monitoring",
"Maximum number of lists to check for new additions (1-100)": "Maximum number of lists to check for new additions (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.",
"Include custom field data in subscriber information": "Include custom field data in subscriber information",
"Include list associations in subscriber information": "Include list associations in subscriber information",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Filter subscribers by how they joined (leave as \"All\" to monitor all sources)",
"How to sort contacts for monitoring new subscribers": "How to sort contacts for monitoring new subscribers",
"Maximum number of contacts to check for new subscribers (1-100)": "Maximum number of contacts to check for new subscribers (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Filter by specific form type, or select \"All\" to monitor all form types",
"Choose whether to monitor all forms or a specific form": "Choose whether to monitor all forms or a specific form",
"Select the andingPage/Form ": "Select the andingPage/Form ",
"Include custom field data in the lead submission": "Include custom field data in the lead submission",
"Include complete contact information in the submission data": "Include complete contact information in the submission data",
"Newest First (by ID)": "Newest First (by ID)",
"Oldest First (by ID)": "Oldest First (by ID)",
"Name (A-Z)": "Name (A-Z)",
"Name (Z-A)": "Name (Z-A)",
"All Sources": "All Sources",
"Unknown": "Unknown",
"Manual Entry": "Manual Entry",
"Import": "Import",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Landing Page",
"Embed Form": "Embed Form",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "Form",
"Automation": "Automation",
"Newest Signups First": "Newest Signups First",
"Oldest Signups First": "Oldest Signups First",
"Recently Changed First": "Recently Changed First",
"All Types": "All Types",
"Facebook Form": "Facebook Form",
"Mobile Form": "Mobile Form",
"Popup Form": "Popup Form",
"All Forms/Landing Pages": "All Forms/Landing Pages",
"Specific Form/Landing Page": "Specific Form/Landing Page"
}

View File

@@ -0,0 +1,165 @@
{
"Smoove": "Smoove",
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove is a platform for creating and managing your email list and sending emails to your subscribers.",
"Add or Update Subscriber": "Add or Update Subscriber",
"Create a List": "Create a List",
"Find Subscriber": "Find Subscriber",
"Unsubscribe Subscriber": "Unsubscribe Subscriber",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Create or update subscriber data, and subscribe/unsubscribe from lists",
"Create a new mailing list with custom settings and descriptions": "Create a new mailing list with custom settings and descriptions",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Search for subscribers by unique identifiers (ID, email, phone, external ID) or name",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list",
"Email Address": "Email Address",
"First Name": "First Name",
"Last Name": "Last Name",
"Date of Birth": "Date of Birth",
"Phone Number": "Phone Number",
"Cell Phone": "Cell Phone",
"Address": "Address",
"City": "City",
"Country": "Country",
"Company": "Company",
"Position": "Position",
"External ID": "External ID",
"Campaign Source": "Campaign Source",
"Can Receive Emails": "Can Receive Emails",
"Can Receive SMS": "Can Receive SMS",
"Lists": "Lists",
"Custom Fields": "Custom Fields",
"Operation": "Operation",
"List Name": "List Name",
"Description": "Description",
"Public Name": "Public Name",
"Public Description": "Public Description",
"Is Public": "Is Public",
"Allow Users to Subscribe": "Allow Users to Subscribe",
"Allow Users to Unsubscribe": "Allow Users to Unsubscribe",
"Is Portal": "Is Portal",
"Search Type": "Search Type",
"Contact ID": "Contact ID",
"Fields to Return": "Fields to Return",
"Include Custom Fields": "Include Custom Fields",
"Include Linked Lists": "Include Linked Lists",
"Skip Records": "Skip Records",
"Max Records": "Max Records",
"Sort By": "Sort By",
"Contact": "Contact",
"Unsubscribe Reason": "Unsubscribe Reason",
"Select an existing contact email or type a new one": "Select an existing contact email or type a new one",
"The first name of the contact": "The first name of the contact",
"The last name of the contact": "The last name of the contact",
"The date of birth of the contact": "The date of birth of the contact",
"The primary phone number of the contact": "The primary phone number of the contact",
"The cell phone number of the contact": "The cell phone number of the contact",
"The street address of the contact": "The street address of the contact",
"The city of the contact": "The city of the contact",
"The country of the contact": "The country of the contact",
"The company name of the contact": "The company name of the contact",
"The job title or position of the contact": "The job title or position of the contact",
"External identifier for the contact (useful for syncing with other systems)": "External identifier for the contact (useful for syncing with other systems)",
"The campaign source that brought this contact": "The campaign source that brought this contact",
"Whether the contact can receive email communications": "Whether the contact can receive email communications",
"Whether the contact can receive SMS messages": "Whether the contact can receive SMS messages",
"Select lists to subscribe the contact to": "Select lists to subscribe the contact to",
"Custom fields data (JSON object with field IDs as keys)": "Custom fields data (JSON object with field IDs as keys)",
"Choose the contact operation type": "Choose the contact operation type",
"The name of the list to be created": "The name of the list to be created",
"Internal description of the list for your reference": "Internal description of the list for your reference",
"The public-facing name of the list visible to subscribers": "The public-facing name of the list visible to subscribers",
"Public description of the list visible to subscribers": "Public description of the list visible to subscribers",
"Make this list publicly visible": "Make this list publicly visible",
"Allow users to subscribe to this list themselves": "Allow users to subscribe to this list themselves",
"Allow users to unsubscribe from this list themselves": "Allow users to unsubscribe from this list themselves",
"Enable portal access for this list": "Enable portal access for this list",
"Choose how to search for subscribers": "Choose how to search for subscribers",
"The unique ID of the contact": "The unique ID of the contact",
"The email address of the contact": "The email address of the contact",
"The phone number of the contact (cellphone)": "The phone number of the contact (cellphone)",
"The external ID of the contact": "The external ID of the contact",
"Search by first name": "Search by first name",
"Search by last name": "Search by last name",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.",
"Include custom fields in the response": "Include custom fields in the response",
"Include linked lists in the response": "Include linked lists in the response",
"Number of records to skip (for pagination, default: 0)": "Number of records to skip (for pagination, default: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Maximum number of records to return (default: 100, max: 100)",
"Sort the results by a specific field": "Sort the results by a specific field",
"Select the contact to unsubscribe": "Select the contact to unsubscribe",
"Reason for unsubscribing the contact": "Reason for unsubscribing the contact",
"Create Only": "Create Only",
"Create or Update if Exists": "Create or Update if Exists",
"Restore if Deleted": "Restore if Deleted",
"Restore if Unsubscribed": "Restore if Unsubscribed",
"Override Nullable Values": "Override Nullable Values",
"By Identifier (ID, Email, Phone, External ID)": "By Identifier (ID, Email, Phone, External ID)",
"By Name (First Name, Last Name)": "By Name (First Name, Last Name)",
"All Active Contacts (with pagination)": "All Active Contacts (with pagination)",
"ID (Newest First)": "ID (Newest First)",
"ID (Oldest First)": "ID (Oldest First)",
"Email (A-Z)": "Email (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "First Name (A-Z)",
"First Name (Z-A)": "First Name (Z-A)",
"Last Changed (Newest)": "Last Changed (Newest)",
"Last Changed (Oldest)": "Last Changed (Oldest)",
"Signup Date (Newest)": "Signup Date (Newest)",
"Signup Date (Oldest)": "Signup Date (Oldest)",
"New List Created": "New List Created",
"New Subscriber": "New Subscriber",
"New Form Created": "New Form Created",
"New Lead Submitted": "New Lead Submitted",
"Fires when a new mailing list is created in your Smoove account": "Fires when a new mailing list is created in your Smoove account",
"Fires when a new subscriber is added to your Smoove account": "Fires when a new subscriber is added to your Smoove account",
"Fires when a new form/landing page is created in your Smoove account": "Fires when a new form/landing page is created in your Smoove account",
"Fires when a lead submits via form, popup, or mobile campaign": "Fires when a lead submits via form, popup, or mobile campaign",
"Fields to Include": "Fields to Include",
"Sort Order": "Sort Order",
"Max Lists to Monitor": "Max Lists to Monitor",
"Join Source Filter": "Join Source Filter",
"Max Items to Check": "Max Items to Check",
"Form Type Filter": "Form Type Filter",
"Monitoring Mode": "Monitoring Mode",
"LandingPage/Form ID": "LandingPage/Form ID",
"Include Full Contact Details": "Include Full Contact Details",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.",
"How to sort the lists for monitoring": "How to sort the lists for monitoring",
"Maximum number of lists to check for new additions (1-100)": "Maximum number of lists to check for new additions (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.",
"Include custom field data in subscriber information": "Include custom field data in subscriber information",
"Include list associations in subscriber information": "Include list associations in subscriber information",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Filter subscribers by how they joined (leave as \"All\" to monitor all sources)",
"How to sort contacts for monitoring new subscribers": "How to sort contacts for monitoring new subscribers",
"Maximum number of contacts to check for new subscribers (1-100)": "Maximum number of contacts to check for new subscribers (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Filter by specific form type, or select \"All\" to monitor all form types",
"Choose whether to monitor all forms or a specific form": "Choose whether to monitor all forms or a specific form",
"Select the andingPage/Form ": "Select the andingPage/Form ",
"Include custom field data in the lead submission": "Include custom field data in the lead submission",
"Include complete contact information in the submission data": "Include complete contact information in the submission data",
"Newest First (by ID)": "Newest First (by ID)",
"Oldest First (by ID)": "Oldest First (by ID)",
"Name (A-Z)": "Name (A-Z)",
"Name (Z-A)": "Name (Z-A)",
"All Sources": "All Sources",
"Unknown": "Unknown",
"Manual Entry": "Manual Entry",
"Import": "Import",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Landing Page",
"Embed Form": "Embed Form",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "Form",
"Automation": "Automation",
"Newest Signups First": "Newest Signups First",
"Oldest Signups First": "Oldest Signups First",
"Recently Changed First": "Recently Changed First",
"All Types": "All Types",
"Facebook Form": "Facebook Form",
"Mobile Form": "Mobile Form",
"Popup Form": "Popup Form",
"All Forms/Landing Pages": "All Forms/Landing Pages",
"Specific Form/Landing Page": "Specific Form/Landing Page"
}

View File

@@ -0,0 +1,164 @@
{
"Smoove is a platform for creating and managing your email list and sending emails to your subscribers.": "Smoove is a platform for creating and managing your email list and sending emails to your subscribers.",
"Add or Update Subscriber": "Add or Update Subscriber",
"Create a List": "Create a List",
"Find Subscriber": "Find Subscriber",
"Unsubscribe Subscriber": "Unsubscribe Subscriber",
"Create or update subscriber data, and subscribe/unsubscribe from lists": "Create or update subscriber data, and subscribe/unsubscribe from lists",
"Create a new mailing list with custom settings and descriptions": "Create a new mailing list with custom settings and descriptions",
"Search for subscribers by unique identifiers (ID, email, phone, external ID) or name": "Search for subscribers by unique identifiers (ID, email, phone, external ID) or name",
"Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list": "Unsubscribe a contact from all lists and move them to the \"Unsubscribed\" list",
"Email Address": "Email Address",
"First Name": "名字",
"Last Name": "名字",
"Date of Birth": "Date of Birth",
"Phone Number": "Phone Number",
"Cell Phone": "Cell Phone",
"Address": "Address",
"City": "City",
"Country": "Country",
"Company": "Company",
"Position": "Position",
"External ID": "外部ID",
"Campaign Source": "Campaign Source",
"Can Receive Emails": "Can Receive Emails",
"Can Receive SMS": "Can Receive SMS",
"Lists": "Lists",
"Custom Fields": "Custom Fields",
"Operation": "Operation",
"List Name": "List Name",
"Description": "描述",
"Public Name": "Public Name",
"Public Description": "Public Description",
"Is Public": "Is Public",
"Allow Users to Subscribe": "Allow Users to Subscribe",
"Allow Users to Unsubscribe": "Allow Users to Unsubscribe",
"Is Portal": "Is Portal",
"Search Type": "Search Type",
"Contact ID": "Contact ID",
"Fields to Return": "Fields to Return",
"Include Custom Fields": "Include Custom Fields",
"Include Linked Lists": "Include Linked Lists",
"Skip Records": "Skip Records",
"Max Records": "Max Records",
"Sort By": "Sort By",
"Contact": "Contact",
"Unsubscribe Reason": "Unsubscribe Reason",
"Select an existing contact email or type a new one": "Select an existing contact email or type a new one",
"The first name of the contact": "The first name of the contact",
"The last name of the contact": "The last name of the contact",
"The date of birth of the contact": "The date of birth of the contact",
"The primary phone number of the contact": "The primary phone number of the contact",
"The cell phone number of the contact": "The cell phone number of the contact",
"The street address of the contact": "The street address of the contact",
"The city of the contact": "The city of the contact",
"The country of the contact": "The country of the contact",
"The company name of the contact": "The company name of the contact",
"The job title or position of the contact": "The job title or position of the contact",
"External identifier for the contact (useful for syncing with other systems)": "External identifier for the contact (useful for syncing with other systems)",
"The campaign source that brought this contact": "The campaign source that brought this contact",
"Whether the contact can receive email communications": "Whether the contact can receive email communications",
"Whether the contact can receive SMS messages": "Whether the contact can receive SMS messages",
"Select lists to subscribe the contact to": "Select lists to subscribe the contact to",
"Custom fields data (JSON object with field IDs as keys)": "Custom fields data (JSON object with field IDs as keys)",
"Choose the contact operation type": "Choose the contact operation type",
"The name of the list to be created": "The name of the list to be created",
"Internal description of the list for your reference": "Internal description of the list for your reference",
"The public-facing name of the list visible to subscribers": "The public-facing name of the list visible to subscribers",
"Public description of the list visible to subscribers": "Public description of the list visible to subscribers",
"Make this list publicly visible": "Make this list publicly visible",
"Allow users to subscribe to this list themselves": "Allow users to subscribe to this list themselves",
"Allow users to unsubscribe from this list themselves": "Allow users to unsubscribe from this list themselves",
"Enable portal access for this list": "Enable portal access for this list",
"Choose how to search for subscribers": "Choose how to search for subscribers",
"The unique ID of the contact": "The unique ID of the contact",
"The email address of the contact": "The email address of the contact",
"The phone number of the contact (cellphone)": "The phone number of the contact (cellphone)",
"The external ID of the contact": "The external ID of the contact",
"Search by first name": "Search by first name",
"Search by last name": "Search by last name",
"Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.": "Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.",
"Include custom fields in the response": "Include custom fields in the response",
"Include linked lists in the response": "Include linked lists in the response",
"Number of records to skip (for pagination, default: 0)": "Number of records to skip (for pagination, default: 0)",
"Maximum number of records to return (default: 100, max: 100)": "Maximum number of records to return (default: 100, max: 100)",
"Sort the results by a specific field": "Sort the results by a specific field",
"Select the contact to unsubscribe": "Select the contact to unsubscribe",
"Reason for unsubscribing the contact": "Reason for unsubscribing the contact",
"Create Only": "Create Only",
"Create or Update if Exists": "Create or Update if Exists",
"Restore if Deleted": "Restore if Deleted",
"Restore if Unsubscribed": "Restore if Unsubscribed",
"Override Nullable Values": "Override Nullable Values",
"By Identifier (ID, Email, Phone, External ID)": "By Identifier (ID, Email, Phone, External ID)",
"By Name (First Name, Last Name)": "By Name (First Name, Last Name)",
"All Active Contacts (with pagination)": "All Active Contacts (with pagination)",
"ID (Newest First)": "ID (Newest First)",
"ID (Oldest First)": "ID (Oldest First)",
"Email (A-Z)": "Email (A-Z)",
"Email (Z-A)": "Email (Z-A)",
"First Name (A-Z)": "First Name (A-Z)",
"First Name (Z-A)": "First Name (Z-A)",
"Last Changed (Newest)": "Last Changed (Newest)",
"Last Changed (Oldest)": "Last Changed (Oldest)",
"Signup Date (Newest)": "Signup Date (Newest)",
"Signup Date (Oldest)": "Signup Date (Oldest)",
"New List Created": "New List Created",
"New Subscriber": "New Subscriber",
"New Form Created": "New Form Created",
"New Lead Submitted": "New Lead Submitted",
"Fires when a new mailing list is created in your Smoove account": "Fires when a new mailing list is created in your Smoove account",
"Fires when a new subscriber is added to your Smoove account": "Fires when a new subscriber is added to your Smoove account",
"Fires when a new form/landing page is created in your Smoove account": "Fires when a new form/landing page is created in your Smoove account",
"Fires when a lead submits via form, popup, or mobile campaign": "Fires when a lead submits via form, popup, or mobile campaign",
"Fields to Include": "Fields to Include",
"Sort Order": "Sort Order",
"Max Lists to Monitor": "Max Lists to Monitor",
"Join Source Filter": "Join Source Filter",
"Max Items to Check": "Max Items to Check",
"Form Type Filter": "Form Type Filter",
"Monitoring Mode": "Monitoring Mode",
"LandingPage/Form ID": "LandingPage/Form ID",
"Include Full Contact Details": "Include Full Contact Details",
"Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.": "Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.",
"How to sort the lists for monitoring": "How to sort the lists for monitoring",
"Maximum number of lists to check for new additions (1-100)": "Maximum number of lists to check for new additions (1-100)",
"Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.": "Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.",
"Include custom field data in subscriber information": "Include custom field data in subscriber information",
"Include list associations in subscriber information": "Include list associations in subscriber information",
"Filter subscribers by how they joined (leave as \"All\" to monitor all sources)": "Filter subscribers by how they joined (leave as \"All\" to monitor all sources)",
"How to sort contacts for monitoring new subscribers": "How to sort contacts for monitoring new subscribers",
"Maximum number of contacts to check for new subscribers (1-100)": "Maximum number of contacts to check for new subscribers (1-100)",
"Filter by specific form type, or select \"All\" to monitor all form types": "Filter by specific form type, or select \"All\" to monitor all form types",
"Choose whether to monitor all forms or a specific form": "Choose whether to monitor all forms or a specific form",
"Select the andingPage/Form ": "Select the andingPage/Form ",
"Include custom field data in the lead submission": "Include custom field data in the lead submission",
"Include complete contact information in the submission data": "Include complete contact information in the submission data",
"Newest First (by ID)": "Newest First (by ID)",
"Oldest First (by ID)": "Oldest First (by ID)",
"Name (A-Z)": "Name (A-Z)",
"Name (Z-A)": "Name (Z-A)",
"All Sources": "All Sources",
"Unknown": "未知的",
"Manual Entry": "Manual Entry",
"Import": "导入",
"Facebook": "Facebook",
"API": "API",
"Landing Page": "Landing Page",
"Embed Form": "Embed Form",
"Popup": "Popup",
"QR Code": "QR Code",
"SMS": "SMS",
"WhatsApp": "WhatsApp",
"Form": "Form",
"Automation": "Automation",
"Newest Signups First": "Newest Signups First",
"Oldest Signups First": "Oldest Signups First",
"Recently Changed First": "Recently Changed First",
"All Types": "All Types",
"Facebook Form": "Facebook Form",
"Mobile Form": "Mobile Form",
"Popup Form": "Popup Form",
"All Forms/Landing Pages": "All Forms/Landing Pages",
"Specific Form/Landing Page": "Specific Form/Landing Page"
}

View File

@@ -0,0 +1,24 @@
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
import { smooveAuth } from "./lib/common/auth";
import { addOrUpdateSubscriber } from "./lib/actions/add-or-update-subscriber";
import { createAList } from "./lib/actions/create-a-list";
import { findSubscriber } from "./lib/actions/find-subscriber";
import { unsubscribe } from "./lib/actions/unsubscribe";
import { newListCreated } from "./lib/triggers/new-list-created";
import { newSubscriber } from "./lib/triggers/new-subscriber";
import { newFormCreated } from "./lib/triggers/new-form-created";
import { newLeadSubmitted } from "./lib/triggers/new-lead-submitted";
import { PieceCategory } from "@activepieces/shared";
export const smoove = createPiece({
displayName: "Smoove",
auth: smooveAuth,
description: "Smoove is a platform for creating and managing your email list and sending emails to your subscribers.",
categories: [PieceCategory.MARKETING],
minimumSupportedRelease: '0.36.1',
logoUrl: "https://cdn.activepieces.com/pieces/smoove.png",
authors: ['Sanket6652', 'onyedikachi-david'],
actions: [addOrUpdateSubscriber, createAList, findSubscriber, unsubscribe],
triggers: [newListCreated, newSubscriber, newFormCreated, newLeadSubmitted],
});

View File

@@ -0,0 +1,168 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { smooveAuth } from '../common/auth';
import { listsDropdown, emailDropdown } from '../common/props';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const addOrUpdateSubscriber = createAction({
auth: smooveAuth,
name: 'addOrUpdateSubscriber',
displayName: 'Add or Update Subscriber',
description: 'Create or update subscriber data, and subscribe/unsubscribe from lists',
props: {
email: emailDropdown,
firstName: Property.ShortText({
displayName: 'First Name',
description: 'The first name of the contact',
required: false,
}),
lastName: Property.ShortText({
displayName: 'Last Name',
description: 'The last name of the contact',
required: false,
}),
dateOfBirth: Property.DateTime({
displayName: 'Date of Birth',
description: 'The date of birth of the contact',
required: false,
}),
phone: Property.ShortText({
displayName: 'Phone Number',
description: 'The primary phone number of the contact',
required: false,
}),
cellPhone: Property.ShortText({
displayName: 'Cell Phone',
description: 'The cell phone number of the contact',
required: false,
}),
address: Property.ShortText({
displayName: 'Address',
description: 'The street address of the contact',
required: false,
}),
city: Property.ShortText({
displayName: 'City',
description: 'The city of the contact',
required: false,
}),
country: Property.ShortText({
displayName: 'Country',
description: 'The country of the contact',
required: false,
}),
company: Property.ShortText({
displayName: 'Company',
description: 'The company name of the contact',
required: false,
}),
position: Property.ShortText({
displayName: 'Position',
description: 'The job title or position of the contact',
required: false,
}),
externalId: Property.ShortText({
displayName: 'External ID',
description: 'External identifier for the contact (useful for syncing with other systems)',
required: false,
}),
campaignSource: Property.ShortText({
displayName: 'Campaign Source',
description: 'The campaign source that brought this contact',
required: false,
}),
canReceiveEmails: Property.Checkbox({
displayName: 'Can Receive Emails',
description: 'Whether the contact can receive email communications',
required: false,
defaultValue: true,
}),
canReceiveSmsMessages: Property.Checkbox({
displayName: 'Can Receive SMS',
description: 'Whether the contact can receive SMS messages',
required: false,
defaultValue: true,
}),
lists: listsDropdown,
customFields: Property.Object({
displayName: 'Custom Fields',
description: 'Custom fields data (JSON object with field IDs as keys)',
required: false,
}),
operation: Property.StaticDropdown({
displayName: 'Operation',
description: 'Choose the contact operation type',
required: true,
defaultValue: 'updateIfExists',
options: {
options: [
{ label: 'Create Only', value: 'create' },
{ label: 'Create or Update if Exists', value: 'updateIfExists' },
{ label: 'Restore if Deleted', value: 'restoreIfDeleted' },
{ label: 'Restore if Unsubscribed', value: 'restoreIfUnsubscribed' },
{ label: 'Override Nullable Values', value: 'overrideNullableValue' },
],
},
}),
},
async run({ auth, propsValue }) {
const {
email, firstName, lastName, dateOfBirth, phone, cellPhone,
address, city, country, company, position, externalId,
campaignSource, canReceiveEmails, canReceiveSmsMessages,
lists, customFields, operation
} = propsValue;
let endpoint = '/Contacts';
const queryParams: string[] = [];
if (operation === 'updateIfExists') queryParams.push('updateIfExists=true');
if (operation === 'restoreIfDeleted') queryParams.push('restoreIfDeleted=true');
if (operation === 'restoreIfUnsubscribed') queryParams.push('restoreIfUnsubscribed=true');
if (operation === 'overrideNullableValue') queryParams.push('overrideNullableValue=true');
if (queryParams.length) {
endpoint += '?' + queryParams.join('&');
}
const body: any = {
email,
};
if (firstName) body.firstName = firstName;
if (lastName) body.lastName = lastName;
if (dateOfBirth) body.dateOfBirth = dateOfBirth;
if (phone) body.phone = phone;
if (cellPhone) body.cellPhone = cellPhone;
if (address) body.address = address;
if (city) body.city = city;
if (country) body.country = country;
if (company) body.company = company;
if (position) body.position = position;
if (externalId) body.externalId = externalId;
if (campaignSource) body.campaignSource = campaignSource;
if (typeof canReceiveEmails === 'boolean') body.canReceiveEmails = canReceiveEmails;
if (typeof canReceiveSmsMessages === 'boolean') body.canReceiveSmsMessages = canReceiveSmsMessages;
if (lists && Array.isArray(lists) && lists.length > 0) {
body.lists_Linked = lists;
}
if (customFields && typeof customFields === 'object') {
body.customFields = customFields;
}
const response = await makeRequest(auth.secret_text, HttpMethod.POST, endpoint, body);
return response;
},
});

View File

@@ -0,0 +1,79 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { smooveAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const createAList = createAction({
auth: smooveAuth,
name: 'createAList',
displayName: 'Create a List',
description: 'Create a new mailing list with custom settings and descriptions',
props: {
name: Property.ShortText({
displayName: 'List Name',
description: 'The name of the list to be created',
required: true,
}),
description: Property.LongText({
displayName: 'Description',
description: 'Internal description of the list for your reference',
required: false,
defaultValue: 'This list is a list for new subscribers',
}),
publicName: Property.ShortText({
displayName: 'Public Name',
description: 'The public-facing name of the list visible to subscribers',
required: false,
defaultValue: 'My subscribers public name list',
}),
publicDescription: Property.LongText({
displayName: 'Public Description',
description: 'Public description of the list visible to subscribers',
required: false,
defaultValue: 'Public name - This list is a list for new subscribers',
}),
isPublic: Property.Checkbox({
displayName: 'Is Public',
description: 'Make this list publicly visible',
required: true,
defaultValue: true
}),
allowsUsersToSubscribe: Property.Checkbox({
displayName: 'Allow Users to Subscribe',
description: 'Allow users to subscribe to this list themselves',
required: true,
defaultValue: true
}),
allowsUsersToUnsubscribe: Property.Checkbox({
displayName: 'Allow Users to Unsubscribe',
description: 'Allow users to unsubscribe from this list themselves',
required: true,
defaultValue: true
}),
isPortal: Property.Checkbox({
displayName: 'Is Portal',
description: 'Enable portal access for this list',
required: true,
defaultValue: false
}),
},
async run({ auth, propsValue }) {
const { name, description, publicName, publicDescription, isPublic, allowsUsersToSubscribe, allowsUsersToUnsubscribe, isPortal } = propsValue
const body = {
name,
description,
publicName,
publicDescription,
permissions: {
isPublic,
allowsUsersToSubscribe,
allowsUsersToUnsubscribe,
isPortal
}
}
const response = await makeRequest(auth.secret_text, HttpMethod.POST, '/Lists', body)
return response
},
});

View File

@@ -0,0 +1,192 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { smooveAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const findSubscriber = createAction({
auth: smooveAuth,
name: 'findSubscriber',
displayName: 'Find Subscriber',
description: 'Search for subscribers by unique identifiers (ID, email, phone, external ID) or name',
props: {
searchType: Property.StaticDropdown({
displayName: 'Search Type',
description: 'Choose how to search for subscribers',
required: true,
defaultValue: 'identifier',
options: {
options: [
{ label: 'By Identifier (ID, Email, Phone, External ID)', value: 'identifier' },
{ label: 'By Name (First Name, Last Name)', value: 'name' },
{ label: 'All Active Contacts (with pagination)', value: 'all' }
]
}
}),
id: Property.ShortText({
displayName: 'Contact ID',
description: 'The unique ID of the contact',
required: false,
}),
email: Property.ShortText({
displayName: 'Email Address',
description: 'The email address of the contact',
required: false,
}),
cellphone: Property.ShortText({
displayName: 'Phone Number',
description: 'The phone number of the contact (cellphone)',
required: false,
}),
externalId: Property.ShortText({
displayName: 'External ID',
description: 'The external ID of the contact',
required: false,
}),
firstName: Property.ShortText({
displayName: 'First Name',
description: 'Search by first name',
required: false,
}),
lastName: Property.ShortText({
displayName: 'Last Name',
description: 'Search by last name',
required: false,
}),
fields: Property.ShortText({
displayName: 'Fields to Return',
description: 'Comma-separated list of fields to return (e.g., id,email,firstName,lastName). Leave empty for all fields.',
required: false,
}),
includeCustomFields: Property.Checkbox({
displayName: 'Include Custom Fields',
description: 'Include custom fields in the response',
required: false,
defaultValue: false,
}),
includeLinkedLists: Property.Checkbox({
displayName: 'Include Linked Lists',
description: 'Include linked lists in the response',
required: false,
defaultValue: false,
}),
skip: Property.Number({
displayName: 'Skip Records',
description: 'Number of records to skip (for pagination, default: 0)',
required: false,
defaultValue: 0,
}),
take: Property.Number({
displayName: 'Max Records',
description: 'Maximum number of records to return (default: 100, max: 100)',
required: false,
defaultValue: 100,
}),
sort: Property.StaticDropdown({
displayName: 'Sort By',
description: 'Sort the results by a specific field',
required: false,
defaultValue: '-id',
options: {
options: [
{ label: 'ID (Newest First)', value: '-id' },
{ label: 'ID (Oldest First)', value: 'id' },
{ label: 'Email (A-Z)', value: 'email' },
{ label: 'Email (Z-A)', value: '-email' },
{ label: 'First Name (A-Z)', value: 'firstName' },
{ label: 'First Name (Z-A)', value: '-firstName' },
{ label: 'Last Changed (Newest)', value: '-lastChanged' },
{ label: 'Last Changed (Oldest)', value: 'lastChanged' },
{ label: 'Signup Date (Newest)', value: '-timestampSignup' },
{ label: 'Signup Date (Oldest)', value: 'timestampSignup' }
]
}
}),
},
async run({ auth, propsValue }) {
const {
searchType, id, email, cellphone, externalId, firstName, lastName,
fields, includeCustomFields, includeLinkedLists, skip, take, sort
} = propsValue;
const queryParams: string[] = [];
if (searchType === 'identifier') {
if (!id && !email && !cellphone && !externalId) {
throw new Error('For identifier search, please provide at least one: Contact ID, Email, Phone, or External ID');
}
if (id) queryParams.push(`id=${encodeURIComponent(id)}`);
if (email) queryParams.push(`email=${encodeURIComponent(email)}`);
if (cellphone) queryParams.push(`cellphone=${encodeURIComponent(cellphone)}`);
if (externalId) queryParams.push(`externalid=${encodeURIComponent(externalId)}`);
} else if (searchType === 'name') {
if (!firstName && !lastName) {
throw new Error('For name search, please provide First Name and/or Last Name');
}
if (firstName) queryParams.push(`firstname=${encodeURIComponent(firstName)}`);
if (lastName) queryParams.push(`lastname=${encodeURIComponent(lastName)}`);
}
if (fields && fields.trim()) {
queryParams.push(`fields=${encodeURIComponent(fields.trim())}`);
}
if (includeCustomFields) queryParams.push('includeCustomFields=true');
if (includeLinkedLists) queryParams.push('includeLinkedLists=true');
const skipValue = Math.max(0, skip || 0);
const takeValue = Math.min(Math.max(1, take || 100), 100);
queryParams.push(`skip=${skipValue}`);
queryParams.push(`take=${takeValue}`);
if (sort) queryParams.push(`sort=${encodeURIComponent(sort)}`);
const endpoint = `/Contacts?${queryParams.join('&')}`;
try {
const response = await makeRequest(auth.secret_text, HttpMethod.GET, endpoint);
if (!response) {
return {
success: false,
message: 'No response from server',
data: [],
total: 0
};
}
const contacts = Array.isArray(response) ? response : [response];
return {
success: true,
message: `Found ${contacts.length} contact(s)`,
data: contacts,
total: contacts.length,
searchType,
pagination: {
skip: skipValue,
take: takeValue,
returned: contacts.length
}
};
} catch (error: any) {
if (error.message && error.message.includes('404')) {
return {
success: false,
message: 'No contacts found matching the provided criteria',
data: [],
total: 0,
searchType
};
}
throw error;
}
},
});

View File

@@ -0,0 +1,42 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { smooveAuth } from '../common/auth';
import { contactIdDropdown } from '../common/props';
import { makeRequest } from '../common/client';
import { HttpMethod } from '@activepieces/pieces-common';
export const unsubscribe = createAction({
auth: smooveAuth,
name: 'unsubscribe',
displayName: 'Unsubscribe Subscriber',
description: 'Unsubscribe a contact from all lists and move them to the "Unsubscribed" list',
props: {
contactId: contactIdDropdown,
reason: Property.ShortText({
displayName: 'Unsubscribe Reason',
description: 'Reason for unsubscribing the contact',
required: true,
defaultValue: 'Unsubscribed via automation'
})
},
async run({ auth, propsValue }) {
const { contactId, reason } = propsValue;
const contactIdStr = contactId as string;
if (!contactIdStr || contactIdStr.trim() === '') {
throw new Error('Please select a contact from the dropdown');
}
const body = {
reason: reason || 'Unsubscribed via automation'
};
const response = await makeRequest(
auth.secret_text,
HttpMethod.POST,
`/Contacts/${encodeURIComponent(contactIdStr.trim())}/Unsubscribe?by=ContactId`,
body
);
return response;
},
});

View File

@@ -0,0 +1,30 @@
import { PieceAuth, Property } from "@activepieces/pieces-framework";
import { makeRequest } from "./client";
import { HttpMethod } from "@activepieces/pieces-common";
export const smooveAuth = PieceAuth.SecretText({
displayName: 'smoove API Key',
required: true,
validate: async ({ auth }) => {
if (auth) {
try {
await makeRequest(auth as string, HttpMethod.GET, '/Lists', {});
return {
valid: true,
}
} catch (error) {
return {
valid: false,
error: 'Invalid Api Key'
}
}
}
return {
valid: false,
error: 'Invalid Api Key'
}
},
})

View File

@@ -0,0 +1,28 @@
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
export const BASE_URL = `https://rest.smoove.io/v1`;
export async function makeRequest(
api_key: string,
method: HttpMethod,
path: string,
body?: unknown,
) {
try {
const response = await httpClient.sendRequest({
method,
url: `${BASE_URL}${path}`,
headers: {
'Authorization': `Bearer ${api_key}`,
'Content-Type': 'application/json',
},
body,
});
return response.body;
} catch (error: any) {
throw new Error(`Unexpected error: ${error.message || String(error)}`);
}
}

View File

@@ -0,0 +1,166 @@
import { Property } from "@activepieces/pieces-framework";
import { makeRequest } from "./client";
import { HttpMethod } from "@activepieces/pieces-common";
import { smooveAuth } from "./auth";
export const contactIdDropdown = Property.Dropdown({
auth: smooveAuth,
displayName: 'Contact',
description: 'Select the contact to unsubscribe',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const Contacts = await makeRequest(auth.secret_text, HttpMethod.GET, '/Contacts?fields=id,firstName,lastName,email,cellphone');
return {
disabled: false,
options: Contacts.map((Contact: any) => {
const name = `${Contact.firstName || ''} ${Contact.lastName || ''}`.trim();
const email = Contact.email ? ` (${Contact.email})` : '';
const phone = !Contact.email && Contact.cellphone ? ` (${Contact.cellphone})` : '';
const label = name
? `${name}${email || phone}`
: Contact.email
? Contact.email
: Contact.cellphone
? Contact.cellphone
: `Contact ${Contact.id}`;
return {
label,
value: Contact.id,
};
}),
placeholder: 'Select a contact to unsubscribe'
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading contacts',
};
}
},
});
export const emailDropdown = Property.Dropdown({
auth: smooveAuth,
displayName: 'Email Address',
description: 'Select an existing contact email or type a new one',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const Contacts = await makeRequest(auth.secret_text, HttpMethod.GET, '/Contacts?fields=id,firstName,lastName,email');
const emailOptions = Contacts
.filter((Contact: any) => Contact.email) // Only contacts with emails
.map((Contact: any) => {
const name = `${Contact.firstName || ''} ${Contact.lastName || ''}`.trim();
const label = name ? `${Contact.email} (${name})` : Contact.email;
return {
label,
value: Contact.email,
};
});
return {
disabled: false,
options: emailOptions,
placeholder: 'Select existing email or type new one'
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Type email address manually',
};
}
},
});
export const listsDropdown = Property.MultiSelectDropdown({
auth: smooveAuth,
displayName: 'Lists',
description: 'Select lists to subscribe the contact to',
required: false,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const Lists = await makeRequest(auth.secret_text, HttpMethod.GET, '/Lists');
return {
disabled: false,
options: Lists.map((List: any) => ({
label: List.name || `List ${List.id}`,
value: List.id,
})),
placeholder: 'Select lists (optional)'
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading lists',
};
}
},
});
export const LandingPageIdDropdown = Property.Dropdown({
auth: smooveAuth,
displayName: 'LandingPage/Form ID',
description: 'Select the andingPage/Form ',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
try {
const LandingPages = await makeRequest(auth.secret_text, HttpMethod.GET, '/LandingPages');
return {
disabled: false,
options: LandingPages.map((LandingPage: any) => ({
label: LandingPage.formTitle,
value: LandingPage.formId
})),
};
} catch (error) {
return {
disabled: true,
options: [],
placeholder: 'Error loading teams',
};
}
},
})

View File

@@ -0,0 +1,126 @@
import { createTrigger, TriggerStrategy, PiecePropValueSchema, Property, AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
import { DedupeStrategy, HttpMethod, Polling, pollingHelper } from '@activepieces/pieces-common';
import { smooveAuth } from '../common/auth';
import { makeRequest } from '../common/client';
interface LandingPageData {
formId: number;
formTitle: string;
formType: string;
[key: string]: any;
}
const polling: Polling<AppConnectionValueForAuthProperty<typeof smooveAuth>, { formType?: string }> = {
strategy: DedupeStrategy.LAST_ITEM,
items: async ({ auth, propsValue }) => {
try {
let endpoint = '/LandingPages';
const { formType } = propsValue;
if (formType && formType !== 'All') {
endpoint += `?type=${encodeURIComponent(formType)}`;
}
const response = await makeRequest(auth.secret_text, HttpMethod.GET, endpoint);
if (!response) {
return [];
}
const items: LandingPageData[] = Array.isArray(response) ? response : [response];
const validItems = items
.filter(item => item.formId && item.formTitle)
.sort((a, b) => (b.formId || 0) - (a.formId || 0));
return validItems.map(item => {
const { formId, formTitle, formType, ...otherFields } = item;
return {
id: formId.toString(),
data: {
formId,
formTitle,
formType: formType || 'Unknown',
...otherFields
},
};
});
} catch (error: any) {
console.error('Error fetching landing pages:', error);
return [];
}
}
};
export const newFormCreated = createTrigger({
auth: smooveAuth,
name: 'newFormCreated',
displayName: 'New Form Created',
description: 'Fires when a new form/landing page is created in your Smoove account',
props: {
formType: Property.StaticDropdown({
displayName: 'Form Type Filter',
description: 'Filter by specific form type, or select "All" to monitor all form types',
required: false,
defaultValue: 'All',
options: {
options: [
{ label: 'All Types', value: 'All' },
{ label: 'Landing Page', value: 'LandingPage' },
{ label: 'Facebook Form', value: 'Facebook' },
{ label: 'Mobile Form', value: 'Mobile' },
{ label: 'Embed Form', value: 'Embed' },
{ label: 'Popup Form', value: 'Popup' }
]
}
})
},
sampleData: {
"formId": 581014,
"formTitle": "Contact Us Landing Page",
"formType": "LandingPage",
"dateCreated": "2025-01-22T10:30:00Z",
"isActive": true,
"url": "https://example.smoove.io/landing/contact-us",
"description": "Main contact form for lead generation",
"fields": [
{
"name": "email",
"type": "email",
"required": true
},
{
"name": "firstName",
"type": "text",
"required": true
},
{
"name": "phone",
"type": "tel",
"required": false
}
]
},
type: TriggerStrategy.POLLING,
async test(context) {
const results = await pollingHelper.test(polling, context);
return results;
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -0,0 +1,225 @@
import { createTrigger, TriggerStrategy, PiecePropValueSchema, Property, AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
import { DedupeStrategy, HttpMethod, Polling, pollingHelper } from '@activepieces/pieces-common';
import { smooveAuth } from '../common/auth';
import { makeRequest } from '../common/client';
import { LandingPageIdDropdown } from '../common/props';
interface LeadSubmission {
id: number;
contactId: number;
pageUrl: string;
userIP: string;
timeStamp: string;
contact: {
id: number;
email: string;
firstName?: string;
lastName?: string;
cellPhone?: string;
timestampSignup: string;
externalId?: string;
};
formId?: number;
formType?: string;
customFields?: Record<string, any>;
}
const polling: Polling<AppConnectionValueForAuthProperty<typeof smooveAuth>, any> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
try {
const {
monitoringMode,
landingPageId,
includeCustomFields = false,
includeContactDetails = true
} = propsValue;
let allSubmissions: LeadSubmission[] = [];
if (monitoringMode === 'specific' && landingPageId) {
const submissions = await fetchSubmissionsForPage(
auth,
landingPageId as string,
includeCustomFields,
includeContactDetails,
lastFetchEpochMS
);
allSubmissions = submissions;
} else if (monitoringMode === 'all') {
try {
const landingPages = await makeRequest(auth.secret_text, HttpMethod.GET, '/LandingPages');
const pages = Array.isArray(landingPages) ? landingPages : [];
const pagePromises = pages.slice(0, 10).map(async (page: any) => {
if (page.formId) {
return await fetchSubmissionsForPage(
auth,
page.formId.toString(),
includeCustomFields,
includeContactDetails,
lastFetchEpochMS
);
}
return [];
});
const allPageSubmissions = await Promise.all(pagePromises);
allSubmissions = allPageSubmissions.flat();
} catch (error) {
console.error('Error fetching all landing pages:', error);
return [];
}
}
const uniqueSubmissions = allSubmissions
.filter((submission, index, self) =>
index === self.findIndex(s => s.id === submission.id)
)
.sort((a, b) => new Date(b.timeStamp).getTime() - new Date(a.timeStamp).getTime());
return uniqueSubmissions.map(submission => ({
epochMilliSeconds: new Date(submission.timeStamp).getTime(),
data: submission
}));
} catch (error: any) {
console.error('Error fetching lead submissions:', error);
return [];
}
}
};
async function fetchSubmissionsForPage(
auth: AppConnectionValueForAuthProperty<typeof smooveAuth>,
pageId: string,
includeCustomFields: boolean,
includeContactDetails: boolean,
lastFetchEpochMS?: number
): Promise<LeadSubmission[]> {
try {
const queryParams = [
'fields=id,email,timestampSignup,firstName,lastName,cellPhone,externalId',
'page=1',
'itemsPerPage=100',
`includeCustomFields=${includeCustomFields}`,
'includeLinkedLists=false'
];
const endpoint = `/LandingPages/${pageId}/Recipients?${queryParams.join('&')}`;
const response = await makeRequest(auth.secret_text, HttpMethod.GET, endpoint);
if (!response) return [];
const items = Array.isArray(response) ? response : [response];
const newSubmissions = items.filter((item: any) => {
if (!item.timestampSignup) return false;
const submissionTime = new Date(item.timestampSignup).getTime();
return submissionTime > (lastFetchEpochMS ?? 0);
});
return newSubmissions.map((item: any) => ({
id: item.id || Date.now(),
contactId: item.id,
pageUrl: `https://lp.smoove.io/form/${pageId}`,
userIP: item.ipSignup || 'Unknown',
timeStamp: item.timestampSignup,
contact: {
id: item.id,
email: item.email,
firstName: item.firstName,
lastName: item.lastName,
cellPhone: item.cellPhone,
timestampSignup: item.timestampSignup,
externalId: item.externalId
},
formId: parseInt(pageId),
formType: 'LandingPage',
...(includeCustomFields && item.customFields ? { customFields: item.customFields } : {})
}));
} catch (error: any) {
console.error(`Error fetching submissions for page ${pageId}:`, error);
return [];
}
}
export const newLeadSubmitted = createTrigger({
auth: smooveAuth,
name: 'newLeadSubmitted',
displayName: 'New Lead Submitted',
description: 'Fires when a lead submits via form, popup, or mobile campaign',
props: {
monitoringMode: Property.StaticDropdown({
displayName: 'Monitoring Mode',
description: 'Choose whether to monitor all forms or a specific form',
required: true,
defaultValue: 'all',
options: {
options: [
{ label: 'All Forms/Landing Pages', value: 'all' },
{ label: 'Specific Form/Landing Page', value: 'specific' }
]
}
}),
landingPageId: LandingPageIdDropdown,
includeCustomFields: Property.Checkbox({
displayName: 'Include Custom Fields',
description: 'Include custom field data in the lead submission',
required: false,
defaultValue: false
}),
includeContactDetails: Property.Checkbox({
displayName: 'Include Full Contact Details',
description: 'Include complete contact information in the submission data',
required: false,
defaultValue: true
})
},
sampleData: {
"id": 965381765,
"contactId": 845986993,
"pageUrl": "https://lp.smoove.io/form/581014",
"userIP": "180.151.116.12",
"timeStamp": "2025-01-22T18:41:48.747Z",
"formId": 581014,
"formType": "LandingPage",
"contact": {
"id": 845986993,
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"cellPhone": "+1234567890",
"timestampSignup": "2025-01-22T18:41:48.747Z",
"externalId": "ext_12345"
},
"customFields": {
"company": "Tech Corp",
"interests": ["marketing", "automation"],
"lead_score": 85
}
},
type: TriggerStrategy.POLLING,
async test(context) {
const results = await pollingHelper.test(polling, context);
return results;
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -0,0 +1,142 @@
import { createTrigger, TriggerStrategy, Property, AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
import { DedupeStrategy, Polling, pollingHelper, HttpMethod } from '@activepieces/pieces-common';
import { smooveAuth } from '../common/auth';
import { makeRequest } from '../common/client';
interface ListData {
id: number;
name?: string;
publicName?: string;
description?: string;
publicDescription?: string;
permissions?: {
isPublic?: boolean;
allowsUsersToSubscribe?: boolean;
allowsUsersToUnsubscribe?: boolean;
isPortal?: boolean;
};
contactsCount?: number;
[key: string]: any;
}
const polling: Polling<AppConnectionValueForAuthProperty<typeof smooveAuth>, {
fields?: string;
sortBy?: string;
maxItems?: number;
}> = {
strategy: DedupeStrategy.LAST_ITEM,
items: async ({ auth, propsValue }) => {
try {
const { fields, sortBy, maxItems = 50 } = propsValue;
const queryParams: string[] = [];
if (fields && fields.trim()) {
queryParams.push(`fields=${encodeURIComponent(fields.trim())}`);
}
if (sortBy) {
queryParams.push(`sort=${encodeURIComponent(sortBy)}`);
}
queryParams.push('skip=0');
queryParams.push(`take=${Math.min(maxItems, 100)}`);
const endpoint = `/Lists${queryParams.length ? '?' + queryParams.join('&') : ''}`;
const response = await makeRequest(auth.secret_text, HttpMethod.GET, endpoint);
if (!response) {
return [];
}
const items: ListData[] = Array.isArray(response) ? response : [response];
const validItems = items
.filter(item => item.id)
.sort((a, b) => (b.id || 0) - (a.id || 0));
return validItems.map(item => ({
id: item.id.toString(),
data: item,
}));
} catch (error: any) {
console.error('Error fetching lists:', error);
return [];
}
}
};
export const newListCreated = createTrigger({
auth: smooveAuth,
name: 'newListCreated',
displayName: 'New List Created',
description: 'Fires when a new mailing list is created in your Smoove account',
props: {
fields: Property.ShortText({
displayName: 'Fields to Include',
description: 'Comma-separated list of fields to include (e.g., id,name,description,contactsCount). Leave empty for all fields.',
required: false,
defaultValue: 'id,name,description,publicName,contactsCount,permissions'
}),
sortBy: Property.StaticDropdown({
displayName: 'Sort Order',
description: 'How to sort the lists for monitoring',
required: false,
defaultValue: '-id',
options: {
options: [
{ label: 'Newest First (by ID)', value: '-id' },
{ label: 'Oldest First (by ID)', value: 'id' },
{ label: 'Name (A-Z)', value: 'name' },
{ label: 'Name (Z-A)', value: '-name' }
]
}
}),
maxItems: Property.Number({
displayName: 'Max Lists to Monitor',
description: 'Maximum number of lists to check for new additions (1-100)',
required: false,
defaultValue: 50
})
},
sampleData: {
"id": 173584,
"name": "Welcome Series Subscribers",
"description": "Automated welcome email series for new signups",
"publicName": "Welcome Series",
"publicDescription": "Join our welcome series to get started with our platform",
"permissions": {
"isPublic": true,
"allowsUsersToSubscribe": true,
"allowsUsersToUnsubscribe": true,
"isPortal": false
},
"contactsCount": 0,
"dateCreated": "2025-01-22T14:30:00Z",
"isActive": true,
"tags": ["welcome", "automation", "new-users"]
},
type: TriggerStrategy.POLLING,
async test(context) {
const results = await pollingHelper.test(polling, context);
return results;
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -0,0 +1,318 @@
import { createTrigger, TriggerStrategy, PiecePropValueSchema, Property, AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
import { DedupeStrategy, Polling, pollingHelper, HttpMethod } from '@activepieces/pieces-common';
import { smooveAuth } from '../common/auth';
import { makeRequest } from '../common/client';
interface ContactData {
id: number;
email?: string;
firstName?: string;
lastName?: string;
phone?: string;
cellPhone?: string;
address?: string;
city?: string;
country?: string;
company?: string;
position?: string;
canReceiveEmails?: boolean;
canReceiveSmsMessages?: boolean;
ipSignup?: string;
timestampSignup?: string;
lastChanged?: string;
deleted?: boolean;
joinSource?: string;
listAssociationTime?: string;
c_DaysSinceSignup?: number;
campaignSource?: string;
externalId?: string;
dateOfBirth?: string;
lists_Linked?: number[];
customFields?: Record<string, any>;
unsubscribeReasonType?: string;
unsubscribeReasonComment?: string;
timestampUnsubscribed?: string;
[key: string]: any;
}
const polling: Polling<AppConnectionValueForAuthProperty<typeof smooveAuth>, {
fields?: string;
includeCustomFields?: boolean;
includeLinkedLists?: boolean;
joinSourceFilter?: string;
sortBy?: string;
maxItems?: number;
}> = {
strategy: DedupeStrategy.TIMEBASED,
items: async ({ auth, propsValue, lastFetchEpochMS }) => {
try {
const {
fields,
includeCustomFields = false,
includeLinkedLists = false,
joinSourceFilter,
sortBy = '-timestampSignup',
maxItems = 100
} = propsValue;
const queryParams: string[] = [];
if (fields && fields.trim()) {
queryParams.push(`fields=${encodeURIComponent(fields.trim())}`);
} else {
queryParams.push('fields=id,email,firstName,lastName,timestampSignup,joinSource,lastChanged,canReceiveEmails,campaignSource,ipSignup');
}
if (includeCustomFields) {
queryParams.push('includeCustomFields=true');
}
if (includeLinkedLists) {
queryParams.push('includeLinkedLists=true');
}
queryParams.push(`sort=${encodeURIComponent(sortBy)}`);
queryParams.push('skip=0');
queryParams.push(`take=${Math.min(maxItems, 100)}`);
const endpoint = `/Contacts?${queryParams.join('&')}`;
const response = await makeRequest(auth.secret_text, HttpMethod.GET, endpoint);
if (!response) {
return [];
}
const items: ContactData[] = Array.isArray(response) ? response : [response];
const newSubscribers = items.filter(item => {
if (!item.timestampSignup) return false;
const signupTime = new Date(item.timestampSignup).getTime();
const isNew = signupTime > (lastFetchEpochMS ?? 0);
if (joinSourceFilter && joinSourceFilter !== 'All' && item.joinSource !== joinSourceFilter) {
return false;
}
return isNew;
});
const sortedSubscribers = newSubscribers
.sort((a, b) => new Date(b.timestampSignup || 0).getTime() - new Date(a.timestampSignup || 0).getTime());
return sortedSubscribers.map(item => ({
epochMilliSeconds: new Date(item.timestampSignup || 0).getTime(),
data: {
id: item.id?.toString(),
email: item.email,
firstName: item.firstName,
lastName: item.lastName,
phone: item.phone,
cellPhone: item.cellPhone,
address: item.address,
city: item.city,
country: item.country,
company: item.company,
position: item.position,
dateOfBirth: item.dateOfBirth,
externalId: item.externalId,
canReceiveEmails: item.canReceiveEmails,
canReceiveSmsMessages: item.canReceiveSmsMessages,
ipSignup: item.ipSignup,
timestampSignup: item.timestampSignup,
joinSource: item.joinSource,
campaignSource: item.campaignSource,
lastChanged: item.lastChanged,
listAssociationTime: item.listAssociationTime,
c_DaysSinceSignup: item.c_DaysSinceSignup,
deleted: item.deleted,
...(includeLinkedLists && item.lists_Linked ? { lists_Linked: item.lists_Linked } : {}),
...(includeCustomFields && item.customFields ? { customFields: item.customFields } : {}),
...(item.unsubscribeReasonType ? {
unsubscribeReasonType: item.unsubscribeReasonType,
unsubscribeReasonComment: item.unsubscribeReasonComment,
timestampUnsubscribed: item.timestampUnsubscribed
} : {}),
triggerInfo: {
detectedAt: new Date().toISOString(),
source: 'smoove',
type: 'new_subscriber',
joinSource: item.joinSource,
daysSinceSignup: item.c_DaysSinceSignup || 0
}
}
}));
} catch (error: any) {
console.error('Error fetching new subscribers:', error);
return [];
}
}
};
export const newSubscriber = createTrigger({
auth: smooveAuth,
name: 'newSubscriber',
displayName: 'New Subscriber',
description: 'Fires when a new subscriber is added to your Smoove account',
props: {
fields: Property.ShortText({
displayName: 'Fields to Include',
description: 'Comma-separated fields to include (e.g., id,email,firstName,lastName,timestampSignup). Leave empty for default fields.',
required: false,
defaultValue: 'id,email,firstName,lastName,timestampSignup,joinSource,campaignSource,canReceiveEmails,ipSignup'
}),
includeCustomFields: Property.Checkbox({
displayName: 'Include Custom Fields',
description: 'Include custom field data in subscriber information',
required: false,
defaultValue: false
}),
includeLinkedLists: Property.Checkbox({
displayName: 'Include Linked Lists',
description: 'Include list associations in subscriber information',
required: false,
defaultValue: false
}),
joinSourceFilter: Property.StaticDropdown({
displayName: 'Join Source Filter',
description: 'Filter subscribers by how they joined (leave as "All" to monitor all sources)',
required: false,
defaultValue: 'All',
options: {
options: [
{ label: 'All Sources', value: 'All' },
{ label: 'Unknown', value: 'Unknown' },
{ label: 'Manual Entry', value: 'ByHand' },
{ label: 'Import', value: 'Import' },
{ label: 'Facebook', value: 'FaceBook' },
{ label: 'API', value: 'API' },
{ label: 'Landing Page', value: 'LandingPage' },
{ label: 'Embed Form', value: 'Embed' },
{ label: 'Popup', value: 'Popup' },
{ label: 'QR Code', value: 'QR' },
{ label: 'SMS', value: 'SMS' },
{ label: 'WhatsApp', value: 'Whatsapp' },
{ label: 'Form', value: 'Form' },
{ label: 'Automation', value: 'Automation' }
]
}
}),
sortBy: Property.StaticDropdown({
displayName: 'Sort Order',
description: 'How to sort contacts for monitoring new subscribers',
required: false,
defaultValue: '-timestampSignup',
options: {
options: [
{ label: 'Newest Signups First', value: '-timestampSignup' },
{ label: 'Oldest Signups First', value: 'timestampSignup' },
{ label: 'Recently Changed First', value: '-lastChanged' },
{ label: 'ID (Newest First)', value: '-id' },
{ label: 'Email (A-Z)', value: 'email' }
]
}
}),
maxItems: Property.Number({
displayName: 'Max Items to Check',
description: 'Maximum number of contacts to check for new subscribers (1-100)',
required: false,
defaultValue: 100
})
},
sampleData: {
"id": "845986993",
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"phone": "+1234567890",
"cellPhone": "+1234567890",
"address": "123 Main Street",
"city": "New York",
"country": "United States",
"company": "Tech Corp",
"position": "Marketing Manager",
"dateOfBirth": "1990-05-15T00:00:00Z",
"externalId": "ext_12345",
"canReceiveEmails": true,
"canReceiveSmsMessages": true,
"ipSignup": "192.168.1.100",
"timestampSignup": "2025-01-22T14:30:00Z",
"joinSource": "LandingPage",
"campaignSource": "winter-campaign-2025",
"lastChanged": "2025-01-22T14:30:00Z",
"listAssociationTime": "2025-01-22T14:30:00Z",
"c_DaysSinceSignup": 0,
"deleted": false,
"lists_Linked": [5556, 8886],
"customFields": {
"industry": "Technology",
"lead_score": 85,
"interests": ["email marketing", "automation"]
},
"triggerInfo": {
"detectedAt": "2025-01-22T14:35:00Z",
"source": "smoove",
"type": "new_subscriber",
"joinSource": "LandingPage",
"daysSinceSignup": 0
}
},
type: TriggerStrategy.POLLING,
async test(context) {
try {
const response = await makeRequest(context.auth.secret_text, HttpMethod.GET, '/Contacts?take=1&sort=-timestampSignup');
const item = Array.isArray(response) ? response[0] : response;
if (!item) {
throw new Error('No subscribers found to test with');
}
return [{
id: item.id?.toString(),
email: item.email,
firstName: item.firstName,
lastName: item.lastName,
phone: item.phone,
cellPhone: item.cellPhone,
timestampSignup: item.timestampSignup,
joinSource: item.joinSource,
campaignSource: item.campaignSource,
canReceiveEmails: item.canReceiveEmails,
canReceiveSmsMessages: item.canReceiveSmsMessages,
triggerInfo: {
detectedAt: new Date().toISOString(),
source: 'smoove',
type: 'new_subscriber_test',
}
}];
} catch (error) {
throw new Error('Unable to test trigger - please check your API connection');
}
},
async onEnable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onEnable(polling, { store, auth, propsValue });
},
async onDisable(context) {
const { store, auth, propsValue } = context;
await pollingHelper.onDisable(polling, { store, auth, propsValue });
},
async run(context) {
return await pollingHelper.poll(polling, context);
},
});

View File

@@ -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"
}
]
}

View File

@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"include": ["src/**/*.ts"]
}