Arsitektur

Cara AdOps menjalankan satu aturan

AdOps menjalankan aturan Meta Ads Anda lewat dua layanan: sebuah dispatcher bangun tiap 10 detik dan memilih aturan yang sudah jatuh tempo, lalu sebuah worker membaca metrik yang diminta tiap kondisi, melipatnya dengan logika AND atau OR Anda, menjalankan aksi yang Anda pilih, dan menulis satu catatan per campaign untuk setiap eksekusi.

Ada sembilan tahap antara detak jam yang membuat sebuah aturan jatuh tempo dan catatan yang menjelaskan apa yang terjadi pada tiap campaign. Halaman ini menelusuri kesembilannya, lengkap dengan angka yang membuatnya konkret.

Film 60 detik: satu aturan ditulis, dijalankan mesin AdOps, lalu dicatat hasilnya per kampanye. Tanpa suara. 1 min No sound

Alurnya

Dari detak jam sampai satu catatan tertulis.

Evaluasi aturan dibagi ke dua layanan yang dihubungkan antrean berbasis Redis. Dispatcher menentukan apa yang jatuh tempo dan menarik campaign-nya; worker membaca metrik dan menjalankan aksinya. Pemisahan inilah yang membuat satu ad account yang lambat tidak menahan aturan Anda yang lain.

  1. Sapuan mengambil aturan yang jatuh tempo

    Sebuah cron bangun tiap 10 detik dan mencari aturan berstatus ACTIVE, yang waktu eksekusi berikutnya sudah lewat, dan yang jendela tanggal mulai serta selesainya masih terbuka. Sapuan didaftarkan sedemikian rupa sehingga detak berikutnya tidak bisa mulai selagi sapuan sebelumnya masih berjalan.

    Tiap 10 dtk sapuan dispatch

  2. Meta hanya mengembalikan campaign yang masuk cakupan aturan

    Pre-filter aturan — id campaign, potongan nama campaign, atau effective status campaign — diserialisasi ke parameter filtering Graph API, jadi Meta yang mempersempit daftarnya sebelum apa pun melintas. Filter status diterjemahkan ke operator himpunan yang diminta Graph API.

    3 field pre-filter

  3. Semua halaman diikuti, pengambilan yang gagal diulang

    Entitas diminta 1.000 per halaman dan cursor paging tiap respons diikuti sampai Meta tidak mengembalikan halaman lagi. Pengambilan yang gagal diulang sampai total 3 percobaan, dengan jeda 1 detik lalu 2 detik. Kalau ketiganya gagal, ad account itu dilewati dan sisa aturan tetap berjalan.

    3 percobaan, jeda 1 dtk lalu 2 dtk

  4. Pekerjaan disebar, satu job per ad account

    Tiap ad account dalam aturan menjadi job tersendiri di antrean berbasis Redis, membawa semua yang dibutuhkan worker: access token, dokumen aturan, daftar entitas yang sudah diambil, id ad account, dan satu batch id untuk pengiriman itu.

    1 job per ad account

  5. Satu pembacaan Insights batch, tepat untuk metrik yang diminta

    Worker mengelompokkan kondisi task berdasarkan rentang laporan, menghapus duplikasi field Insights yang dibutuhkan tiap rentang, lalu mengirimkannya sebagai satu batch request Graph per campaign. Metrik yang bukan field Insights — jam, custom metric, daily budget, umur campaign — tidak ikut diambil di situ dan diselesaikan terpisah. Pembacaan batch dikirim dengan unified attribution setting.

    1 batch request per campaign

  6. Custom metric diselesaikan dari spreadsheet Anda

    Kondisi yang memakai custom metric diselesaikan lewat Google Sheet: id spreadsheet dan nama sheet yang Anda atur, satu kolom pencarian yang dicocokkan dengan id campaign, dan satu kolom nilai yang dibaca sebagai angkanya. Baris disimpan di memori selama 2 menit sejak akses terakhir, dengan salinan di MongoDB yang dipakai kalau pengambilan langsung gagal.

    2 menit cache sheet di memori

  7. Kondisi dilipat dengan AND atau OR

    Tiap kondisi diselesaikan menjadi angka lalu dibandingkan memakai salah satu dari enam operator, terhadap nilai tetap atau terhadap metrik lain yang boleh memakai rentang laporannya sendiri. Kondisi-kondisi task itu kemudian dilipat dengan operator grup yang Anda pilih, AND atau OR, menjadi satu hasil lolos atau tidak.

    6 operator, atas 45 metrik

  8. Aksi dijalankan lewat Graph API

    Sebelum bertindak, worker memeriksa cooldown task: kalau waktu eksekusi berikutnya pada hasil terakhir yang tereksekusi masih di depan, ia menulis catatan skipped lalu berhenti. Aksi budget dan nama membaca ulang daily budget atau nama terkini dari Meta sebelum menulis, dan perubahan budget dijepit ke batas atas atau batas bawah yang Anda tentukan alih-alih melewatinya.

    11 aksi yang bisa dijalankan satu task

  9. Eksekusinya dicatat

    Tiap campaign dan tiap task menghasilkan satu catatan eksekusi: aksinya, apakah tereksekusi, parameter yang dipakai, nilai sebelum dan sesudah ketika ada yang berubah, tiap kondisi lengkap dengan angka yang dilihat dan status lolosnya, lama tiap langkah internal dalam detik, dan waktu eksekusi berikutnya yang diizinkan. Tiap pengiriman juga menulis satu catatan batch berisi aturan, ad account, jumlah item, dan status eksekusinya.

    1 catatan per campaign, per task, per eksekusi

Dalam praktik

Arti tiap tahap buat Anda.

Sembilan tahap yang sama, dibaca dari luar — satu baris masing-masing, tanpa arsitektur.

Tahap Artinya buat Anda
Sapuan mengambil aturan yang jatuh tempo Aturan dengan interval rapat terambil dalam hitungan detik setelah jatuh tempo, dan sapuan yang lambat tidak pernah menjalankan aturan yang sama dua kali.
Meta hanya mengembalikan campaign yang masuk cakupan aturan Di akun dengan ribuan campaign, aturan yang dibatasi ke satu konvensi penamaan hanya pernah melihat campaign tersebut.
Semua halaman diikuti, pengambilan yang gagal diulang Galat sesaat di Graph API menghabiskan satu percobaan ulang, bukan satu eksekusi yang hilang — dan satu akun bermasalah tidak menghentikan akun lain.
Pekerjaan disebar, satu job per ad account Satu aturan bisa mencakup semua akun klien yang Anda kelola, dan tiap akun diproses sendiri tanpa menunggu yang lain.
Satu pembacaan Insights batch, tepat untuk metrik yang diminta Aturan yang membandingkan hari ini dengan 7 hari terakhir memakan satu request, bukan dua, dan ROAS yang terbaca sama dengan yang dilaporkan attribution window ad set Anda.
Custom metric diselesaikan dari spreadsheet Anda Target yang Anda simpan di sheet back-office sendiri — margin, stok, batas bawah ROAS per produk — bisa menggerakkan aturan tanpa diketik ulang ke dalamnya.
Kondisi dilipat dengan AND atau OR Anda bisa menulis “purchase ROAS 7 hari terakhir di bawah 1,2 DAN spend hari ini di atas Rp 500.000” dan membacanya lagi sebulan kemudian tanpa perlu menerjemahkan.
Aksi dijalankan lewat Graph API Aturan yang berjalan tiap 15 menit tetap hanya bisa menaikkan budget sekali sehari, dan tidak bisa menaikkan campaign melewati batas atas yang Anda pasang.
Eksekusinya dicatat Saat sebuah campaign dijeda, Anda bisa melihat kondisi mana yang melewati ambang mana, berapa angkanya, dan seperti apa budget atau namanya sebelum dan sesudah.

Penjadwalan

Bagaimana AdOps menentukan sebuah aturan jatuh tempo?

Tiap aturan menyimpan waktu eksekusi berikutnya miliknya sendiri. Dispatcher tidak menghitung ulang jadwal saat berjalan; ia membaca timestamp itu lalu bertindak.

Interval pemeriksaan, dalam menit
Eksekusi berikutnya adalah waktu sekarang ditambah interval aturan. Kalau intervalnya tidak diisi, aturan kembali ke 60 menit.
Timetable mingguan
Kisi tujuh hari berisi jam. Slot berikutnya di hari ini dipakai kalau masih ada; kalau tidak, pemindaian maju hari demi hari, mengurutkan slot hari itu, dan mengambil yang paling awal.
Tanggal mulai dan selesai
Kedua mode bisa membawa jendela tanggal. Aturan hanya berjalan selama hari ini ada di dalamnya, jadi aturan promo berhenti sendiri tanpa harus diingat.
Jam sebagai kondisi
Terpisah dari jadwal, sebuah kondisi bisa dibatasi pada jam tertentu dan pada sekumpulan hari — mekanisme yang dipakai template bawaan Night Budget Reset.
Sapuan dispatch
Tiap 10 detik detak tidak pernah tumpang tindih
Interval bawaan
60 menit kalau aturan tidak mengisinya
Rentang laporan
11 dipilih per kondisi
Cooldown aksi
11 15 menit sampai sekali seumur hidup
Timetable dayparting AdOps: grid jam terhadap tujuh hari, dengan jam siang terisi navy untuk semua hari serta jam malam dan sore akhir pekan dibiarkan kosong. Data contoh
Atau gambar jamnya. Apa pun di luar bentuk yang Anda isi tidak akan berjalan. Baca detailnya

Batasan

Yang tidak akan dilakukan engine atas inisiatifnya sendiri.

Otomasi yang membelanjakan uang butuh batas yang tetap berlaku sekalipun aturannya keliru. Batas berikut bersifat struktural, bukan pengaturan yang harus Anda ingat.

Dispatcher tidak bisa mengubah iklan
Layanan yang menentukan apa yang jatuh tempo hanya pernah mengirim permintaan baca ke Graph API. Semua perubahan budget, jeda, dan penggantian nama terjadi di worker terpisah, sehingga rilis dispatcher yang buruk tidak bisa mengubah campaign.
Tidak ada yang berjalan di ad account yang belum Anda aktifkan
Ad account yang ditemukan dari Meta disimpan dalam keadaan nonaktif. Sampai Anda menyalakannya, tidak ada aturan yang menargetkannya dan tidak ada spend yang dibaca darinya.
Cooldown diperiksa sebelum tiap aksi
Tiap task membawa action frequency-nya sendiri, dari 15 menit sampai sekali seumur hidup, terpisah dari seberapa sering aturannya dievaluasi.
Penulisan budget dijepit
Kenaikan berhenti di batas atas yang Anda tentukan dan penurunan berhenti di batas bawah, dengan menulis nilai batas alih-alih nilai proyeksinya.
Nilai terkini dibaca ulang sebelum ditulis
Aksi budget dan nama mengambil daily budget atau nama terkini dari Meta tepat sebelum mengubahnya, bukan mempercayai nilai yang dibawa job.
Skip dicatat, bukan ditelan
Ketika cooldown menahan sebuah aksi, engine menulis catatan skipped yang eksplisit berisi alasannya dan kapan aksi itu berikutnya diizinkan.
Satu kegagalan tidak menghentikan eksekusi
Campaign yang error dicatat dan batch-nya lanjut. Ad account yang pengambilannya gagal dilewati dan sisa aturan tetap berjalan.
Ada rem tingkat platform
Sebuah flag environment yang diperiksa di awal tiap sapuan membekukan semua aksi iklan otomatis, untuk dipakai saat ada insiden di Meta atau jendela maintenance.

Bukti

Apa yang bisa Anda periksa setelah satu eksekusi?

Satu catatan per campaign, per task, per eksekusi. Layar detail rule log menampilkannya field demi field.

Field Yang diberitahukannya
Executed, Not executed, Skipped Badge pada tiap task, lengkap dengan alasan skip kalau ada.
Parameter aksi Nilai persis yang dipakai aksi — tipe, jumlah, batas, pemisah, template nama.
Sebelum dan sesudah Nilai lama dan nilai baru untuk aksi yang mengubah budget atau nama.
Hasil kondisi Tiap kondisi beserta angka yang dilihat engine dan status lolosnya.
Waktu eksekusi Total waktu tersimpan pada tiap catatan; linimasa per langkah ditampilkan untuk akun ADMIN.
Eksekusi berikutnya Kapan task itu berikutnya diizinkan berjalan untuk campaign tersebut.
Batch id Id korelasi yang mengikat semua catatan dari satu pengiriman.
Satu run, tiga task, satu perubahan budget dari 150.000 menjadi 250.000. Log mencatat ketiganya, bukan hanya yang berjalan. Tanpa suara. 8 dtk No sound

Lihat sendiri di satu ad account.

Mulai dari template, arahkan ke satu akun, dan biarkan aturannya berstatus draft sampai angkanya terlihat benar. Tidak ada yang menyentuh campaign Anda sampai Anda menyetelnya live.

Baca halaman keamanan Lihat harga

Gratis 14 hari · tanpa kartu

Di dalam produk

Seperti apa layarnya sebenarnya

Sembilan layar dari dashboard yang berjalan — rule builder, metric picker, grid dayparting, dan log yang mencatat apa yang terjadi. Geser untuk melihat.

  • Performance Dashboard AdOps menampilkan kartu Purchase ROAS 2,380x dan Aggregated ROAS 2,088x yang keduanya berbadge Profitable, kartu Monthly Budget Rp 155jt, dan Spend Breakdown yang mengurutkan lima ad account teratas dengan bar budget utilization di 45,5 persen.
    Performance Dashboard. Dua angka ROAS hingga tiga desimal, meteran budget, dan spend yang diurutkan per ad account — untuk Today, Last 7 days, Last 30 days, atau This month.
  • Daftar rule AdOps menampilkan dua belas rule otomatisasi, masing-masing dengan toggle aktif/nonaktif, ad account yang dikelolanya, dan kapan terakhir kali dipicu — sebagian beberapa menit lalu, sebagian dengan timestamp bertanggal.
    Rule List. Semua rule, apa yang dikelolanya, dan kapan terakhir berjalan. Hanya toggle yang memisahkan draft dari live.
  • Condition builder AdOps menampilkan satu task dengan kondisi jam terhadap tujuh tag hari, satu grup AND bersarang berisi kondisi spend lifetime di bawah 400.000, dan task kedua dengan empat kondisi metrik bertumpuk.
    Kondisi. Metrik, periode, operator, nilai — digabung dengan AND atau OR dan bisa bersarang, sehingga satu rule bisa menyatakan hal yang tak bisa dinyatakan dropdown.
  • Pemilih metrik AdOps terbuka di atas satu baris kondisi: panel dengan tab Meta Ads dan Custom metrics, kotak pencarian, dan daftar metrik yang dapat digulir dengan Spend terpilih.
    Pemilih metrik. Empat puluh lima metrik Meta dan kolom sheet Anda sendiri dalam satu daftar, masing-masing membawa periode pelaporan dan enam pilihan operator.
  • Timetable dayparting AdOps: grid jam terhadap tujuh hari, dengan jam siang terisi navy untuk semua hari serta jam malam dan sore akhir pekan dibiarkan kosong.
    Grid dayparting. Atau gambar jamnya. Apa pun di luar bentuk yang Anda isi tidak akan berjalan.
  • Detail log eksekusi AdOps: satu campaign, dua panel aksi berbadge Not Executed, masing-masing memuat parameter aksi dan setiap kondisi yang dievaluasi beserta nilai aktual, nilai yang diharapkan, dan badge Pass atau Fail.
    Detail Rule Log. Alasan sebuah rule tidak melakukan apa-apa dicatat sama telitinya dengan alasan ia bertindak — aktual versus ekspektasi, kondisi demi kondisi.
  • Activity log AdOps memuat kenaikan budget dan penggantian nama campaign, tiap baris menyebut campaign yang terdampak lewat id-nya, rule penyebabnya, dan berapa lama lalu kejadiannya.
    Activity Log. Satu baris untuk setiap perubahan yang AdOps lakukan di akun Anda, menyebut campaign dan rule yang bertanggung jawab.
  • Daftar ad account AdOps: delapan belas ad account Meta dengan toggle aktif/nonaktif, id akun, badge Active atau Inactive, dan spend bulan ini dalam rupiah.
    Ad Accounts. Akun yang ditemukan dari Meta masuk dalam keadaan mati. Tidak ada yang dibaca, dan tidak ada yang diubah, sampai Anda menyalakannya.
  • Editor custom metric AdOps yang memetakan Google Spreadsheet: id spreadsheet, nama sheet, kolom untuk mencocokkan campaign, dan kolom yang memuat nilainya.
    Custom metric. Arahkan AdOps ke sebuah sheet, sebutkan kolom pencocok dan kolom nilainya, lalu angka Anda sendiri masuk ke daftar metrik.

Semua gambar dibangun ulang dari antarmuka produk dan diisi data fiktif — tidak ada nama pelanggan, ad account, atau angka spend asli di seluruh situs ini. Lihat cara satu run bekerja