Volver al Blog
Integraciones · 14 min lectura

Integraciones y APIs: Conecta Cadences con Todo

Google, Twilio, ElevenLabs, Stripe, WhatsApp, Meta — cómo Cadences se conecta con +15 servicios externos a través de APIs REST, webhooks bidireccionales y flujos OAuth 2.0.

Gonzalo Monzón

Gonzalo Monzón

· Fundador & CTO

API integrations and connections
APIs Webhooks OAuth 2.0

Un software que no se conecta con nada es un software aislado. Cadences tiene +15 integraciones en producción — desde autenticación con Google hasta llamadas telefónicas con IA — y todas siguen los mismos principios de diseño: seguridad, fiabilidad y configuración mínima.

Filosofía de integración: En Cadences, las integraciones no se "instalan desde un marketplace". Están tejidas en el núcleo de la plataforma. Twilio no es un plugin — es el sistema de voz. ElevenLabs no es un add-on — es el motor de audio. Google no es un conector — es el sistema de auth.

Ecosistema

Mapa de Integraciones

Este es el mapa completo de servicios externos que Cadences utiliza en producción:

Servicio Función Protocolo Auth
Google OAuthAutenticación de usuariosOAuth 2.0 + PKCEClient Secret
Google DriveSync datos + backupREST API v3Bearer Token
Google GeminiIA generativa multi-modalREST APIAPI Key
TwilioTelefonía + SMS + WhatsAppREST + WebSocketAccount SID + Token
ElevenLabsVoz IA + TTS + ClonaciónREST + WebSocketAPI Key
DeepSeekIA reasoning avanzadaOpenAI-compatibleAPI Key
OpenAIGPT-4 + DALL·EREST APIAPI Key
AnthropicClaude para agentesREST APIAPI Key
CloudflareWorkers + D1 + R2 + DOEdge RuntimeWrangler Auth
Cloudflare TurnstileBot protection (CAPTCHA)Server-side verifySite Key + Secret
Meta WhatsAppAPI oficial WhatsApp BusinessGraph API v19Bearer Token
UnsplashImágenes para storefrontsREST APIAccess Key
DICOM (interno)Visualización médicaWorkers APIAuth Header
Autenticación

OAuth 2.0: El Flujo de Autenticación

Cadences utiliza Google como proveedor de identidad principal. El flujo OAuth 2.0 se implementa en dos variantes según el contexto:

🌐

Web (Storefronts)

Usa Google Identity Services (GIS) con token client. El usuario hace clic en "Login con Google", se abre un popup, y el token se valida server-side contra la lista de emails autorizados del storefront.

🖥️

Desktop (Electron)

OAuth 2.0 con PKCE + Token Client. El token se almacena en IndexedDB (no localStorage). El refresh se maneja automáticamente con un callback que actualiza el AuthContext.

Validación server-side del token Google
// Worker: Validar token de Google en el edge
async function validateGoogleAuth(request, storefrontConfig) {
  const token = request.headers.get('Authorization')
    ?.replace('Bearer ', '');

  // Verificar token con Google
  const googleResponse = await fetch(
    'https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=' + token
  );
  const googleData = await googleResponse.json();

  // ¿El email está autorizado para este storefront?
  const authorized = storefrontConfig
    .authorizedEmails
    .includes(googleData.email);

  if (!authorized) {
    return new Response('Unauthorized', { status: 403 });
  }

  return { email: googleData.email, verified: true };
}
Telefonía

Twilio: Telefonía, SMS y WhatsApp

Twilio es el sistema nervioso de comunicaciones de Cadences. No es un simple conector — es la infraestructura que permite llamadas telefónicas con IA, envío de SMS desde workflows, y comunicación por WhatsApp Business.

📞

Voice (Llamadas IA)

Twilio Media Streams conecta llamadas telefónicas reales con Durable Objects. El audio se procesa en tiempo real con ElevenLabs para crear conversaciones naturales con agentes IA.

💬

SMS / MMS

Envío de mensajes desde workflows de automatización. Confirmaciones de cita, recordatorios de pago, notificaciones de envío — todo configurable como acción de workflow.

📱

WhatsApp Business API

Dos rutas: API oficial de Meta (Graph API v19) para envíos certificados con templates, o Twilio como intermediario para un SDK unificado con SMS.

IA Multi-Provider

4 Proveedores de IA, 1 Interfaz

Los agentes de Cadences pueden usar cualquiera de los 4 proveedores de IA de forma intercambiable. El sistema abstrae las diferencias de API para que el usuario solo elija el modelo — todo lo demás es transparente:

🔷

Google Gemini

Provider por defecto

Multi-modal (texto, imagen, audio, video). Gemini 2.0 Flash para alta velocidad. API de Google AI Studio con soporte nativo para streaming.

🧠

DeepSeek

Reasoning avanzado

API compatible con OpenAI — se puede usar el mismo SDK cambiando el baseURL. DeepSeek R1 para razonamiento complejo a menor coste que GPT-4.

OpenAI

GPT-4 + DALL·E

El estándar de facto. Chat completions, image generation con DALL·E, y embeddings. Compatible con function calling para agentes con herramientas.

🎭

Anthropic

Claude para contextos largos

Claude 3.5 Sonnet con ventana de 200K tokens. Ideal para análisis de documentos extensos y conversaciones que requieren contexto completo.

Multi-provider AI: una interfaz, múltiples motores
// El agente define qué provider usar
const agent = {
  name: "Analista de Ventas",
  provider: "gemini",      // o "deepseek", "openai", "anthropic"
  model: "gemini-2.0-flash",
  system_prompt: "Eres un analista de ventas experto..."
};

// El servicio de ejecución abstrae las diferencias
async function generateContent(agent, prompt) {
  switch (agent.provider) {
    case "gemini":
      return await callGemini(agent.model, prompt);
    case "deepseek":
      return await callOpenAICompatible(
        "https://api.deepseek.com", agent.model, prompt
      );
    case "openai":
      return await callOpenAICompatible(
        "https://api.openai.com", agent.model, prompt
      );
    case "anthropic":
      return await callAnthropic(agent.model, prompt);
  }
}
Eventos

Webhooks: Eventos en Tiempo Real

Los webhooks son la columna vertebral de la comunicación asíncrona en Cadences. Permiten que servicios externos notifiquen a la plataforma cuando ocurre algo, y que Cadences notifique al mundo exterior cuando se completa una acción.

Webhooks Entrantes

  • Twilio: llamada completada, SMS recibido
  • Stripe: pago exitoso, suscripción cancelada
  • Typeform: formulario enviado
  • Calendly: cita agendada
  • GitHub: push, PR created

Webhooks Salientes

  • Slack: notificaciones a canales
  • Discord: alertas a servidores
  • Zapier / Make / n8n: trigger externo
  • Custom HTTP: cualquier REST API
  • Email: via SendGrid / Resend
Webhook entrante: Stripe pago → Cadences workflow
// Worker: recibe webhook de Stripe
export async function handleStripeWebhook(request, env) {
  // 1. Verificar firma del webhook
  const signature = request.headers.get('stripe-signature');
  const body = await request.text();
  const event = verifyStripeSignature(body, signature, env.STRIPE_WEBHOOK_SECRET);

  // 2. Procesar según el tipo de evento
  switch (event.type) {
    case 'payment_intent.succeeded':
      // 3. Buscar contacto en el CRM por email
      const contact = await db.prepare(
        'SELECT * FROM contacts WHERE email = ?'
      ).bind(event.data.object.receipt_email).first();

      // 4. Crear actividad en el timeline del contacto
      await db.prepare('INSERT INTO activities ...').bind(
        contact.id, 'payment', event.data.object.amount
      ).run();

      // 5. Disparar workflow "Nuevo pago recibido"
      await triggerWorkflow('payment-received', {
        contact, amount: event.data.object.amount
      });
      break;
  }

  return new Response('OK', { status: 200 });
}
Infraestructura

Cloudflare: La Plataforma Base

Cloudflare no es "una integración más" — es la infraestructura sobre la que Cadences corre. Aquí está el stack completo:

Workers

El backend completo corre en Workers. V8 isolates, 0ms cold start, 300+ locations globales. Cada request se ejecuta en el edge más cercano al usuario.

🗄️

D1 (SQLite)

Una base de datos SQLite por organización. Aislamiento total de datos sin necesidad de filtros WHERE tenant_id = ?. Consultas SQL nativas en el edge.

🧠

Durable Objects

Estado persistente con acceso exclusivo. Cada llamada de voz IA, cada sesión de chat, cada WebSocket — todo es un Durable Object con exactamente 1 instancia activa.

📦

R2 (Object Storage)

Almacenamiento de archivos — avatares, documentos adjuntos, exports de audio — sin egress fees. Compatible con S3 API.

📄

Pages

Hosting de storefronts estáticos. Build con Astro/Vite, deploy automático con wrangler. CDN global, HTTPS automático, preview deployments.

Seguridad

Patrones de Seguridad en Integraciones

Cada integración externa es un vector de ataque potencial. Cadences aplica estos patrones de seguridad en todas las integraciones:

Patrón Implementación Dónde
Secrets en env varsAPI keys en Cloudflare Secrets, nunca en códigoTodas
Verificación de firmaHMAC-SHA256 para webhooks entrantesStripe, Twilio
Rate limitingLímites por tier con Durable ObjectsAI providers, API
Token rotationTokens de corta vida + refresh automáticoGoogle OAuth, ElevenLabs
IP allowlistingSolo IPs conocidas para webhooks críticosTwilio, Stripe
Premium feature guardsAPIs costosas requieren feature flag activoVoice calls, WhatsApp

¿Quieres integrar tu servicio?

Cadences expone una API REST completa para que puedas conectar tus propios servicios. Webhooks, API keys, OAuth — la infraestructura está lista.

Explorar la Plataforma
Resumen

Conclusión

Las integraciones de Cadences no son conectores superficiales. Son componentes estructurales de la plataforma. Google proporciona la identidad, Twilio la voz, ElevenLabs el audio inteligente, y Cloudflare la infraestructura. Cada pieza tiene un propósito claro y está conectada con seguridad de grado producción.

Lo que hace diferente a Cadences no es la cantidad de integraciones, sino cómo están conectadas: webhooks verificados, tokens rotados, rate limits por tier, feature guards para APIs costosas, y todo ejecutándose en el edge de Cloudflare con latencia mínima.

La mejor integración es la que parece invisible.