CoquiCal Appointment Engine
The Sovereign, Cal.com-Grade Appointment & Executive Meeting Orchestration Suite Engineered Natively Inside Odoo 20 Community & Enterprise.
Eliminate per-seat Calendly and Cal.com SaaS subscriptions forever. CoquiCal (odoo_appointment_scheduler_coquicloud) delivers sub-second timezone-aware slot computation, bidirectional Google Calendar OAuth2 Free/Busy conflict detection, automatic crm.lead & calendar.event creation, RFC 5545 .ics invitations, cryptographic self-service reschedule/cancel tokens, and headless iframe embeds.
Per-Seat SaaS Tax
Dynamic Slot Matrix Query
Google & Odoo Calendar Sync
IANA Timezones Supported
CRM Lead Auto-Attribution
Zero-Login Reschedule Tokens
Why Pay Per-Seat SaaS Rent When Your ERP Owns the Ledger?
External scheduling platforms fracture your prospect telemetry across third-party webhooks, fragile Zapier bridges, and per-user monthly fees. CoquiCal brings the entire Cal.com experience natively into Odoo 20.
When an enterprise prospect books an architecture audit or discovery call through an external tool like Calendly, your CRM loses immediate transactional context. If a webhook drops, the meeting never reaches your sales pipeline, and rescheduling creates duplicate records. CoquiCal (odoo_appointment_scheduler_coquicloud) eliminates the middleman by executing inside the exact same PostgreSQL transaction as your Contacts, CRM, and Calendar.
Designed as a standalone, white-label commercial addon ready for multi-tenant deployment or resale, CoquiCal provides a sleek dark-mode public booking portal (/book & /bookramon), multi-host availability rules with per-day split shifts, before/after buffer padding, minimum notice guardrails, daily booking caps, custom intake questionnaires, and instant RFC 5545 .ics calendar attachments.
odoo_appointment_scheduler_coquicloud
- Host Profile Engine:
coqui.appointment.host - Event Type Matrix:
coqui.appointment.type - Weekly Shift Rules:
coqui.appointment.availability - Custom Intake Fields:
coqui.appointment.question - Booking State Machine:
coqui.appointment.booking - Live Event Slugs:
15-min-intro,30-min-discovery,architecture-audit,vip-pair-programming
Six Core Engines Powering CoquiCal
Every layer of CoquiCal is architected to handle complex cross-timezone executive scheduling without external JavaScript dependencies or leaky third-party databases.
Dynamic pytz Slot Matrix
Method: get_available_slots_for_date()
- Browser Timezone Auto-Detection: Detects visitor IANA timezone via
Intl.DateTimeFormat()and translates host availability windows into localized visitor slots on the fly. - Buffer & Notice Guardrails: Enforces configurable
buffer_before,buffer_after,min_notice_hours, andmax_days_aheadrolling horizons. - Daily Capacity Circuit Breaker: Automatically locks dates once
max_bookings_per_dayis reached to protect deep-work engineering blocks.
Dual-Layer Conflict Detection
Sources: Odoo calendar.event + Google OAuth2
- Native Odoo Calendar Queries: Cross-checks internal
calendar.eventrecords and confirmedcoqui.appointment.bookingslots in a single indexed SQL query. - Google Calendar FreeBusy API: Optional per-host Google OAuth2 refresh-token integration queries real-time external busy blocks before rendering slots.
- 2-Way Event Push: Automatically creates or updates external Google Calendar events with Google Meet / Jitsi / Zoom video conference links upon confirmation.
CRM, Partner & ICS Automation
Orchestration: res.partner, crm.lead, mail.mail
- Deterministic Contact Resolution: Deduplicates attendees by normalized email, enriching existing
res.partnerrecords with phone, company, and timezone metadata. - Automatic CRM Opportunity Spawning: Enabled per event type (
create_crm_lead = True) to inject qualified discovery calls and architecture audits directly into the sales pipeline. - RFC 5545
.icsGenerator: Dynamically synthesizes standards-compliant iCalendar payloads withVALARMreminders and 1-click Google/Outlook/Apple Calendar links.
Cryptographic Token Self-Service
Routes: /book/manage/, /reschedule, /cancel
- Zero-Password Attendee Portal: Every booking mints a high-entropy UUIDv4
access_tokenallowing guests to view, reschedule, or cancel meetings without needing an Odoo portal login. - Atomic Rescheduling: Selecting a new time slot updates the underlying
calendar.event, logs the audit trail in the chatter, and dispatches updated.icsinvites automatically. - Cancellation Reason Telemetry: Captures structured cancellation reasons and immediately releases the time slot back into the public availability pool.
Dynamic Intake Questionnaires
Models: coqui.appointment.question & .answer
- Per-Event Qualification Forms: Configure custom single-line, multi-line, dropdown, radio, or phone intake questions tailored to each meeting type.
- Structured Answer Persistence: Guest responses are stored as relational
coqui.appointment.answerrecords AND formatted into the linkedcrm.leaddescription. - Pre-Call Architecture Briefing: Ensures the host walks into every call knowing the prospect's ERP version, cloud topology, and primary bottleneck in advance.
Headless JSON API & Iframe Embeds
Query Param: ?embed=1 & /book/api/...
- Distraction-Free Iframe Mode: Appending
?embed=1strips the website header and footer, rendering a compact Cal.com-style widget ready to embed on external landing pages. - RESTful JSON Availability Endpoints: High-speed JSON endpoints (
/book/api/slotsand/book/api/month_availability) power instant month/day calendar switching with zero page reloads. - White-Label & Resellable Core: Zero hardcoded domain names or personal branding in the Python/XML source—100% driven by backend records.
Complete CoquiCal URL & API Route Map
Every route is served directly by Odoo 20's HTTP dispatcher with CSRF protection, rate-safe validation, and responsive dark-mode QWeb templates.
Public Booking & Self-Service Routes
GET /book&/bookramon— Executive Host Profile & Public Event Type Selector Directory.GET /book/— Interactive Month Calendar, Timezone Switcher, Slot Picker & Intake Form.POST /book/— Atomic booking creation, conflict re-verification, CRM lead trigger & email dispatch./submit GET /book/confirmed/— Booking confirmation screen with 1-click Google Calendar &.icsdownload buttons.GET/POST /book/manage/— Cryptographic token portal for self-service rescheduling and cancellation.
JSON Telemetry & Calendar Export Endpoints
GET /book/api/slots— Computes real-time available time slots for a givenevent_id,date, and visitor IANAtz.GET /book/api/month_availability— Returns available vs. sold-out dates across an entire calendar month for instant UI rendering.GET /book/ics/— Streams an RFC 5545 compliant iCalendar file with timezone-accurate UTC timestamps..ics GET /book/— Chromeless iframe embed mode for external marketing sites and customer portals.?embed=1 ir.cron— Automated 24-hour and 1-hour pre-meeting email reminder daemon.
Experience CoquiCal Live or Deploy It on Your Odoo Stack
Test the live slot engine right now by booking a discovery session, or license odoo_appointment_scheduler_coquicloud for your own Odoo 20 enterprise instance.