TattooBookingDevelopers

Integration recipes

End-to-end examples for common integration patterns. Each one is a complete, copy-pasteable starting point.

No-code

Zapier — your studio in 5,000+ apps

The fastest way to wire TattooBooking into the tools your studio already uses. Available at Solo plan and up.

  1. Visit zapier.com/apps/tattoobooking (live after marketplace review).
  2. Click Connect a new account. You'll be redirected to TattooBooking to approve the connection.
  3. Pick a trigger (e.g., New Appointment) and an action in the target app (e.g., Add row to Google Sheet).
  4. Test and turn on the Zap.

Triggers available: New Appointment, Appointment Cancelled, New Lead, New Client, New Form Submission.
Actions: Create Client, Find or Create Client, Create Lead.
Searches: Find Client by Email.

Make.com (Integromat)

Use the "Webhooks by Make" trigger. Paste your scenario's webhook URL into TattooBooking's POST /v1/webhook_endpoints:

{
  "url": "https://hook.us1.make.com/abcdef...",
  "events": ["appointment.created", "lead.created"]
}

n8n

Same pattern — use the "Webhook" node in n8n, copy the URL it generates, and POST it to /v1/webhook_endpoints. Add a "Crypto" node before the rest of your workflow to verify theTattooBooking-Signature header.

Code recipes

Sync appointments to Google Calendar

If you're building this for a single tenant: use an API key and the Google Calendar API directly.

  1. Subscribe to appointment.created and appointment.rescheduled.
  2. On each delivery, call calendar.events.insert with the start/end times.
  3. Use the id on the envelope as a stable idempotency key to dedupe.

Pipe new leads to Mailchimp

  1. Subscribe to lead.created.
  2. On each delivery: GET /v1/clients/{client_id} to enrich the lead with full client info.
  3. Call mailchimp.lists.addListMember with the email + tags.

Send form submissions to Notion

  1. Subscribe to form_submission.created.
  2. For each delivery, the payload includes the full submissionDataJSON object — POST it to notion.pages.create as a new database row.

Build a custom Slack bot for new bookings

Webhook → Slack incoming webhook URL. The webhooks doc includes a complete Node.js signature-verifier — slot it into Slack's incoming-webhook code and ship.

Connect GHL (GoHighLevel) bidirectionally

The platform already syncs with GHL when a tenant connects via the admin settings — no custom code needed. If you need a different pattern, use the OAuth flow + the ghl_appointment_id field exposed on the Appointment DTO to correlate records.

AI phone agent (Bland.ai, Vapi, etc.)

API key auth + a thin Fastify/Express handler:

// When the phone agent collects an inquiry:
const client = await tb.clients.findOrCreate({ email, phone, firstName, lastName });
const idea = await tb.ideas.create({ clientId: client.id, description: transcript });
const lead = await tb.leads.create({ clientId: client.id, priority: 'high' });

Embed scheduling in your own site

For now, link out to https://book.tattoobooking.com/{artistSlug}/book/{eventTypeSlug} — both slugs are exposed on /v1/event_types. A proper embed widget is on the roadmap.