Skip to main content
Tech Titan

API Method Guide

calendar.event.add

Module: CalendarScope: calendar

Direct answer

calendar.event.add creates a calendar event: pass type and ownerId (whose calendar), section (which calendar), name, from/to datetimes, and attendees. Pair it with a CRM activity so the meeting exists in both worlds.

What calendar.event.add does

Creates events in user, group, or company calendars. The scheduling half of booking integrations: property viewings, clinic appointments, demo calls — created from external systems onto the right person's calendar.

Business use cases

  • Booking systems placing viewings/appointments on agent calendars
  • Clinic scheduling synced to doctor calendars
  • Demo-call scheduling from website booking widgets
  • Resource booking (rooms, vehicles) via calendar.resource.*

Typical fields and parameters

  • type + ownerId'user' + user ID for personal calendars; 'group' for workgroup calendars
  • sectionCalendar section ID — list with calendar.section.get; events land invisibly if the section is wrong
  • name / descriptionWhat appears on the calendar
  • from / toStart/end datetimes — timezone discipline is everything here
  • attendees + hostParticipant user IDs for meeting-style events
  • remindReminder rules (e.g. 15 minutes before)

Example workflow

  1. Client books a Friday 15:00 viewing in the booking widget
  2. Availability checked against calendar.event.get for the agent's window
  3. calendar.event.add creates the event on the agent's calendar with a 1-hour reminder
  4. crm.activity.add mirrors it as a meeting on the lead; WhatsApp confirmation goes to the client

Example request

POST .../calendar.event.add.json

{
  "type": "user",
  "ownerId": 7,
  "section": 21,
  "name": "Viewing — Marina Vista 2104 — Ahmed",
  "description": "Lead #20517. Meet at tower lobby.",
  "from": "2026-07-10T15:00:00+04:00",
  "to": "2026-07-10T15:45:00+04:00",
  "remind": [{ "type": "min", "count": 60 }]
}

Example response

{ "result": 5521, "time": { ... } }
// "result" is the new event ID.

Field mapping notes

  • Calendar events do not automatically appear on CRM records — mirror with a CRM activity/todo if agents work from the record
  • Store the event ID against your booking so reschedules and cancellations can target it (calendar.event.update / delete)
  • Timezones: send explicit offsets and test with a portal whose timezone differs from your server's — this is the #1 bug source in booking integrations

Security notes

  • Calendar contents reveal client names and movements — scope the integration account's calendar access to the users it schedules for

Common errors

  • Event created but not visibleWrong section for that owner — list sections per user, don't reuse IDs across users
  • Times shifted by hoursTimezone offset mismatch between your system, the portal, and the user profile
  • Double bookingsNo availability check, or check-then-create race — serialize per-agent in the queue

Production implementation tips

  • Always check availability and create within one serialized worker per agent to prevent races
  • Reminders are your no-show insurance — set both calendar remind and a WhatsApp reminder cadence

Webhook or OAuth app?

Booking flows touch many users' calendars — an OAuth app with calendar scope is cleaner than a super-user webhook.

Full decision guide: webhook vs OAuth app in Bitrix24.

When to use a queue worker

Serialize by agent for race-free booking; everything else follows the standard queue pattern.

How Tech Titan can help

Tech Titan builds production Bitrix24 integrations around calendar.event.add and its siblings — with authentication, field mapping, queue workers, retry logic, duplicate handling, and structured logs as standard. If this method is on your critical path, bring the requirement to a free audit call and leave with an architecture sketch.

Frequently asked questions

How do I create a calendar event for another user?

type 'user' with their user ID as ownerId and a valid section from their calendar — the integration account needs rights to their calendar.

How do viewings appear on the CRM lead?

Create the calendar event and mirror it as a CRM activity (crm.activity.add / crm.activity.todo.add) bound to the lead — one real-world meeting, two coordinated records.

Need calendar.event.add working in production?

Bring your integration to a free audit call — you'll leave with an architecture sketch and an honest scope, whether or not you engage us.