Automation with n8n & Make

The combination of LockMyCal and n8n (or Make or Zapier) lets you build a completely self-sufficient, private and scalable automation system without having to pay expensive monthly fees for commercial integration platforms.


1. Examples of automated scenarios

graph LR
    LMC["LockMyCal Webhook"] --> N8N["n8n Automation Node"]
    N8N --> Slack["Slack / Discord Alert"]
    N8N --> CRM["CRM: Raynet / HubSpot / Pipedrive"]
    N8N --> Invoice["Invoicing: Fakturoid / iDoklad"]
    N8N --> SMS["SMS Reminder: Twilio"]
  1. Creating a contact and a deal in the CRM: After a booking is confirmed, the client is automatically created in the CRM and a business case is planned with the data from the booking (name, email, phone, company).
  2. Instant team notification: Sending a message with all the meeting details to a specific channel in Slack, Microsoft Teams or Telegram.
  3. Automatic invoicing: After capturing the meeting.created event for a paid meeting, n8n generates an invoice or tax document in your accounting software and sends it to the client.
  4. Pre-meeting SMS notifications: Scheduling an SMS message 2 hours before the start of the meeting to minimize no-shows.

2. Setting up the n8n Webhook node

  1. In n8n, create a new workflow and add the Webhook trigger node.
  2. Set:
    • HTTP Method: POST
    • Path: lockmycal-booking
    • Response Code: 200
  3. Copy the generated Test URL (for testing) or Production URL.
  4. In the LockMyCal dashboard, paste this address in Automation → Webhooks.
  5. Create a test booking to load the data structure into n8n.

3. Processing data in the n8n Code node

Access to the fields from the webhook is straightforward:

// Getting the basic information about the booking
const meeting = $json.data.meeting;

return {
  meetingId: meeting.id,
  meetingTitle: meeting.title,
  startTime: meeting.start_time,
  clientName: meeting.attendee.name,
  clientEmail: meeting.attendee.email,
  meetUrl: meeting.urls.meeting,
  company: meeting.attendee.company || 'N/A'
};