How Apointoo proves which campaigns became revenue.
Preserve the click. Connect the frontend you already use. Confirm what became a real conversion. Send the result back to Google Ads. The same loop, end to end.
Preserve the click that drove the opportunity
GCLID, fbclid, msclkid, UTMs, landing page, and source are captured on the very first touch and held across sessions. Even if the user comes back days later, the conversion still attributes to the campaign that brought the click, without you wiring it together.
// app/api/conversion/route.ts
import { app } from '@/lib/apointoo'
export { app as POST }Connect the frontend you already use
A form, a booking page, a quote request, a custom flow, Apointoo plugs into the experience you already built. You keep control of design, copy, and flow. The attribution layer lives behind it.
// Attribution captured at the real conversion moment
const attribution = getAttribution()
// { gclid: 'xxx', utm_source: 'google', source: 'first-touch', ... }Confirm what became a real conversion
A lead can become a booking, a quote can be accepted, a sale can be paid. Mark that outcome, manually or via integration, and the original click finally has a result tied to it. Your report stops at the form no longer.
// Confirm the outcome when it actually happens
await apointoo.confirm({
leadId: lead.id,
outcome: 'sale_paid',
value: 1840.00,
currency: 'EUR',
})Send the result back to Google Ads
When the conversion is confirmed, Apointoo sends clean data back to Google Ads so the campaign starts learning from what became revenue, not from what filled out a form. The Smart Bidding signal goes from noisy to useful.
// Offline conversion goes back to Google Ads on confirm
await apointoo.uploadOfflineConversion({
gclid: attribution.gclid,
conversionName: 'sale_paid',
conversionValue: 1840.00,
})Plugs into the systems where conversions actually happen
Booking software, notification channels, dedup, and storage, each one follows the same adapter shape. Connect the systems you already use to confirm conversions; swap them later without changing the rest.
| Adapter | Type | Status |
|---|---|---|
| BLVD | booking | production |
| OpenDental | booking | beta |
| direct-confirm | booking | production |
| Brevo REST | notification | production |
| Twilio WhatsApp | notification | beta |
| Sheets | persistence | production |
| Upstash | dedup | production |
From click to confirmed revenue, in one path
Every conversion travels the same deterministic pipeline. The original click stays attached at every stage, so the result that comes back to Google Ads can always be traced to the campaign that started it.
Reserve with Google, ready to plug in.
For booking-driven clients, Apointoo includes a feed publisher for Google's Reserve with Google program. Availability appears on Google Search and Maps, the booking is captured with full attribution, and the result still flows back to the campaign that brought the click.