Tú construyes la experiencia. Apointoo guarda la prueba.
Next.js, Vue, WordPress, páginas de destino personalizadas, tu propio formulario o un flujo de reservas. Apointoo funciona como la capa de atribución detrás. Handler-first, completamente tipado, tree-shakeable. Funciona en Node.js, Deno, Cloudflare Workers y cualquier runtime de edge con la Fetch API.
npm install git+https://github.com/vizuh/apointoo-sdk.gitnpmO añade la skill de Apointoo a tu agente de código con IA (Claude Code, Cursor, Codex, Copilot y más):
npx skills add vizuh/apointoo-skills-ceskills.shInicio rápido
Captura eventos vía API o SDK, preserva el GCLID, los UTMs y los datos de sesión, y envía leads, reservas y actualizaciones de resultados a través de tu ruta /api/* en Next.js, Hono o Express.
import { createBookingHandler } from '@vizuh/apointoo-sdk/server'
import { brevoRestAdapter } from '@vizuh/apointoo-sdk/adapters/notification/brevo-rest'
import { directConfirmAdapter } from '@vizuh/apointoo-sdk/adapters/booking/direct-confirm'
export const app = createBookingHandler({
config: {
projectKey: 'your-clinic',
locale: 'en-US',
timezone: 'America/New_York',
},
booking: directConfirmAdapter(),
notification: brevoRestAdapter({ apiKey: env.BREVO_API_KEY }),
})Adaptadores
Cada integración es un adaptador tree-shakeable para los sistemas donde ocurren las conversiones. Importa solo lo que usas.
BLVD
booking
@vizuh/apointoo-sdk/adapters/booking/blvd
OpenDental
booking
@vizuh/apointoo-sdk/adapters/booking/open-dental
direct-confirm
booking
@vizuh/apointoo-sdk/adapters/booking/direct-confirm
Brevo REST
notification
@vizuh/apointoo-sdk/adapters/notification/brevo-rest
Twilio WhatsApp
notification
@vizuh/apointoo-sdk/adapters/notification/twilio-whatsapp
Sheets
persistence
@vizuh/apointoo-sdk/adapters/persistence/sheets
Upstash
dedup
@vizuh/apointoo-sdk/adapters/dedup/upstash
Arquitectura
Un handler es el punto de entrada. Ejecuta el pipeline que mantiene la atribución en cada paso y envía la conversión confirmada a Google Ads a través de los adaptadores configurados.
Adaptador de reservas
BLVD, OpenDental, direct-confirm
Adaptador de notificaciones
Brevo REST, Twilio WhatsApp
Adaptador de persistencia
Sheets
Adaptador de deduplicación
Upstash
Variables de entorno
La configuración se hace mediante variables de entorno. Sin archivos de configuración específicos del SDK. Pon las claves, despliega, publica.
NEXT_PUBLIC_GTM_ID
NoID del contenedor de Google Tag Manager. Déjalo vacío para desactivar GTM.
HEADLESS_WP_URL
NoEndpoint GraphQL de WordPress para el contenido de /docs y /blog.
BREVO_API_KEY
NoClave de API REST de Brevo (Sendinblue) para el adaptador de notificaciones de Brevo.
BLVD_API_KEY
NoClave de API de BLVD para el adaptador de reservas de BLVD.
UPSTASH_REDIS_URL
NoURL REST de Upstash Redis para el adaptador de deduplicación.
UPSTASH_REDIS_TOKEN
NoToken REST de Upstash Redis.
GOOGLE_SHEETS_SPREADSHEET_ID
NoID de la hoja de cálculo de Google Sheets para el adaptador de persistencia.