Tú construyes la experiencia. Apointoo guarda la prueba.
Next.js, Vue, WordPress, páginas de destino propias, tu formulario o un flujo de reservas. Apointoo funciona como la capa de atribución detrás y devuelve la venta al anuncio. 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/blvdOpenDental
booking
@vizuh/apointoo-sdk/adapters/booking/open-dentaldirect-confirm
booking
@vizuh/apointoo-sdk/adapters/booking/direct-confirmBrevo REST
notification
@vizuh/apointoo-sdk/adapters/notification/brevo-restTwilio WhatsApp
notification
@vizuh/apointoo-sdk/adapters/notification/twilio-whatsappSheets
persistence
@vizuh/apointoo-sdk/adapters/persistence/sheetsUpstash
dedup
@vizuh/apointoo-sdk/adapters/dedup/upstashArquitectura
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_IDNoID del contenedor de Google Tag Manager. Déjalo vacío para desactivar GTM.
HEADLESS_WP_URLNoEndpoint GraphQL de WordPress para el contenido de /docs y /blog.
BREVO_API_KEYNoClave de API REST de Brevo (Sendinblue) para el adaptador de notificaciones de Brevo.
BLVD_API_KEYNoClave de API de BLVD para el adaptador de reservas de BLVD.
UPSTASH_REDIS_URLNoURL REST de Upstash Redis para el adaptador de deduplicación.
UPSTASH_REDIS_TOKENNoToken REST de Upstash Redis.
GOOGLE_SHEETS_SPREADSHEET_IDNoID de la hoja de cálculo de Google Sheets para el adaptador de persistencia.