chat

Memuat…

chat
Retention.id

Dengan mendaftar, Anda menyetujui Syarat & Ketentuan dan Kebijakan Privasi.

atau

Lupa Password

Masukkan email akun Anda. Kami akan mengirim link reset password ke inbox Anda.

Reset Password

chat
Retention.id

Setup Workspace Anda

Mulai langkah pertama untuk mengotomatisasi notifikasi WhatsApp bisnis Anda.

+62

Dipakai sebagai penerima notifikasi tes & sistem.

QR

Tautkan Perangkat

Hubungkan WhatsApp ke Retention.id untuk mulai kirim notifikasi otomatis.

  • smartphone Buka WhatsApp di HP Anda
  • more_vert Menu → Perangkat Tertaut
  • qr_code_scanner Pilih Tautkan Perangkat & scan QR

Buat Integrasi Pertama

Pilih jenis aplikasi yang ingin dihubungkan dengan API Retention.id.

Kirim Notifikasi Test

Pastikan WhatsApp terhubung dengan mengirim pesan percobaan.

+62

Nomor HP aktif WhatsApp (08xx…), bukan telepon kantor.

check_circle

Berhasil terkirim!

Cek WhatsApp Anda sekarang.

visibility WhatsApp Preview
chat

Retention.id

online

Halo dari Retention.id! 🎉 Ini pesan tes onboarding Anda. Setup berhasil — silakan lanjut ke dashboard.

10:45 done_all

Simulasi tampilan di perangkat mobile

Mode support — Anda masuk sebagai pelanggan

Session Terhubung

check_circle

Notifikasi

notifications_active Log terbaru

Autoreply Aktif

smart_toy Rules aktif

Kuota

/

Tes Kirim

Kirim pesan percobaan ke nomor WhatsApp

outgoing_mail
+62

Pesan berhasil dikirim.

Status Session

Belum ada session.

Notifikasi Terbaru

Event Penerima Status Waktu

Belum ada notifikasi.

WhatsApp Sessions

Kelola perangkat WhatsApp yang terhubung.

Campaign & List

Kelola list kontak lalu kirim broadcast · delay min 8 detik · max 80/jam

Belum ada campaign. Buat list kontak dulu, lalu buat campaign.

Alur: Buat kontak (dengan tag) → Buat list → Tambah anggota → Buat campaign → Start

Belum ada list. Klik + List untuk membuat.

Kontak

Belum ada kontak.

Autoreply

Pesan Terjadwal

Pengiriman berulang otomatis sesuai jadwal workspace Anda

Belum ada pesan terjadwal.

Notifikasi

Belum ada log notifikasi.

Integrasi

Webhooks

API Keys

Tim

Billing

Plan aktif:

Kuota : /

Checkout aktif

Pilih plan

Riwayat invoice

Limit plan Free

· 1 sesi WA · 2.000 pesan/hari · 2 campaign · 5 autoreply

· 500 kontak · 1 API key · 1 integrasi · 3 pesan terjadwal

· Campaign teks saja · log 7 hari · tanpa undang tim

Selesaikan Pembayaran

Menunggu pembayaran
No. Invoice
Plan
Harga plan
Kode unik
Total bayar
warning

Transfer tepat . Jangan dibulatkan agar sistem dapat memverifikasi pembayaran otomatis.

Pembayaran via Tripay

Channel
Kode bayar / VA
open_in_new Buka halaman pembayaran

Pembayaran via XenithPay

Pilih channel pembayaran

QR Code

Virtual Account

Channel aktif
Bank

Nomor Virtual Account

Transfer tepat ke nomor VA di atas.

Scan QRIS untuk bayar QRIS XenithPay

Buka aplikasi e-wallet / mobile banking, lalu scan kode di atas.

timer Berlaku sampai

Selesaikan pembayaran di halaman ini. Status akan diperbarui otomatis setelah pembayaran sukses.

Pembayaran via Pakasir

Selesaikan pembayaran melalui halaman checkout Pakasir.

open_in_new Buka halaman pembayaran
Bank
No. Rekening
Atas nama
timer Selesaikan sebelum
verified_user

Pembayaran diverifikasi otomatis via Tripay. Plan aktif setelah status PAID.

Pembayaran diverifikasi otomatis via XenithPay. Plan aktif setelah pembayaran sukses.

Pembayaran diverifikasi otomatis via Pakasir. Plan aktif setelah pembayaran completed.

Pembayaran diverifikasi otomatis via Cekrek. Plan aktif dalam beberapa menit setelah transfer masuk.

hourglass_top

Menunggu verifikasi pembayaran

Kami memverifikasi transfer untuk invoice .

Status
Plan
Nominal

Halaman ini akan diperbarui otomatis setelah pembayaran terverifikasi.

check_circle

Upgrade berhasil!

Plan sekarang aktif untuk workspace Anda.

Pengaturan

API Documentation

Panduan lengkap mengintegrasikan Retention.id dengan aplikasi, kasir, ERP, n8n, Make, Zapier, dan backend Anda.

1. Mulai dalam 5 menit

  1. Hubungkan WhatsApp di menu WhatsApp Sessions sampai status connected.
  2. Buat API Key di menu API Keys (atau key Integrasi saat onboarding).
  3. Simpan key — hanya ditampilkan sekali. Format: sk_live_… atau sk_int_….
  4. Kirim request ke endpoint di bawah dari aplikasi / automation tool Anda.
Base URL

https://retention.id/api

Auth

Authorization: Bearer YOUR_API_KEY

Content-Type

application/json

Endpoint utama

POST /v1/notifications

2. Kirim notifikasi

POST /api/v1/notifications — kirim pesan WhatsApp ke satu nomor.

FieldWajibKeterangan
toYaNomor tujuan. Format internasional tanpa +: 62812… (08… juga diterima)
messageYa*Isi pesan langsung. *Atau kosongkan jika memakai template + event
eventYa*Nama event template, mis. payment.completed. *Wajib jika message kosong
dataTidakObject untuk mengisi placeholder template {{amount}}, {{name}}, dll.
metadataTidakData tambahan untuk log (order_id, source, dll.)

Contoh — pesan langsung

curl -X POST https://retention.id/api/v1/notifications \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "628123456789",
    "message": "Halo! Pembayaran Anda berhasil.",
    "event": "payment.completed",
    "metadata": { "order_id": "INV-1001" }
  }'
const res = await fetch("https://retention.id/api/v1/notifications", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk_live_YOUR_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    to: "628123456789",
    message: "Halo! Pembayaran Anda berhasil.",
    event: "payment.completed",
    metadata: { order_id: "INV-1001" },
  }),
});
const data = await res.json();
console.log(data);
$ch = curl_init("https://retention.id/api/v1/notifications");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer sk_live_YOUR_KEY",
    "Content-Type: application/json",
  ],
  CURLOPT_POSTFIELDS => json_encode([
    "to" => "628123456789",
    "message" => "Halo! Pembayaran Anda berhasil.",
    "event" => "payment.completed",
    "metadata" => ["order_id" => "INV-1001"],
  ]),
  CURLOPT_RETURNTRANSFER => true,
]);
echo curl_exec($ch);
import requests

r = requests.post(
    "https://retention.id/api/v1/notifications",
    headers={
        "Authorization": "Bearer sk_live_YOUR_KEY",
        "Content-Type": "application/json",
    },
    json={
        "to": "628123456789",
        "message": "Halo! Pembayaran Anda berhasil.",
        "event": "payment.completed",
        "metadata": {"order_id": "INV-1001"},
    },
)
print(r.status_code, r.json())

Response sukses (201)

{
  "id": "c1a2b3…",
  "status": "sent",
  "event": "payment.completed",
  "to": "628123456789",
  "message_preview": "Halo! Pembayaran Anda berhasil.",
  "created_at": "2026-07-14T05:00:00Z"
}

3. Template pesan (event-driven)

Buat template di dashboard (Templates), lalu kirim hanya event + data — Retention merender pesan otomatis.

Contoh template untuk event payment.completed:

Halo {{name}}!
Pembayaran sebesar Rp {{amount}} telah berhasil.
No. Invoice: {{invoice}}
{
  "to": "628123456789",
  "event": "payment.completed",
  "data": {
    "name": "Budi",
    "amount": "150.000",
    "invoice": "INV-1001"
  }
}

Placeholder memakai sintaks {{key}} sesuai field di data.

4. Webhook inbound (Integrasi)

Cocok untuk n8n, Make, Zapier, Cekrek, kasir, atau sistem yang push HTTP. Buat Integrasi di dashboard — Anda mendapat URL unik:

POST https://retention.id/api/webhooks/inbound/{webhookToken}

Tidak perlu Bearer token — keamanan ada di webhookToken rahasia di URL.

FieldWajibKeterangan
eventYaHarus ada di allowed events integrasi (atau *)
toYaNomor WhatsApp tujuan
dataTidakData untuk merender template event
curl -X POST "https://retention.id/api/webhooks/inbound/whk_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "payment.completed",
    "to": "628123456789",
    "data": { "name": "Budi", "amount": "150.000" }
  }'

Cara pakai di tools populer

  • n8n / Make / Zapier — node HTTP Request, method POST, URL inbound, body JSON di atas.
  • Kasir / POS — panggil webhook saat transaksi sukses; isi to dari nomor pelanggan.
  • Laravel / WordPress / WooCommerce — hook setelah order paid, kirim POST ke inbound URL.

5. Format nomor telepon

InputHasilStatus
628123456789628123456789Direkomendasikan
08123456789628123456789Didukung (otomatis dinormalisasi)
+62 812-3456-789628123456789Didukung

Pastikan nomor sudah punya akun WhatsApp aktif.

6. Kode error & HTTP status

HTTPCodeArti
201Pesan terkirim
400missing_parameter / invalid_jsonBody tidak lengkap atau JSON invalid
401unauthorizedAPI key hilang / salah / dicabut
403forbiddenScope tidak cukup / event tidak diizinkan
404template_not_foundTidak ada template aktif untuk event
429Kuota bulanan habis
502send_failedGagal kirim ke WhatsApp
503no_sessionBelum ada sesi WhatsApp connected
{
  "error": {
    "code": "no_session",
    "message": "No connected WhatsApp session"
  }
}

7. Best practices

  • Simpan API key di environment variable / secret manager — jangan hardcode di frontend publik.
  • Selalu cek status sesi WhatsApp connected sebelum volume tinggi.
  • Pakai event + template untuk pesan berulang agar mudah diubah tanpa redeploy.
  • Isi metadata.order_id agar mudah dilacak di log Notifikasi.
  • Handle 429 (kuota) dan 503 (session) dengan retry / alert ke admin.
  • Untuk broadcast massal, gunakan fitur Campaign di dashboard (bukan loop API satu-per-satu) agar delay & rate limit aman.

8. Checklist integrasi

Sebelum production

  • Sesi WA connected
  • API key dibuat & disimpan aman
  • Template event diuji
  • Tes kirim ke nomor sendiri sukses
  • Kuota plan cukup

Monitoring

  • Cek menu Notifikasi untuk status sent/failed
  • Pantau kuota di Billing / Dashboard
  • Siapkan nomor admin untuk alert sistem
  • Rotate API key jika bocor

Butuh bantuan implementasi? Hubungi support Retention.id — kami bantu integrasi ke stack Anda.