Mulai Cepat & Orientasi

Apa itu Notifora, cara mengirim notifikasi pertama dalam lima menit, dan konsep inti yang perlu dipahami.

#Pengenalan Notifora

Notifora adalah gateway notifikasi untuk developer. Satu API menggantikan banyak SDK: Anda mengirim satu event, Notifora yang menangani template, preferensi penerima, jeda waktu, percobaan ulang, dan pengalihan antar-channel.

ChannelProviderKeterangan
WhatsAppVexaHost WA GatewayNomor otomatis dinormalisasi ke format 62…
EmailPostivoTeks dan HTML, subject ber-template
TelegramTelegram Bot APIKirim ke chat_id subscriber
In-App InboxBawaanBell notifikasi real-time di aplikasi Anda

Yang Anda dapatkan: respons 202 Accepted cepat (event disimpan durable sebelum diproses), retry otomatis dengan backoff, fallback antar-channel, log pengiriman per pesan, dan webhook status ke server Anda.

#Quickstart: Kirim Notifikasi Pertama

Lima langkah dari akun kosong sampai pesan terkirim.

  1. Daftar di halaman pendaftaran. Workspace dengan environment DEVELOPMENT dan PRODUCTION dibuat otomatis.
  2. Hubungkan channel di Console → Channels (mis. WhatsApp VexaHost). Untuk mencoba tanpa provider, gunakan channel In-App yang selalu aktif.
  3. Buat workflow di Console → Workflows: beri nama dan trigger key (mis. order-confirmed), tambahkan step, lalu klik Publish.
  4. Buat API key di Console → Settings → API Keys. Key hanya ditampilkan sekali.
  5. Panggil API:
bash
curl -X POST https://api.notifora.my.id/v1/events/trigger \
  -H "Authorization: Bearer ntf_test_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "X-Idempotency-Key: order-9901" \
  -d '{
    "workflow": "order-confirmed",
    "to": { "subscriberId": "usr_102", "phone": "0812-3456-7890", "email": "[email protected]", "firstName": "Budi" },
    "payload": { "invoiceId": "INV-9901", "amount": 450000 }
  }'
php
use Illuminate\Support\Facades\Http;

$res = Http::withToken(config('services.notifora.key'))
    ->withHeaders(['X-Idempotency-Key' => 'order-9901'])
    ->post('https://api.notifora.my.id/v1/events/trigger', [
        'workflow' => 'order-confirmed',
        'to' => ['subscriberId' => 'usr_102', 'phone' => '0812-3456-7890', 'firstName' => 'Budi'],
        'payload' => ['invoiceId' => 'INV-9901', 'amount' => 450000],
    ]);

$res->throw();                       // 4xx/5xx -> exception
$eventId = $res->json('data.event_id');
javascript
const res = await fetch('https://api.notifora.my.id/v1/events/trigger', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.NOTIFORA_KEY}`,
    'Content-Type': 'application/json',
    'X-Idempotency-Key': 'order-9901',
  },
  body: JSON.stringify({
    workflow: 'order-confirmed',
    to: { subscriberId: 'usr_102', phone: '0812-3456-7890', firstName: 'Budi' },
    payload: { invoiceId: 'INV-9901', amount: 450000 },
  }),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const { data } = await res.json(); // data.event_id
python
import os, requests

r = requests.post(
    "https://api.notifora.my.id/v1/events/trigger",
    headers={"Authorization": f"Bearer {os.environ['NOTIFORA_KEY']}", "X-Idempotency-Key": "order-9901"},
    json={
        "workflow": "order-confirmed",
        "to": {"subscriberId": "usr_102", "phone": "0812-3456-7890", "firstName": "Budi"},
        "payload": {"invoiceId": "INV-9901", "amount": 450000},
    },
    timeout=10,
)
r.raise_for_status()
event_id = r.json()["data"]["event_id"]

Respons sukses:

202 Accepted
{
  "data": { "event_id": "01m5yemh4jpwr1caha7c396a9k", "status": "QUEUED", "workflow": "order-confirmed" },
  "meta": { "request_id": "req_mc0vfz44rnzuu4tj" }
}

Lihat hasilnya di Console → Message Logs, atau lewat GET /events/{id}.

#Konsep Inti

KonsepPenjelasan
WorkspaceOrganisasi/tim Anda. Memiliki anggota (Owner, Admin, Developer, Viewer), plan, dan penagihan.
EnvironmentDEVELOPMENT atau PRODUCTION. Subscriber, workflow, provider, dan API key tidak dibagi antar-environment.
SubscriberPenerima notifikasi, dikenali oleh subscriberId milik Anda. Menyimpan email, nomor telepon, chat Telegram, locale, dan data kustom.
WorkflowAlur notifikasi berurutan, dipicu oleh trigger key. Dipublish sebagai versi yang tidak bisa berubah.
StepCHANNEL (kirim), DELAY (tunggu), atau FILTER (kondisi).
EventSatu panggilan trigger. Satu event menjalankan satu eksekusi workflow. 1 event = 1 hitungan kuota (bukan per channel).
EksekusiJalannya workflow untuk satu event: status per step dan satu log per pengiriman channel.

Alur satu event

  1. API memvalidasi key, rate limit, kuota, dan idempotency, menyimpan event, lalu membalas 202.
  2. Worker menjalankan versi workflow yang berlaku saat event diterima (edit setelahnya tidak mengubah eksekusi yang sedang berjalan).
  3. Tiap step CHANNEL: cek preferensi subscriber → render template → kirim lewat provider → catat hasil.
  4. Status delivery lanjutan (Delivered/Read) masuk lewat webhook provider, dan callback ke server Anda dikirim bila Anda berlangganan.
Notifora Engineering Knowledge Base · Terakhir diperbarui: Oktober 2026 · Rilis v1.0 Kembali ke atas ↑

© 2026 notifora. All rights reserved. Created by notifora