📽 Animated Guides

Connect ElfClick to
any tool you already use

Step-by-step animated walkthroughs for every integration method. Follow along, pause whenever you need, and connect at your own pace.

📋 CSV Upload ⚡ Zapier 🔄 Make 📊 Google Sheets 🔗 REST API 📅 Google Calendar

CSV Upload — Import your entire history in one go

Best for: one-time migration from Vagaro, Acuity, Square, Excel, or any spreadsheet. No API key needed — just upload a file.

customer_name
phone
service
amount
date
Jane Smith
+1 647 123
Haircut
$80
Jun 1
Alex Chen
+1 416 555
Massage
$90
Jun 2
Maria G.
+1 905 234
Colour
$120
Jun 3
Priya K.
+1 647 888
Facial
$65
Jun 5
📦
Add Order
Import CSV tab
Import CSV
Add Manually
⬇️
Download template
elfclick-orders-template.csv
Download
customer_name ✓
phone ✓
service ✓
amount ✓
date ✓
Jane Smith
+16471234567
Haircut
80
2026-06-01
Alex Chen
+14165550198
Massage
90
2026-06-02
Maria G.
+19052341234
Colour
120
2026-06-03
Column names match — or use our aliases (name, price, item…)
📁
my-bookings.csv
248 rows detected — importing…
✓ Skipping 3 blank rows  ·  245 valid records
✓ 245 orders imported
Jane Smith
Haircut
$80
Confirmed
Alex Chen
Full Body Massage
$90
Confirmed
Maria Garcia
Colour Treatment
$120
New
Priya Kumar
Facial
$65
Confirmed
Step 1 of 5

Your existing orders live in a spreadsheet

Whether you use Google Sheets, Excel, Vagaro, Acuity, or any booking tool — you can export a CSV in seconds. ElfClick accepts your columns as-is.

Zapier — New row in any app = new order in ElfClick

Best for: real-time sync from Google Sheets, Airtable, Typeform, Calendly, and 6,000+ other apps. No code — just point and click.

📊
Trigger
Any app
Zapier
Routes it
🛍️
ElfClick
New order
📊
Trigger: Google Sheets
New Spreadsheet Row — "Bookings" sheet
Action: Webhooks by Zapier
POST — configure next
Webhooks by Zapier — POST
URL
https://app.elfclick.com/api/public/orders
Payload Type
JSON
Header: X-Api-Key
a1b2c3d4•••
Your field
ElfClick field
Name
customer_name
Phone
phone
Service
service
Price
amount
Date
date
New Booking → ElfClick Order
Running · Last triggered 2 min ago
147 runs
From Sheets
New Haircut booking
$80
Auto
From Airtable
Massage booking
$90
Auto
Step 1 of 5

Connect any trigger to ElfClick automatically

Zapier sits in the middle — your source fires when something happens, Zapier catches it and sends it to ElfClick. You set it up once; it runs forever.

Make (Integromat) — Visual scenario builder

Best for: complex multi-step workflows. Watch records from Airtable, databases, CRMs, or any source — and push them to ElfClick in real time.

My Scenario — ElfClick Sync
📊
Airtable — Watch Records
New record in "Bookings" base
Add module
📊
Airtable — Watch Records
New record in "Bookings"
🌐
HTTP — Make a request
POST to ElfClick API — configure next
🌐
HTTP — Make a request
URL
https://app.elfclick.com/api/public/orders
Method
POST
Header
X-Api-Key: a1b2c3d4•••
Body type
Raw — application/json
Request body (JSON)
{
  "customer_name": {{1.Name}},
  "phone": {{1.Phone}},
  "service": {{1.Service}},
  "amount": {{1.Price}},
  "date": {{1.Date}},
  "notes": {{1.Notes}}
}
Scenario active
Every 15 minutes · 0 errors
52 ops used
From Airtable
New booking synced
$85
Auto
From Airtable
Colour appointment
$120
Auto
Step 1 of 5

Build a scenario in Make's visual canvas

Make shows your integration as a visual flow — modules connected by lines. Add your trigger on the left, ElfClick on the right, and your data flows automatically.

Google Sheets — Your sheet becomes a live order feed

Best for: merchants already managing orders in Google Sheets. Paste a 10-line script once and every new row automatically becomes an ElfClick order.

A — Name
B — Phone
C — Service
D — $
E — Date
F — Notes
Jane Smith
6471234567
Haircut
80
2026-06-01
Short layers
Alex Chen
4165550198
Massage
90
2026-06-02
Priya K.
6478889999
Facial
65
2026-06-05
Sensitive skin
← new row
📊
Google Sheets menu
File
Edit
View
Extensions
→ Apps Script
Code.gs
triggers
const KEY = 'a1b2c3d4…';
 
function sendToElfClick() {
  const s = SpreadsheetApp
    .getActive().getActiveSheet();
  const row = s.getLastRow();
  const [name, phone, svc, amt, date] =
    s.getRange(row,1,1,5).getValues()[0];
  UrlFetchApp.fetch('https://app.elfclick.com'
    + '/api/public/orders',
    {method:'post',headers:{'X-Api-Key':KEY},
     payload:JSON.stringify({customer_name:name,
     phone,service:svc,amount:amt,date})});
}
Add Trigger
Apps Script → Triggers → Add Trigger
Function to run
sendToElfClick
Event source
From spreadsheet
Event type
On form submit
→ Save · Authorize when prompted · Done
📊
New row in your Sheet
Priya K. · Facial · $65
🛍️
New ElfClick order
Priya K. · Facial · $65 · Confirmed
201 ✓
Step 1 of 5

Your orders already live in a Google Sheet

You've been tracking bookings in Sheets — no need to change that. We'll add a small script that fires every time a new row is added and creates the order in ElfClick automatically.

REST API — Any system, any language

Best for: developers with a custom booking form, website, CRM, or any system that can make an HTTP POST request.

🔑
API Access
Settings → API Access
a1b2c3d4••••••••••••••••••••••••
🔒 Copy your key now — shown once, then hidden forever. Store it safely.
Terminal
curl -X POST https://app.elfclick.com/api/public/orders \
  -H "X-Api-Key: a1b2c3d4…" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_name": "Jane Smith",
    "phone": "+16471234567",
    "service": "Haircut",
    "amount": 80,
    "date": "2026-06-01",
    "time": "10:00"
  }'
Response
HTTP/2 201 Created
content-type: application/json
 
{
  "order_id": 1042,
  "reference_id": "ORD-A1B2C3"
}
 
# Store order_id to check status later
# or use the outbound webhook to receive updates
ElfClick dashboard — instant
Jane Smith
ORD-A1B2C3 · Jun 1, 10:00 AM · Source: API
$80
Confirmed
📅 Google Calendar event created automatically if connected
📲 Merchant notified via WhatsApp + push notification
🔗 Customer gets a tracking link
Step 1 of 4

Get your API key from Settings

Every merchant gets a personal API key. Find it under Settings → API Access. Click Generate, copy it once — it's never shown again.

🔒 Store your key in an environment variable or secret manager, never in plain code.

Google Calendar — Two-way appointment sync

Best for: service businesses (salons, coaches, therapists, photographers). Connect once — bookings appear in your calendar and your blocked time prevents double-booking.

📅
Google Calendar
Settings → Calendar Integration
Connect your Google Calendar to automatically sync appointments and respect your blocked time.
📅 Connect Google Calendar
Opens Google authorization · takes 30 seconds
🛍️
Jane Smith booked Haircut
Jun 1 · 10:00 AM · $80
June 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun
26
27
28
29
30
31
1
Jane 10:00
2
3
4
5
6
7
8
Your Google Calendar
June 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun
1
Jane 10:00
2
⛔ Dentist 2pm
3
4
⛔ Day off
5
Priya 11:00
6
7
8
You blocked Jun 2 (dentist) and Jun 4 (day off) directly in Google Calendar.
💬 WhatsApp AI conversation
Can I book a haircut on June 2nd at 2pm?
June 2nd at 2pm isn't available, but I have openings at 10am, 11am, or 1pm on June 2nd. Which works for you?
✅ AI read your Google Calendar block · Never offered 2pm · Suggested alternatives automatically
Step 1 of 4

Connect once in Settings → Calendar Integration

Click "Connect Google Calendar" and sign in with your Google account. The authorization takes 30 seconds — ElfClick only requests calendar read and event creation permissions.

Ready to connect?

Your data is waiting.
Start free — bring it all with you.

No credit card. Ready in under 10 minutes.

Start Free →