Una guía para utilizar SparkPost con Node.js

Pájaro

1 sept 2017

Correo electrónico

1 min read

Una guía para utilizar SparkPost con Node.js

Puntos clave

    • SparkPost ofrece múltiples formas de enviar correos electrónicos desde Node.js: llamadas directas a la API, transporte de Nodemailer y entrega multicanal de notif.me.

    • Almacena las claves de API en variables de entorno, nunca las codifiques directamente. SparkPost detecta automáticamente SPARKPOST_API_KEY.

    • La Transmissions API te ofrece una poderosa flexibilidad: plantillas, datos de sustitución, archivos adjuntos y etiquetado de campañas.

    • Los usuarios de Nodemailer pueden cambiar instantáneamente a SparkPost con el transporte oficial — sin reescrituras de código importantes.

    • notif.me proporciona entrega multicanal (correo electrónico, SMS, push) con estrategias de respaldo, lo que lo hace ideal para sistemas de notificación robustos.

    • Node.js se adapta naturalmente a las modernas APIs de correo electrónico en la nube y flujos de trabajo serverless, facilitando la incorporación de capacidades de correo electrónico directamente dentro de tu aplicación.

Destacados de Q&A

  • ¿Cuál es la forma más rápida de comenzar a enviar correos electrónicos con SparkPost en Node.js?

    Instala el paquete sparkpost, inicializa el cliente con una clave API (preferiblemente a través de variables de entorno), y llama al método transmissions.send() con destinatarios + contenido.

  • ¿Necesito almacenar mi SparkPost API key en el código?

    No — y no deberías. Usa variables de entorno. El cliente lee automáticamente SPARKPOST_API_KEY.

  • ¿Puedo enviar correos electrónicos usando plantillas en lugar de HTML en línea?

    Sí. La API de Transmissions admite plantillas almacenadas, datos de sustitución, listas de destinatarios, archivos adjuntos, cc/bcc, y más.

  • ¿Qué pasa si ya uso Nodemailer?

    Estás cubierto — SparkPost se envía con un transporte oficial de Nodemailer. Solo configúrelo con su clave API y use Nodemailer como de costumbre.

  • ¿Puede SparkPost trabajar con sistemas de mensajería multicanal?

    Sí. Las bibliotecas como notifme-sdk permiten el envío de correo electrónico, SMS, notificaciones push y webpush con lógica de respaldo, e incluyen un proveedor de SparkPost.

  • ¿Es Node.js adecuado para flujos de trabajo de correo electrónico sin servidor?

    Absolutamente. Combina bien con Cloud Functions, Lambdas y cualquier entorno sin servidor utilizando la API de SparkPost para correos electrónicos impulsados por eventos.

  • ¿Quién debería usar el Transmissions API vs. Nodemailer o notif.me?

    • Utiliza Transmissions API cuando quieras un control completo y alto rendimiento.

    • Utiliza Nodemailer si tu proyecto ya lo utiliza y deseas una integración rápida.

    • Utiliza notif.me para la mensajería multicanal o estrategias de entrega de respaldo.

  • ¿Cuál es la mejor práctica más importante al enviar emails desde Node?

    Trate su clave API como sensible: solo variables de entorno, nunca la comprometa en el código.

Introducción a Node.js

Como Defensor de Desarrolladores para SparkPost, escribo muchas aplicaciones de muestra. Mi experiencia es principalmente en desarrollo front-end, por lo tanto mi idioma más fuerte es JavaScript. Gracias a Node.js, también soy un desarrollador backend decente. Hablando de aplicaciones de muestra, Node.js también funciona muy bien para construir funciones sin servidor que se integran con Flow Builder - como nuestra guía de integración de Google Cloud Functions y Vision API. ¿Significa esto que ahora soy un desarrollador full stack? De todos modos, era importante para mí que tuviéramos una increíble biblioteca de cliente SparkPost para Node.js. Así que, me lancé directamente y me convertí en contribuyente (incluso antes de que me contrataran).

Permíteme ayudarte a comenzar a enviar correos electrónicos con SparkPost en tu proyecto de Node.js. Antes de sumergirte en los detalles específicos de Node.js, puede que quieras entender los fundamentos de las API de correo electrónico en la infraestructura de la nube y cómo se integran en el desarrollo de aplicaciones modernas.

Como Defensor de Desarrolladores para SparkPost, escribo muchas aplicaciones de muestra. Mi experiencia es principalmente en desarrollo front-end, por lo tanto mi idioma más fuerte es JavaScript. Gracias a Node.js, también soy un desarrollador backend decente. Hablando de aplicaciones de muestra, Node.js también funciona muy bien para construir funciones sin servidor que se integran con Flow Builder - como nuestra guía de integración de Google Cloud Functions y Vision API. ¿Significa esto que ahora soy un desarrollador full stack? De todos modos, era importante para mí que tuviéramos una increíble biblioteca de cliente SparkPost para Node.js. Así que, me lancé directamente y me convertí en contribuyente (incluso antes de que me contrataran).

Permíteme ayudarte a comenzar a enviar correos electrónicos con SparkPost en tu proyecto de Node.js. Antes de sumergirte en los detalles específicos de Node.js, puede que quieras entender los fundamentos de las API de correo electrónico en la infraestructura de la nube y cómo se integran en el desarrollo de aplicaciones modernas.

Como Defensor de Desarrolladores para SparkPost, escribo muchas aplicaciones de muestra. Mi experiencia es principalmente en desarrollo front-end, por lo tanto mi idioma más fuerte es JavaScript. Gracias a Node.js, también soy un desarrollador backend decente. Hablando de aplicaciones de muestra, Node.js también funciona muy bien para construir funciones sin servidor que se integran con Flow Builder - como nuestra guía de integración de Google Cloud Functions y Vision API. ¿Significa esto que ahora soy un desarrollador full stack? De todos modos, era importante para mí que tuviéramos una increíble biblioteca de cliente SparkPost para Node.js. Así que, me lancé directamente y me convertí en contribuyente (incluso antes de que me contrataran).

Permíteme ayudarte a comenzar a enviar correos electrónicos con SparkPost en tu proyecto de Node.js. Antes de sumergirte en los detalles específicos de Node.js, puede que quieras entender los fundamentos de las API de correo electrónico en la infraestructura de la nube y cómo se integran en el desarrollo de aplicaciones modernas.

Installing & Setup

Voy a asumir que tienes Node.js instalado. Porque seguimos el programa de soporte a largo plazo (LTS) de Node.js, necesitarás estar ejecutando la versión 4 o superior. Puedes ver qué versión estás ejecutando usando el comando `node –version` en tu ventana de terminal.

Vamos a crear un nuevo proyecto npm. Si ya tienes uno, puedes saltarte esta parte.

> mkdir sparkpost-test > cd sparkpost-test > npm init --yes

Esto creará un nuevo proyecto y aceptará todos los valores predeterminados. También puedes ejecutar `npm init` y responder a todas las preguntas.

Ahora podemos instalar node-sparkpost:

> npm install sparkpost --save

Una vez instalado, puedes importar y crear una instancia de la clase SparkPost:

const SparkPost = require('sparkpost') const client = new SparkPost('TU CLAVE API')

Es una buena práctica evitar poner tu clave API en el código. Recomendamos encarecidamente almacenarlo fuera de tu código, por lo que configuramos la biblioteca del cliente para detectar la variable de entorno SPARKPOST_API_KEY.

Voy a asumir que tienes Node.js instalado. Porque seguimos el programa de soporte a largo plazo (LTS) de Node.js, necesitarás estar ejecutando la versión 4 o superior. Puedes ver qué versión estás ejecutando usando el comando `node –version` en tu ventana de terminal.

Vamos a crear un nuevo proyecto npm. Si ya tienes uno, puedes saltarte esta parte.

> mkdir sparkpost-test > cd sparkpost-test > npm init --yes

Esto creará un nuevo proyecto y aceptará todos los valores predeterminados. También puedes ejecutar `npm init` y responder a todas las preguntas.

Ahora podemos instalar node-sparkpost:

> npm install sparkpost --save

Una vez instalado, puedes importar y crear una instancia de la clase SparkPost:

const SparkPost = require('sparkpost') const client = new SparkPost('TU CLAVE API')

Es una buena práctica evitar poner tu clave API en el código. Recomendamos encarecidamente almacenarlo fuera de tu código, por lo que configuramos la biblioteca del cliente para detectar la variable de entorno SPARKPOST_API_KEY.

Voy a asumir que tienes Node.js instalado. Porque seguimos el programa de soporte a largo plazo (LTS) de Node.js, necesitarás estar ejecutando la versión 4 o superior. Puedes ver qué versión estás ejecutando usando el comando `node –version` en tu ventana de terminal.

Vamos a crear un nuevo proyecto npm. Si ya tienes uno, puedes saltarte esta parte.

> mkdir sparkpost-test > cd sparkpost-test > npm init --yes

Esto creará un nuevo proyecto y aceptará todos los valores predeterminados. También puedes ejecutar `npm init` y responder a todas las preguntas.

Ahora podemos instalar node-sparkpost:

> npm install sparkpost --save

Una vez instalado, puedes importar y crear una instancia de la clase SparkPost:

const SparkPost = require('sparkpost') const client = new SparkPost('TU CLAVE API')

Es una buena práctica evitar poner tu clave API en el código. Recomendamos encarecidamente almacenarlo fuera de tu código, por lo que configuramos la biblioteca del cliente para detectar la variable de entorno SPARKPOST_API_KEY.

Enviando Email

Ahora que tienes una instancia de SparkPost, estás listo para enviar. Hay bastantes opciones disponibles para enviar, pero empecemos con un ejemplo simple. Así es como envías un correo electrónico a un solo destinatario, especificando contenido en línea:

client.transmissions.send({
  content: {
    from: 'test@your-sending-domain.com',
    subject: 'Hello from node-sparkpost',
    html: '<p>Hello world</p>'
  },
  recipients: [
    { address: 'someone@somedomain.com' }
  ]
})
.then(data => {
  console.log('Woohoo! You just sent your first mailing!')
  console.log(data)
})
.catch(err => {
  console.log('Whoops! Something went wrong')
  console.log(err)
})

Nota: Este ejemplo utiliza Promesas, pero no te preocupes. También soportamos funciones de callback.

Para aplicaciones empresariales que requieren una gestión integral del correo electrónico, los desarrolladores también pueden necesitar considerar construir sistemas de archivo de correos para manejar los requisitos de almacenamiento y cumplimiento.

Hay más opciones disponibles con transmisiones, incluyendo especificar plantillas almacenadas o listas de destinatarios, cc y bcc, agregar archivos adjuntos, especificar una campaña, usar datos de sustitución y mucho más. Consulta los ejemplos, documentación para el recurso de Transmissions, y la documentación de la API de Transmissions para más información.

Ahora que tienes una instancia de SparkPost, estás listo para enviar. Hay bastantes opciones disponibles para enviar, pero empecemos con un ejemplo simple. Así es como envías un correo electrónico a un solo destinatario, especificando contenido en línea:

client.transmissions.send({
  content: {
    from: 'test@your-sending-domain.com',
    subject: 'Hello from node-sparkpost',
    html: '<p>Hello world</p>'
  },
  recipients: [
    { address: 'someone@somedomain.com' }
  ]
})
.then(data => {
  console.log('Woohoo! You just sent your first mailing!')
  console.log(data)
})
.catch(err => {
  console.log('Whoops! Something went wrong')
  console.log(err)
})

Nota: Este ejemplo utiliza Promesas, pero no te preocupes. También soportamos funciones de callback.

Para aplicaciones empresariales que requieren una gestión integral del correo electrónico, los desarrolladores también pueden necesitar considerar construir sistemas de archivo de correos para manejar los requisitos de almacenamiento y cumplimiento.

Hay más opciones disponibles con transmisiones, incluyendo especificar plantillas almacenadas o listas de destinatarios, cc y bcc, agregar archivos adjuntos, especificar una campaña, usar datos de sustitución y mucho más. Consulta los ejemplos, documentación para el recurso de Transmissions, y la documentación de la API de Transmissions para más información.

Ahora que tienes una instancia de SparkPost, estás listo para enviar. Hay bastantes opciones disponibles para enviar, pero empecemos con un ejemplo simple. Así es como envías un correo electrónico a un solo destinatario, especificando contenido en línea:

client.transmissions.send({
  content: {
    from: 'test@your-sending-domain.com',
    subject: 'Hello from node-sparkpost',
    html: '<p>Hello world</p>'
  },
  recipients: [
    { address: 'someone@somedomain.com' }
  ]
})
.then(data => {
  console.log('Woohoo! You just sent your first mailing!')
  console.log(data)
})
.catch(err => {
  console.log('Whoops! Something went wrong')
  console.log(err)
})

Nota: Este ejemplo utiliza Promesas, pero no te preocupes. También soportamos funciones de callback.

Para aplicaciones empresariales que requieren una gestión integral del correo electrónico, los desarrolladores también pueden necesitar considerar construir sistemas de archivo de correos para manejar los requisitos de almacenamiento y cumplimiento.

Hay más opciones disponibles con transmisiones, incluyendo especificar plantillas almacenadas o listas de destinatarios, cc y bcc, agregar archivos adjuntos, especificar una campaña, usar datos de sustitución y mucho más. Consulta los ejemplos, documentación para el recurso de Transmissions, y la documentación de la API de Transmissions para más información.

Bonus: Enviando Email con Nodemailer

Nodemailer es una biblioteca popular para Node.js que hace el envío de correos electrónicos "fácil como un pastel." Para aquellos de ustedes que eligen usar esta biblioteca, hemos creado un transporte SparkPost para Nodemailer. Necesitarás instalar los paquetes nodemailer y nodemailer-sparkpost-transport en tu proyecto.

> npm install nodemailer nodemailer-sparkpost-transport --save

Ahora puedes crear una instancia de transporte de nodemailer:

const nodemailer = require('nodemailer') 
const sparkPostTransport = require('nodemailer-sparkpost-transport') 
const transporter = nodemailer.createTransport(sparkPostTransport({ 
  'sparkPostApiKey': process.env.SPARKPOST_API_KEY 
}))

Observa cómo estoy leyendo la clave API desde una variable de entorno. Sigue siendo una buena práctica no ponerla directamente en tu código.

Hay varias opciones que se pueden pasar al transporte de SparkPost, como el id de campaña y si el mensaje es transaccional o no. Echa un vistazo al README.md para ver todas las opciones.

Aquí tienes cómo enviarías el mismo mensaje anterior usando Nodemailer:

transporter.sendMail(
  {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from nodemailer-sparkpost-transport',
    html: '<p>Hello world</p>'
  },
  (err, info) => {
    if (err) {
      console.error(err);
    } else {
      console.log(info);
    }
  }
);

Nodemailer es una biblioteca popular para Node.js que hace el envío de correos electrónicos "fácil como un pastel." Para aquellos de ustedes que eligen usar esta biblioteca, hemos creado un transporte SparkPost para Nodemailer. Necesitarás instalar los paquetes nodemailer y nodemailer-sparkpost-transport en tu proyecto.

> npm install nodemailer nodemailer-sparkpost-transport --save

Ahora puedes crear una instancia de transporte de nodemailer:

const nodemailer = require('nodemailer') 
const sparkPostTransport = require('nodemailer-sparkpost-transport') 
const transporter = nodemailer.createTransport(sparkPostTransport({ 
  'sparkPostApiKey': process.env.SPARKPOST_API_KEY 
}))

Observa cómo estoy leyendo la clave API desde una variable de entorno. Sigue siendo una buena práctica no ponerla directamente en tu código.

Hay varias opciones que se pueden pasar al transporte de SparkPost, como el id de campaña y si el mensaje es transaccional o no. Echa un vistazo al README.md para ver todas las opciones.

Aquí tienes cómo enviarías el mismo mensaje anterior usando Nodemailer:

transporter.sendMail(
  {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from nodemailer-sparkpost-transport',
    html: '<p>Hello world</p>'
  },
  (err, info) => {
    if (err) {
      console.error(err);
    } else {
      console.log(info);
    }
  }
);

Nodemailer es una biblioteca popular para Node.js que hace el envío de correos electrónicos "fácil como un pastel." Para aquellos de ustedes que eligen usar esta biblioteca, hemos creado un transporte SparkPost para Nodemailer. Necesitarás instalar los paquetes nodemailer y nodemailer-sparkpost-transport en tu proyecto.

> npm install nodemailer nodemailer-sparkpost-transport --save

Ahora puedes crear una instancia de transporte de nodemailer:

const nodemailer = require('nodemailer') 
const sparkPostTransport = require('nodemailer-sparkpost-transport') 
const transporter = nodemailer.createTransport(sparkPostTransport({ 
  'sparkPostApiKey': process.env.SPARKPOST_API_KEY 
}))

Observa cómo estoy leyendo la clave API desde una variable de entorno. Sigue siendo una buena práctica no ponerla directamente en tu código.

Hay varias opciones que se pueden pasar al transporte de SparkPost, como el id de campaña y si el mensaje es transaccional o no. Echa un vistazo al README.md para ver todas las opciones.

Aquí tienes cómo enviarías el mismo mensaje anterior usando Nodemailer:

transporter.sendMail(
  {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from nodemailer-sparkpost-transport',
    html: '<p>Hello world</p>'
  },
  (err, info) => {
    if (err) {
      console.error(err);
    } else {
      console.log(info);
    }
  }
);

Doble Bono: Sending Email con notif.me

Todos sabemos que el email es el rey de la comunicación, pero a veces quieres poder llegar a las personas a través de múltiples canales. notif.me es una biblioteca de Node.js para enviar todo tipo de mensajes transaccionales. Ya sea que desees enviar un email, sms, push, o webpushes, puedes hacerlo con facilidad. También tiene estrategias integradas de caída y rotación para múltiples proveedores. Recientemente trabajamos con los creadores para construir un proveedor SparkPost. Necesitarás instalar el paquete `notifme-sdk` en tu proyecto.

> npm install notifme-sdk --save

Ahora puedes crear una instancia de notifme con el proveedor SparkPost:

const NotifmeSdk = require('notifme-sdk').default;
const notifmeSdk = new NotifmeSdk({
  channels: {
    email: {
      providers: [
        {
          type: 'sparkpost',
          apiKey: process.env.SPARKPOST_API_KEY
        }
      ]
    }
  }
});

Nuevamente, estamos obteniendo la clave de API desde una variable de entorno. Lo hemos dicho tres veces: es así de importante. 🙂

Ahora repitamos este mismo ejemplo, esta vez usando notif.me:

notifmeSdk.send({
  email: {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from the SparkPost notif.me provider',
    html: '<p>Hello world</p>'
  }
})
.then(console.log)
.catch(console.error);

Es realmente fácil de usar y recomiendo mirar las otras características.

Comparación de Opciones para Enviar Emails en Node.js

Método

Paquetes Requeridos

Manejo de Claves API

Mejor para

Notas

SparkPost API (node-sparkpost)

sparkpost

Usa SPARKPOST_API_KEY var de entorno

Control directo de la API, acceso completo a funciones de Transmissions

Más flexible; soporta plantillas, datos de sustitución, archivos adjuntos, campañas

Nodemailer + SparkPost Transport

nodemailer, nodemailer-sparkpost-transport

Usa var de entorno en config de transporte

Desarrolladores que ya usan Nodemailer

Ruta de migración más fácil; cambios mínimos de código

notif.me + SparkPost Provider

notifme-sdk

Usa var de entorno en config del proveedor

Mensajería multicanal (email, SMS, push)

Incluye estrategias de fallback + round-robin entre proveedores

Todos sabemos que el email es el rey de la comunicación, pero a veces quieres poder llegar a las personas a través de múltiples canales. notif.me es una biblioteca de Node.js para enviar todo tipo de mensajes transaccionales. Ya sea que desees enviar un email, sms, push, o webpushes, puedes hacerlo con facilidad. También tiene estrategias integradas de caída y rotación para múltiples proveedores. Recientemente trabajamos con los creadores para construir un proveedor SparkPost. Necesitarás instalar el paquete `notifme-sdk` en tu proyecto.

> npm install notifme-sdk --save

Ahora puedes crear una instancia de notifme con el proveedor SparkPost:

const NotifmeSdk = require('notifme-sdk').default;
const notifmeSdk = new NotifmeSdk({
  channels: {
    email: {
      providers: [
        {
          type: 'sparkpost',
          apiKey: process.env.SPARKPOST_API_KEY
        }
      ]
    }
  }
});

Nuevamente, estamos obteniendo la clave de API desde una variable de entorno. Lo hemos dicho tres veces: es así de importante. 🙂

Ahora repitamos este mismo ejemplo, esta vez usando notif.me:

notifmeSdk.send({
  email: {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from the SparkPost notif.me provider',
    html: '<p>Hello world</p>'
  }
})
.then(console.log)
.catch(console.error);

Es realmente fácil de usar y recomiendo mirar las otras características.

Comparación de Opciones para Enviar Emails en Node.js

Método

Paquetes Requeridos

Manejo de Claves API

Mejor para

Notas

SparkPost API (node-sparkpost)

sparkpost

Usa SPARKPOST_API_KEY var de entorno

Control directo de la API, acceso completo a funciones de Transmissions

Más flexible; soporta plantillas, datos de sustitución, archivos adjuntos, campañas

Nodemailer + SparkPost Transport

nodemailer, nodemailer-sparkpost-transport

Usa var de entorno en config de transporte

Desarrolladores que ya usan Nodemailer

Ruta de migración más fácil; cambios mínimos de código

notif.me + SparkPost Provider

notifme-sdk

Usa var de entorno en config del proveedor

Mensajería multicanal (email, SMS, push)

Incluye estrategias de fallback + round-robin entre proveedores

Todos sabemos que el email es el rey de la comunicación, pero a veces quieres poder llegar a las personas a través de múltiples canales. notif.me es una biblioteca de Node.js para enviar todo tipo de mensajes transaccionales. Ya sea que desees enviar un email, sms, push, o webpushes, puedes hacerlo con facilidad. También tiene estrategias integradas de caída y rotación para múltiples proveedores. Recientemente trabajamos con los creadores para construir un proveedor SparkPost. Necesitarás instalar el paquete `notifme-sdk` en tu proyecto.

> npm install notifme-sdk --save

Ahora puedes crear una instancia de notifme con el proveedor SparkPost:

const NotifmeSdk = require('notifme-sdk').default;
const notifmeSdk = new NotifmeSdk({
  channels: {
    email: {
      providers: [
        {
          type: 'sparkpost',
          apiKey: process.env.SPARKPOST_API_KEY
        }
      ]
    }
  }
});

Nuevamente, estamos obteniendo la clave de API desde una variable de entorno. Lo hemos dicho tres veces: es así de importante. 🙂

Ahora repitamos este mismo ejemplo, esta vez usando notif.me:

notifmeSdk.send({
  email: {
    from: 'test@your-sending-domain.com',
    to: 'someone@somedomain.com',
    subject: 'Hello from the SparkPost notif.me provider',
    html: '<p>Hello world</p>'
  }
})
.then(console.log)
.catch(console.error);

Es realmente fácil de usar y recomiendo mirar las otras características.

Comparación de Opciones para Enviar Emails en Node.js

Método

Paquetes Requeridos

Manejo de Claves API

Mejor para

Notas

SparkPost API (node-sparkpost)

sparkpost

Usa SPARKPOST_API_KEY var de entorno

Control directo de la API, acceso completo a funciones de Transmissions

Más flexible; soporta plantillas, datos de sustitución, archivos adjuntos, campañas

Nodemailer + SparkPost Transport

nodemailer, nodemailer-sparkpost-transport

Usa var de entorno en config de transporte

Desarrolladores que ya usan Nodemailer

Ruta de migración más fácil; cambios mínimos de código

notif.me + SparkPost Provider

notifme-sdk

Usa var de entorno en config del proveedor

Mensajería multicanal (email, SMS, push)

Incluye estrategias de fallback + round-robin entre proveedores

No hay una manera incorrecta de Node

Cuando se trata de enviar correo electrónico usando Node.js, tienes muchas opciones. Hemos trabajado arduamente para ayudar a que sea lo menos doloroso posible.

Cuando se trata de enviar correo electrónico usando Node.js, tienes muchas opciones. Hemos trabajado arduamente para ayudar a que sea lo menos doloroso posible.

Cuando se trata de enviar correo electrónico usando Node.js, tienes muchas opciones. Hemos trabajado arduamente para ayudar a que sea lo menos doloroso posible.

Otras noticias

Leer más de esta categoría

A person is standing at a desk while typing on a laptop.

La plataforma completa AI-native que escala con tu negocio.

© 2025 Bird

A person is standing at a desk while typing on a laptop.

La plataforma completa AI-native que escala con tu negocio.

© 2025 Bird