Kommo + Chili Piper: automatic meeting scheduling from the sales pipeline
Chili Piper is a tool for instant booking: a lead fills out a form -> immediately books a meeting with the right manager based on routing rules (territory, round robin, account owner). Unlike Calendly, Chili Piper is designed for B2B sales: CRM-based routing, instant handoff, Queue for inbound leads. Without the Kommo integration, Chili Piper meetings exist separately — meeting history does not appear in the deal, and no-shows are not handled automatically. With the integration, every booking event is instantly reflected in the deal card.
How Chili Piper differs from Calendly for sales
| Parameter | Chili Piper | Calendly |
|---|---|---|
| Rule-based routing | Yes — territory, round robin, owner | Limited |
| Instant booking (form -> meeting) | Yes, native | Via Zapier or routing forms |
| Queue (inbound leads in queue) | Yes | No |
| CRM-aware routing | Salesforce, HubSpot natively | No |
| Price | $30+/user/month | $12+/user/month |
For teams with custom Kommo integrations and an inbound model, Chili Piper delivers instant booking directly from a landing page — a lead books a meeting in a second after filling out the form.
What gets synchronized
Chili Piper -> Kommo:
— booking.created -> Note: “Chili Piper: meeting booked for {date}” + task
— booking.rescheduled -> Note: “Meeting rescheduled to {new_date}”
— booking.cancelled -> Note + task: “Meeting cancelled — schedule a new one”
— booking.no_show -> Note + stage change or task: “No-show — re-outreach”
— booking.completed -> Note: “Meeting completed”
Kommo -> Chili Piper:
— Lead data passed at booking via Custom Form Fields
— Deal identifier in Chili Piper via custom field kommo_deal_id
Architecture
Lead books a meeting via Chili Piper (form or embed)
↓ Chili Piper Webhook: booking.created
↓ Backend
1. Extract: email, name, meeting date, manager, kommo_deal_id (if passed)
2. If kommo_deal_id exists - use directly
If not - find lead/deal by contact email in Kommo
3. Kommo: POST /leads/{id}/notes
-> "Chili Piper: meeting with {manager} on {datetime}"
4. Kommo: POST /tasks
-> task for manager: "Conduct meeting with {name}"
5. Update chili_booking_id field in deal
Chili Piper Webhook: booking.no_show
↓ Backend
1. Find deal by chili_booking_id or email
2. Kommo: POST /notes -> "No-show: {name} did not attend the meeting"
3. Kommo: POST /tasks -> "Re-outreach after no-show"
4. Optionally: Kommo: PATCH /leads/{id} -> stage change to "No-show"
Chili Piper Webhook: key fields and handling
from flask import Flask, request
import hmac, hashlib
app = Flask(__name__)
CHILI_WEBHOOK_SECRET = "your_webhook_secret"
EVENT_NOTES = {
"booking.created": "Chili Piper: meeting booked",
"booking.rescheduled": "Chili Piper: meeting rescheduled",
"booking.cancelled": "Chili Piper: meeting cancelled",
"booking.no_show": "Chili Piper: client did not show (no-show)",
"booking.completed": "Chili Piper: meeting completed",
}
@app.route("/webhooks/chili-piper", methods=["POST"])
def chili_webhook():
# Verification (if secret is configured)
sig = request.headers.get("X-Chili-Signature", "")
if CHILI_WEBHOOK_SECRET and sig:
expected = hmac.new(
CHILI_WEBHOOK_SECRET.encode(),
request.data,
hashlib.sha256
).hexdigest()
if not hmac.compare_digest(expected, sig):
return "", 403
payload = request.json
event = payload.get("event_type")
booking = payload.get("booking", {})
attendee_email = booking.get("contact_email", "")
attendee_name = booking.get("contact_name", "")
assignee_name = booking.get("assignee_name", "")
start_time = booking.get("start_time", "") # ISO datetime
booking_id = booking.get("id", "")
# Try to find deal by kommo_deal_id in custom fields
kommo_deal_id = booking.get("custom_fields", {}).get("kommo_deal_id")
if kommo_deal_id:
deal_id = int(kommo_deal_id)
else:
deal_id = find_kommo_deal_by_contact_email(attendee_email)
if not deal_id:
return "", 200
note_prefix = EVENT_NOTES.get(event, f"Chili Piper: {event}")
note_text = (
f"{note_prefix}\n"
f"Attendee: {attendee_name} ({attendee_email})\n"
f"Manager: {assignee_name}\n"
f"Time: {start_time}"
)
create_kommo_note(deal_id, note_text)
update_kommo_deal(deal_id, {"chili_booking_id": booking_id})
if event == "booking.created":
create_kommo_task(deal_id,
f"Conduct meeting with {attendee_name} ({start_time})")
elif event == "booking.cancelled":
create_kommo_task(deal_id,
f"Meeting with {attendee_name} cancelled - propose a new time")
elif event == "booking.no_show":
create_kommo_task(deal_id,
f"No-show: {attendee_name} did not attend - re-outreach")
return "", 200
Passing kommo_deal_id to Chili Piper
To instantly find the deal on an incoming booking, pass kommo_deal_id via Chili Piper Custom Form Fields:
Option 1 (site embed): add a hidden field to the form on the landing page with name="kommo_deal_id". If the form is embedded on a page where the deal ID is already known (e.g. a link from an email), pass it via a URL parameter ?kommo_deal_id=12345 and read it in JS.
Option 2 (Chili Piper Concierge / Queue): when creating a booking via API (POST /fire-hose), add custom_fields.kommo_deal_id to the request body.
Option 3 (email fallback): if kommo_deal_id is not passed — search for the deal by contact email. This works for the majority of scenarios.
Routing: how Chili Piper selects a manager
Chili Piper Rules Engine routes leads based on conditions: — Round Robin: even distribution among SDRs — Account Owner: if the lead already exists in the CRM — route to their owner — Territory: by country/state/zip from the form — Priority Queue: inbound leads wait until a manager is free
For Kommo integration, territory routing is especially valuable: a lead from the Netherlands -> EU specialist, from the US -> US manager, Note in Kommo includes the name of the assigned manager.
Real case
B2B SaaS (US + EU, inbound model, Kommo + Chili Piper, 80–100 demos per month):
- Before: a lead filled out a form -> an SDR received a notification -> manually checked manager Calendly links -> sent the link. Time from inquiry to meeting: 2–24 hours. No-shows were handled manually by whoever noticed them.
- After: instant booking — the lead books a meeting immediately after the form. Time to meeting: 0 (books themselves). No-show -> auto-task for re-outreach the same day.
- Additionally: all meetings in the Kommo deal history — the manager sees demo->Won conversion without separate reports.
Who should use this
- B2B with inbound leads and multiple SDR/AEs — routing is needed
- Teams where leads must book a meeting instantly (instant booking)
- 30+ demos per month — no-shows without automation go unaddressed
- International teams with territory-based routing
Frequently asked questions
Chili Piper vs Calendly for Kommo integration?
Calendly integrates with Kommo similarly via webhook. Calendly is cheaper ($12 vs $30+/user). Chili Piper is stronger in routing and instant booking. If you only need “client picks a time” — Calendly. If you need “lead fills form and immediately sees available slots for the right rep” — Chili Piper.
How do you configure a Webhook in Chili Piper?
Chili Piper Workspace Settings -> Integrations -> Webhooks -> Add Endpoint. Specify the URL and select events. All events are available on Enterprise plans. Verification via signature in the header (if configured).
Does Chili Piper store meeting history?
Yes, in the Analytics dashboard — all meetings, statuses, conversions, no-show rates by manager. But without Kommo integration this analytics lives only in Chili Piper. With the integration — history is also in the CRM for full deal context.
How do you handle rescheduled meetings?
booking.rescheduled contains previous_start_time and the new start_time. In Kommo: Note with both times + update the task (Kommo API does not support editing tasks — create a new one, mark the old one as Done).
Summary
- Chili Piper Webhook:
X-Chili-Signature(HMAC-SHA256), form events — JSON - Key events:
booking.created,booking.rescheduled,booking.cancelled,booking.no_show - Deal mapping:
kommo_deal_idin custom fields or fallback by contact email - Routing: round robin, territory, account owner — no need to handle this on the Kommo side
- No-show -> auto-task for re-outreach — the key value for sales teams
If you use Chili Piper and Kommo and want to see meeting history in deals — describe your routing model. Exceltic.dev will configure the webhook handler and mapping.