---
title: Meeting Zoom otomatis dari Google Calendar
source: https://se-hari.com/docs/resep/meeting-dari-google-calendar
updated: 2026-08-15T18:41:38.86121+00:00
---

> Setiap event kalender baru menjadi meeting Zoom berlisensi, lengkap dengan rekaman dan notulen otomatis. Anda tetap menjadwalkan seperti biasa; Zoom-nya…

Setiap event kalender baru menjadi meeting Zoom berlisensi, lengkap dengan rekaman dan notulen otomatis. Anda tetap menjadwalkan seperti biasa; Zoom-nya menyusul sendiri.

## Kapan resep ini masuk akal

Resep ini cocok kalau tim Anda sudah menjadwalkan lewat kalender dan Zoom-nya selalu menyusul belakangan. Ia menghilangkan langkah manual yang paling sering terlupa sampai lima menit sebelum rapat dimulai. Yang perlu diperhatikan: ini satu-satunya resep yang memotong kredit secara langsung, jadi filternya harus ketat.

## Yang dihasilkan

Satu meeting Zoom per event kalender, beserta tautan join yang bisa dibagikan.

## Yang Anda butuhkan

- n8n self-hosted dengan community node `n8n-nodes-sehari` terpasang
- `meetings:write`
- `credits:read`
- Kredensial Google Calendar di n8n

Kalau belum memasang node-nya, ikuti [panduan n8n](/docs/n8n) lebih dulu — pemasangannya satu langkah dari menu Settings.

## Alur workflow

1. Event Kalender Baru (`googleCalendarTrigger`)
2. Cek Biaya (`Se-Hari: seHari`)
3. Buat Meeting Zoom (`Se-Hari: seHari`)
4. Kirim Link ke Peserta (`noOp`)

## Cara memakainya

1. Salin JSON di bawah
2. Di n8n: **Workflows → Import from Clipboard**, lalu tempel
3. Pilih kredensial **Se-Hari API** pada setiap node Se-Hari
4. Sesuaikan node tujuan (lihat catatan di bawah)
5. Aktifkan workflow

Kalau workflow ini memakai node trigger, endpoint webhook-nya **didaftarkan otomatis** saat diaktifkan dan dihapus saat dinonaktifkan. Tidak ada URL yang perlu disalin manual.

## Yang perlu disesuaikan

Resep ini **langsung memotong kredit** setiap kali berjalan. Node Cek Biaya ada supaya Anda bisa menambahkan percabangan saat saldo menipis — dan sangat disarankan menambahkan filter agar tidak setiap event kalender ikut terpicu. Event pribadi, blok fokus, dan pengingat ulang tahun tidak butuh meeting Zoom.

## Sebelum dijalankan di produksi

Impor dulu ke workflow terpisah dan jalankan sekali secara manual. n8n menyimpan hasil setiap node pada eksekusi terakhir, jadi Anda bisa melihat bentuk data yang sebenarnya keluar dari node Se-Hari sebelum menulis ekspresi apa pun di node berikutnya. Menebak bentuk data lalu memperbaikinya lewat percobaan berulang jauh lebih lambat, dan pada resep yang memakai kredit, percobaan berulang itu ada harganya.

Perhatikan juga penagihan kredit resep ini. Operasi yang membuat meeting memotong kredit saat itu juga, sedangkan operasi notulen menagih setelah pemrosesan selesai sesuai durasi asli rekaman. Kalau workflow Anda membaca saldo tepat setelah mengantre notulen, angkanya belum berubah — itu bukan bug. Pasang [batas kredit harian](/docs/autentikasi) pada API key yang dipakai workflow ini supaya kesalahan sekali tidak berubah menjadi tagihan besar.

## Kalau tidak berjalan seperti seharusnya

Waktu memakai zona WIB (UTC+7). Google Calendar mengembalikan waktu dengan offset, jadi memotong 11 karakter pertamanya menghasilkan jam UTC, bukan WIB — dan meeting Anda akan terjadwal tujuh jam melenceng. Pastikan kalender Anda diset ke Asia/Jakarta, atau konversi eksplisit.

Untuk masalah yang lebih umum, tab **Webhooks** di [dashboard developer](/dashboard/developer) memuat riwayat pengiriman lengkap dengan kode respons dari instance n8n Anda — tempat pertama yang harus dilihat ketika trigger tidak pernah berjalan.

## Variasi yang sering diminta

- Tambahkan filter agar hanya event dengan penanda tertentu di judul yang memicu pembuatan meeting.
- Perbarui event kalender dengan tautan join lewat node Google Calendar Update, sehingga peserta melihatnya di undangan yang sama.
- Pilih paket harga berdasarkan jumlah peserta yang diundang, bukan selalu paket yang sama.

## Workflow JSON

```json
{
  "name": "Meeting Zoom dari Google Calendar",
  "nodes": [
    {
      "parameters": {
        "content": "## Meeting Zoom dari Google Calendar\n\nSetiap event kalender baru jadi meeting Zoom berlisensi, lengkap dengan notulen otomatis.\n\n**Perhatian:** operasi ini LANGSUNG memotong kredit. Node \"Cek Biaya\" ada supaya Anda bisa menambahkan filter kalau saldo menipis.\n\nWaktu memakai zona WIB (UTC+7) — jangan konversi ke UTC.",
        "width": 460,
        "height": 260
      },
      "id": "note-1",
      "name": "Catatan",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -40,
        -40
      ]
    },
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "triggerOn": "eventStarted"
      },
      "id": "gcal-1",
      "name": "Event Kalender Baru",
      "type": "n8n-nodes-base.googleCalendarTrigger",
      "typeVersion": 1,
      "position": [
        0,
        300
      ]
    },
    {
      "parameters": {
        "resource": "kredit",
        "operation": "estimate",
        "estimateType": "meeting",
        "pricingTierId": "",
        "withRecording": true
      },
      "id": "sh-CekBiaya",
      "name": "Cek Biaya",
      "type": "n8n-nodes-sehari.seHari",
      "typeVersion": 1,
      "position": [
        220,
        300
      ],
      "credentials": {
        "seHariApi": {
          "id": "__SEHARI_CRED__",
          "name": "Se-Hari API"
        }
      }
    },
    {
      "parameters": {
        "resource": "meeting",
        "operation": "create",
        "title": "={{ $(\"Event Kalender Baru\").item.json.summary }}",
        "date": "={{ $(\"Event Kalender Baru\").item.json.start.dateTime.slice(0,10) }}",
        "startTime": "={{ $(\"Event Kalender Baru\").item.json.start.dateTime.slice(11,16) }}",
        "pricingTierId": "",
        "meetingOptions": {
          "with_recording": true,
          "auto_notulen": true
        }
      },
      "id": "sh-BuatMeetingZoom",
      "name": "Buat Meeting Zoom",
      "type": "n8n-nodes-sehari.seHari",
      "typeVersion": 1,
      "position": [
        440,
        300
      ],
      "credentials": {
        "seHariApi": {
          "id": "__SEHARI_CRED__",
          "name": "Se-Hari API"
        }
      }
    },
    {
      "parameters": {},
      "id": "dst-KirimLinkkePeserta",
      "name": "Kirim Link ke Peserta",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        660,
        300
      ],
      "notes": "Ganti dengan node email/Slack. Link Zoom: {{ $json.join_url }}",
      "notesInFlow": true
    }
  ],
  "connections": {
    "Event Kalender Baru": {
      "main": [
        [
          {
            "node": "Cek Biaya",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cek Biaya": {
      "main": [
        [
          {
            "node": "Buat Meeting Zoom",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Buat Meeting Zoom": {
      "main": [
        [
          {
            "node": "Kirim Link ke Peserta",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": [
    {
      "name": "Se-Hari"
    }
  ]
}
```

## Resep lain

- [Semua resep n8n](/docs/resep)
- [Panduan n8n](/docs/n8n) — pemasangan node dan kredensial
- [Webhook](/docs/webhook) — cara kerja trigger di baliknya