Skip to content
Apointoo
Request access
Developers

You build the experience. Apointoo keeps the proof.

Next.js, Vue, WordPress, custom landing pages, your own form, or a booking flow, Apointoo runs as the attribution layer behind it. Handler-first, fully typed, tree-shakeable. Works on Node.js, Deno, Cloudflare Workers, and any edge runtime with the Fetch API.

$npm install git+https://github.com/vizuh/apointoo-sdk.gitnpm

Or add the Apointoo skill to your AI coding agent (Claude Code, Cursor, Codex, Copilot and more):

$npx skills add vizuh/apointoo-skills-ceskills.sh

Quick start

Capture events via API or SDK, preserve GCLID, UTMs, and session data, then send leads, bookings, and outcome updates through your /api/* route in Next.js, Hono, or 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 }),
})

Adapters

Each integration is a tree-shakeable adapter for the systems where conversions actually happen. Import only what you use.

BLVD

booking

production

@vizuh/apointoo-sdk/adapters/booking/blvd

OpenDental

booking

beta

@vizuh/apointoo-sdk/adapters/booking/open-dental

direct-confirm

booking

production

@vizuh/apointoo-sdk/adapters/booking/direct-confirm

Brevo REST

notification

production

@vizuh/apointoo-sdk/adapters/notification/brevo-rest

Twilio WhatsApp

notification

beta

@vizuh/apointoo-sdk/adapters/notification/twilio-whatsapp

Sheets

persistence

production

@vizuh/apointoo-sdk/adapters/persistence/sheets

Upstash

dedup

production

@vizuh/apointoo-sdk/adapters/dedup/upstash

Architecture

One handler is the entry point. It runs the pipeline that holds attribution at every step and sends the confirmed conversion back to Google Ads through the configured adapters.

Handler
Pipeline
Dispatches to

Booking adapter

BLVD, OpenDental, direct-confirm

Notification adapter

Brevo REST, Twilio WhatsApp

Persistence adapter

Sheets

Dedup adapter

Upstash

Environment variables

Configuration is environment variables. No SDK-specific config files. Drop the keys in, deploy, ship.

NEXT_PUBLIC_GTM_ID

No

Google Tag Manager container ID. Leave empty to disable GTM.

HEADLESS_WP_URL

No

WordPress GraphQL endpoint for /docs and /blog content.

BREVO_API_KEY

No

Brevo (Sendinblue) REST API key for the Brevo notification adapter.

BLVD_API_KEY

No

BLVD API key for the BLVD booking adapter.

UPSTASH_REDIS_URL

No

Upstash Redis REST URL for the dedup adapter.

UPSTASH_REDIS_TOKEN

No

Upstash Redis REST token.

GOOGLE_SHEETS_SPREADSHEET_ID

No

Google Sheets spreadsheet ID for the persistence adapter.