10 Agu 2025·7 menit membaca

Skema CRM ringan untuk tim kecil yang tetap sederhana

Bangun skema CRM ringan yang menjaga Kontak, Kesepakatan, Aktivitas, dan izin tetap sederhana, sekaligus mendukung pelaporan yang andal dan alur kerja harian.

Skema CRM ringan untuk tim kecil yang tetap sederhana

Masalah yang harus dipecahkan oleh skema CRM ini

Tim kecil butuh CRM yang menjawab pertanyaan sehari-hari dengan cepat: siapa yang sedang kita hubungi, apa yang sedang kita coba selesaikan, apa yang terjadi terakhir, dan apa langkah berikutnya. Itulah tugas sebenarnya dari skema CRM ringan. Apa pun yang tidak mendukung pertanyaan itu biasanya hanya gangguan.

Tim kecil jarang butuh hirarki akun yang rumit, puluhan objek kustom, atau model scoring yang kompleks. Mereka butuh kepemilikan yang jelas, riwayat touchpoint yang sederhana, dan pipeline yang dipahami sama oleh semua orang.

“Keren” rusak ketika bergantung pada teks bebas dan duplikat. Jika satu orang menulis stage deal sebagai "Negotiation" dan orang lain menulis "negotiating", pelaporan menjadi tebak-tebakan. Jika aktivitas disimpan di tabel terpisah untuk panggilan, pertemuan, dan catatan, Anda akan berakhir dengan banyak field tanggal dan tidak ada nilai “last touched” yang andal.

Skema ini berpegang pada empat objek inti yang mencakup sebagian besar CRM tim kecil tanpa berubah jadi monster:

  • Contacts (dan opsional Organizations) sebagai orang yang Anda hubungi
  • Deals sebagai peluang yang Anda lacak melalui pipeline
  • Activities sebagai log tunggal untuk tugas, pertemuan, panggilan, dan catatan
  • Permissions sebagai aturan praktis tentang siapa yang bisa melihat dan mengubah apa

Pelaporan yang bersih berarti Anda bisa melihat deals berdasarkan stage minggu ini, tingkat konversi dari stage ke stage, rata-rata waktu di stage, aktivitas terakhir per deal, dan tugas terbuka setiap perwakilan untuk hari ini. Laporan itu harus tetap masuk akal ketika tim tumbuh dari 3 orang menjadi 15.

Jika Anda membangun CRM internal di alat no-code seperti AppMaster, pendekatan ini menjaga basis data kecil sambil tetap memberi angka yang stabil untuk dashboard dan review mingguan.

Prinsip agar tetap ringan tanpa membatasi

Skema CRM ringan bekerja ketika menjawab satu pertanyaan dengan jelas: fakta ini disimpan di mana? Jika “kebenaran” yang sama bisa disimpan di dua tempat, itu akan terjadi, dan laporan Anda akan melenceng.

Pilih sekumpulan kecil objek sumber-kebenaran dan buat semuanya menunjuk ke sana. Untuk sebagian besar tim kecil, itu berarti Contacts, Organizations (opsional), Deals, dan Activities. Saat Anda butuh detail lebih, tambahkan tabel baru daripada menjejalkan makna ke dalam satu field teks yang berubah jadi laci sampah.

Beberapa aturan menjaga model tetap sederhana dan fleksibel:

  • Satu fakta, satu rumah: nomor telepon milik Contact, nilai deal milik Deal.
  • Lebih suka tabel eksplisit daripada field yang kelebihan muatan: riwayat stage bukan string yang dipisah koma.
  • Jaga ID stabil dan nama bisa diedit: orang mengganti nama perusahaan, mereka tidak mengganti primary key.
  • Pisahkan “status” dari “jenis”: sebuah tugas bisa “open” dan sekaligus “call”.
  • Anggap impor akan berantakan: kosong, duplikat, dan format aneh itu normal.

Rencanakan untuk data berantakan sejak hari pertama dengan menambahkan beberapa field membosankan tapi kuat: created_at, updated_at, dan external_id sederhana (atau import_source + import_key) pada tabel inti Anda. Itu memberi cara aman untuk mengimpor ulang tanpa membuat duplikat.

Contoh konkret: Anda mengimpor spreadsheet di mana “Acme Inc.” muncul sebagai “ACME” di setengah baris. Jika Organization.name bisa diedit dan Organization.id stabil, Anda bisa menggabungkan record nanti tanpa merusak deals dan activities yang sudah ada.

Contacts dan organizations: struktur paling sederhana yang bekerja

Skema CRM ringan dimulai dengan satu keputusan: apakah Anda melacak hanya orang, atau orang plus perusahaan? Jika tim Anda menjual ke bisnis, Anda hampir selalu menginginkan baik Contact (orang) maupun Organization (perusahaan). Jika Anda menjual ke konsumen, Anda bisa melewatkan organizations sama sekali dan menyimpan setiap record sebagai contact.

Untuk setup B2B, jaga relasi sederhana: setiap contact memiliki satu organisasi utama (nullable), dan sebuah organization dapat memiliki banyak contacts. Ini mencakup sebagian besar alur kerja tim kecil tanpa mendorong Anda ke hirarki akun yang rumit.

Jaga field wajib seminimal mungkin

Cara tercepat membuat data berantakan adalah membuat terlalu banyak field wajib. Baseline yang baik adalah:

  • Contact: id, name (atau first_name + last_name), created_at
  • Organization: id, name, created_at

Segala hal lain (jabatan, website, alamat, industri, sumber) bisa opsional. Anda bisa menambahkan aturan nanti, tapi sulit membersihkan basis data penuh placeholder seperti "N/A".

Email dan telepon: unik tanpa masalah

Memaksa email unik itu menggoda. Itu bekerja baik untuk B2C, atau untuk CRM yang juga berfungsi sebagai sistem login. Di tim B2B kecil, inbox bersama (sales@, info@) dan nomor telepon yang dipakai ulang biasa terjadi. Aturan unik yang keras bisa memblokir record valid.

Kompromi praktis:

  • Terapkan keunikan hanya ketika nilai hadir (dan hanya jika sesuai kasus penggunaan Anda).
  • Izinkan duplikat, tapi tunjukkan peringatan lunak di UI saat ditemukan kecocokan.

Jika Anda butuh multiple email atau nomor telepon, hindari menambah kolom seperti email_2 atau phone_3. Gunakan tabel terpisah saja (misalnya ContactMethod dengan type, value, is_primary). Pelaporan tetap bersih dan model skala secara alami.

Contoh: tim Anda bertemu Pat, yang berganti pekerjaan di tengah kuartal. Dengan Contact terkait Organization, Anda bisa memindahkan Pat ke perusahaan baru, menyimpan metode kontak lama untuk riwayat, dan laporan masih menghitung deals per perusahaan dengan benar.

Deals dan pipeline: struktur yang tetap terbaca

Deal adalah unit forecast Anda: satu potensi pembelian dengan langkah berikutnya yang jelas. Jaga record deal kecil, dan referensikan semuanya.

Mulai dengan field yang bisa Anda jelaskan ke siapa pun di tim:

  • Deal name: label singkat yang masuk akal di daftar
  • Stage: referensi ke pipeline stage (jangan diketik bebas)
  • Value: jumlah yang diharapkan (dan pilih satu mata uang untuk seluruh sistem)
  • Owner: orang yang bertanggung jawab untuk menggerakkan deal
  • Close date: tebakan terbaik saat ini kapan akan closing

Untuk relasi, pilih satu primary contact pada deal. Itu menjaga pelaporan sederhana (misalnya, pendapatan per contact, win rate per segmen). Jika terkadang butuh lebih banyak orang terlibat, tambahkan tabel deal_contacts sehingga Anda bisa melampirkan kontak tambahan tanpa membuat setiap deal jadi many-to-many yang rumit. Sebagian besar tim kecil baik-baik saja dengan 1 primary contact plus peserta opsional.

Stage adalah tempat CRM sering berantakan. Jangan simpan stage sebagai teks bebas. Simpan stages sebagai data referensi agar Anda bisa mengganti nama stage nanti tanpa merusak laporan. Tabel stage minimal bisa berisi:

  • stage_id
  • pipeline_id
  • stage_name
  • stage_order
  • is_closed (atau flag terpisah untuk won dan lost)

Jika tim Anda kecil, hindari memisah record menjadi “lead” dan “deal” kecuali Anda benar-benar mengelola lead secara berbeda. Aturan sederhana bekerja: ketika Anda punya peluang riil yang layak dilacak, itu deal. Sebelumnya, simpan sebagai contact dengan status seperti “new” atau “nurture”. Ini menjaga pipeline terbaca dan menghentikan setengah-deal yang dibuat dari mencemari angka Anda.

Contoh: tim sales dua orang melacak “Acme Renewal” sebagai deal milik Sam, stage “Proposal Sent”, nilai 12.000, close date bulan depan. Primary contact adalah pembeli, dan kontak kedua ditambahkan sebagai approver keuangan. Laporan tetap konsisten karena nama dan urutan stage tetap sama.

Activities: satu model untuk tugas, pertemuan, dan catatan

Build your CRM schema fast
Modelkan Contacts, Deals, dan Activities dalam hitungan menit dengan skema PostgreSQL yang rapi.
Coba AppMaster

Tim kecil tidak perlu tabel terpisah untuk panggilan, email, pertemuan, dan catatan. Satu model Activity biasanya cukup, dan membuat CRM lebih mudah digunakan serta lebih mudah dilaporkan.

Satu tabel Activity

Gunakan satu record per kejadian (atau yang harus terjadi). Beri field type sederhana dengan set kecil, seperti: call, email, meeting, note, task. Jaga daftarnya pendek agar orang memilih kata yang sama setiap kali.

Untuk menghubungkan aktivitas tanpa kebingungan, gunakan aturan yang jelas:

  • Jika tentang seseorang (follow-up call, intro email), tautkan ke contact.
  • Jika tentang pergerakan pendapatan (pricing call, negotiation meeting), tautkan ke deal.
  • Jika benar-benar melibatkan keduanya, tautkan ke keduanya, tapi anggap deal sebagai primer untuk pelaporan pipeline.

Dalam praktiknya, Activity bisa punya contact_id (nullable) dan deal_id (nullable), plus owner_id opsional (siapa yang bertanggung jawab).

Timestamp yang ramah pelaporan

Simpan baik due_at dan completed_at. Mereka menjawab pertanyaan berbeda. due_at memberi tahu apa yang seharusnya terjadi (perencanaan dan beban kerja). completed_at memberi tahu apa yang benar-benar terjadi (eksekusi dan cycle time).

Anda bisa menurunkan status tanpa field terpisah: jika completed_at diisi, berarti selesai. Jika tidak, berarti terbuka. Itu menghindari nilai status tambahan yang mudah meleset.

Untuk teks aktivitas, simpan satu field yang bisa dicari seperti summary atau body. Hindari menstrukturkan catatan terlalu dini. Contoh: "Call with Maya: confirmed budget, send proposal Friday." Tambahkan field khusus nanti hanya saat Anda benar-benar merasa perlu.

Kepemilikan dan visibilitas: jaga yang praktis

Kepemilikan adalah siapa yang bertanggung jawab untuk langkah berikutnya. Dalam skema CRM ringan, itu biasanya satu field seperti owner_user_id pada deal (dan sering juga pada contacts).

Dua makna “owner” sering tercampur: penugasan user (orang spesifik) dan penugasan tim (grup). Jika Anda mencoba membuat semuanya team-owned sejak awal, Anda kehilangan kejelasan siapa yang harus bertindak hari ini.

Default yang bekerja untuk sebagian besar tim kecil adalah: semuanya terlihat oleh semua orang, tetapi setiap deal punya tepat satu owner. Kolaborasi tetap mudah, dan Anda menghindari kasus ujung izin saat seseorang perlu cover rekan.

Saat Anda butuh visibilitas lebih ketat, jaga sebagai satu saklar, bukan matriks kompleks. Misalnya, tambahkan field visibility pada deals dan activities dengan nilai seperti public dan private, di mana private berarti "hanya owner (dan admin) yang bisa melihat."

Anda hanya butuh teams atau territories saat salah satu ini benar:

  • Anda punya grup terpisah yang tidak boleh melihat deals satu sama lain.
  • Anda melaporkan performa berdasarkan tim dan orang berpindah antar tim.
  • Manajer butuh akses ke grup mereka, tapi bukan seluruh perusahaan.
  • Anda menugaskan leads ke antrian bersama sebelum seorang rep mengklaimnya.

Kepemilikan memengaruhi pelaporan. Jika Anda mau angka "per rep" yang bersih, laporkan berdasarkan owner_user_id saat ini di deal. Jika juga ingin rollup "per tim", tambahkan owner_team_id (atau turunkan dari profil owner), tapi jelaskan mana yang jadi sumber kebenaran.

Contoh: dua rep berbagi inbox. Deal baru dimulai tanpa penugasan dengan owner_user_id = null dan owner_team_id = Sales. Setelah Alex mengambilnya, set owner_user_id = Alex (tetap team sebagai Sales). Pipeline tetap terbaca, dan total tim masih berfungsi.

Desain permissions: kontrol yang cukup tanpa kompleksitas

Add practical permissions
Mulai dengan RBAC sederhana agar orang bisa bekerja tanpa masalah izin.
Buat peran

Mulai dengan RBAC sederhana

Permissions bekerja paling baik saat Anda memisahkan tiga ide: roles (siapa), resources (apa), dan actions (apa yang bisa dilakukan). Itu role-based access control (RBAC), dan tetap bisa dipahami saat tim Anda tumbuh.

Jaga resources dekat dengan objek inti Anda: Contacts, Organizations, Deals, Activities, dan mungkin Pipelines (jika stages bisa diedit). Definisikan set aksi kecil dan konsisten di antara mereka: view, create, edit, delete, export.

Export layak dipisah. Banyak tim oke dengan hak view yang luas, tapi ingin membatasi pengambilan data massal.

Permissions tingkat objek adalah tempat termudah untuk mulai: "Bisakah role ini mengedit deals sama sekali?" Untuk sebagian besar tim kecil, itu cukup untuk beberapa bulan. Aturan tingkat record (per contact atau per deal) adalah tempat kompleksitas muncul, jadi tambahkan hanya saat benar-benar perlu.

Langkah praktis pertama adalah aturan kepemilikan tunggal: setiap record punya owner_user_id, dan non-admin hanya bisa mengedit yang mereka miliki. Jika perlu satu lapis lagi, tambahkan team_id dan izinkan view tingkat tim sambil menjaga edit hanya milik owner.

Aturan tingkat record saat benar-benar perlu

Tambahkan permission tingkat record untuk kasus seperti:

  • Sales reps tidak boleh melihat deals satu sama lain
  • Support bisa melihat deals tapi tidak pernah mengeditnya
  • Manajer bisa melihat semua dan menugaskan ulang owner

Jaga kebutuhan audit ringan tetapi nyata. Tambahkan created_at, created_by, updated_at, dan updated_by ke setiap tabel utama. Jika butuh riwayat lebih dalam nanti, tambahkan tabel audit_log kecil dengan: object type, record id, action, siapa, kapan, dan JSON singkat dari field yang diubah.

Langkah demi langkah: bangun skema dalam akhir pekan

Make reporting simple
Dapatkan deals berdasarkan stage, aktivitas yang lewat tenggat, dan last touch tanpa join yang berantakan.
Buat dashboard

Ini paling mudah dilakukan dengan memperlakukannya seperti produk kecil: definisikan data dulu, buktikan bekerja dengan entri nyata, lalu bangun layar.

Hari 1: kunci model data

Mulai dengan sketsa ERD cepat di kertas atau papan tulis. Jaga jumlah tabel kecil, tapi jelas tentang tautan: contact milik organization (opsional), deal milik pipeline dan punya owner, activity bisa berhubungan ke contact dan/atau deal.

Lalu lakukan dasar-dasarnya dalam urutan:

  • Definisikan objek dan relasi: contacts, organizations, deals, activities, users/roles, plus tabel lookup kecil jika perlu.
  • Definisikan field wajib dan default: buat created_at, owner_id, dan nama kunci wajib; set default untuk stage dan currency jika Anda menggunakan jumlah.
  • Definisikan enum atau tabel lookup: deal stages dan activity types supaya pelaporan tetap konsisten.
  • Tambahkan indeks untuk filter umum: owner_id, stage, due_at, created_at, dan foreign key yang Anda filter setiap hari.
  • Uji dengan 20 record nyata: gunakan nama, tanggal, dan catatan berantakan untuk melihat apa yang rusak.

Hari 2: buktikan bisa dilaporkan dengan bersih

Sebelum membangun form, tuliskan 6-8 pertanyaan yang tim Anda tanyakan setiap minggu. Misalnya: "Deals in Negotiation by owner", "Overdue activities", "New contacts this month", "Won revenue by month". Jika sebuah pertanyaan butuh join yang membingungkan atau kasus khusus, perbaiki skema sekarang.

Skenario uji sederhana membantu: tambahkan 3 contact di satu perusahaan, 2 deal di stage berbeda, dan 6 activity di antaranya (sebuah panggilan, sebuah pertemuan, dua tugas, dan dua catatan). Lalu cek apakah Anda bisa menjawab siapa pemiliknya, apa langkah berikutnya, dan apa yang berubah minggu lalu tanpa menebak.

Setelah data solid, bangun UI dan automasi terakhir. Anda akan bergerak lebih cepat dan tidak perlu menulis ulang sejarah nanti agar laporan cocok dengan realita.

Kesalahan umum yang membuat pelaporan berantakan

Pelaporan berantakan biasanya dimulai dengan “perbaikan cepat” yang terasa lebih cepat hari ini tetapi membebani Anda setiap minggu setelahnya. Skema CRM ringan bekerja terbaik saat data Anda punya bentuk yang jelas dan beberapa aturan yang benar-benar diikuti tim.

Perangkap umum adalah memaksa semuanya ke satu tabel “customer”. Kedengarannya sederhana sampai Anda perlu menjawab pertanyaan dasar seperti "Berapa banyak deals yang terkait ke satu perusahaan?" atau "Siapa yang berganti pekerjaan?" Pisahkan orang (contacts) dan perusahaan (organizations), lalu hubungkan mereka.

Pembunuh pelaporan lain adalah membiarkan deal stages sebagai teks bebas. Jika satu orang mengetik "Negotiation" dan yang lain mengetik "negotiating", grafik pipeline Anda sudah salah. Gunakan daftar stage tetap (atau tabel stage) sehingga setiap deal menunjuk ke set yang sama.

Hindari mengepak beberapa nilai ke satu field. Email atau nomor telepon yang dipisah koma membuat pencarian, deduplikasi, dan ekspor menjadi menyakitkan. Jika benar-benar butuh beberapa nilai, simpan sebagai baris terpisah (misalnya, satu email per record di tabel anak).

Activities jadi berantakan ketika tanggal tidak jelas. Satu field "date" tidak bisa memberi tahu apakah sebuah tugas jatuh tempo Jumat lalu atau diselesaikan Jumat lalu. Pisahkan konsep itu supaya Anda bisa melaporkan pekerjaan overdue dan pekerjaan yang selesai dengan benar.

Berikut checklist cepat untuk “menyelamatkan Anda di masa depan”:

  • Pisahkan contacts dan organizations, lalu hubungkan mereka
  • Gunakan stage ID, bukan nama stage yang diketik
  • Satu nilai per field; gunakan tabel anak untuk multipel
  • Jaga due_at dan completed_at sebagai field terpisah
  • Mulai dengan peran sederhana; tambahkan aturan tingkat record hanya setelah melihat alur kerja nyata

Contoh: jika tim Anda mencatat panggilan sebagai catatan lalu menandainya “done” dengan mengubah field yang sama, Anda tidak bisa melaporkan berapa lama follow-up berlangsung. Dengan field terpisah, laporan itu sederhana.

Checklist cepat sebelum Anda mengunci skema

Create a lightweight CRM
Ubah model empat-tabel ini menjadi CRM internal yang bekerja tanpa menulis kode.
Mulai membangun

Sebelum membangun layar, automasi, dan dashboard, lakukan pemeriksaan pelaporan dan aturan cepat. Skema CRM ringan tetap ringan hanya jika Anda bisa menjawab pertanyaan umum tanpa hacks kustom atau field sekali pakai.

Jalankan pengecekan ini menggunakan data contoh nyata (bahkan 20 contacts dan 10 deals sudah cukup). Jika Anda terhenti, biasanya berarti field hilang, picklist tidak konsisten, atau relasi terlalu longgar.

5 pengecekan yang menangkap sebagian besar masalah

  • Dasar pelaporan: bisakah Anda mengelompokkan deals berdasarkan stage, owner, dan bulan penutupan tanpa menebak field tanggal mana yang digunakan?
  • Manajemen kerja: bisakah Anda menarik "overdue activities by owner" dalam satu laporan, di mana overdue berdasarkan satu due date dan status selesai yang jelas?
  • Contact ke organization: bisakah contact ada tanpa organization, dan bisa terhubung kemudian tanpa merusak riwayat (email, catatan, partisipasi deal)?
  • Konsistensi: apakah stages dan activity types berasal dari daftar tetap, sehingga Anda tidak berakhir dengan "Follow up", "Follow-up", dan "Followup" sebagai tiga nilai berbeda?
  • Keamanan: bisakah Anda membatasi siapa yang bisa menghapus record atau mengekspor daftar, tanpa memblokir update normal seperti memindahkan deal ke stage berikutnya?

Jika Anda bisa menjawab "ya" untuk kelima hal tersebut, Anda sudah di posisi yang baik. Jika tidak, perbaiki sekarang sementara skema masih kecil.

Tip praktis: definisikan stages dan activity types sekali (sebagai tabel atau enum) dan gunakan kembali sehingga setiap layar dan proses memakai nilai yang sama.

Contoh realistis tim kecil dan langkah berikutnya

Agensi 5 orang adalah tes yang baik untuk skema CRM ringan. Tim sibuk, leads datang dari mana-mana, dan tak seorang pun ingin mengurus data. Bayangkan: 1 admin, 2 sales, 1 ops lead, dan 1 rekan read-only (founder yang hanya melihat angka).

Permintaan inbound baru datang (form web atau email): "Butuh refresh website, anggaran $15k, timeline 6 minggu." Aturannya sederhana: buat satu organization (jika itu perusahaan) dan satu contact (orangnya). Lalu buat deal terkait organization, dengan contact sebagai primary contact untuk deal itu.

Untuk mempercepat, mereka menggunakan checklist intake kecil:

  • Jika domain atau nama perusahaan cocok organization yang ada, gunakan ulang.
  • Jika email orang itu ada, gunakan kembali contact tersebut.
  • Selalu buat deal untuk intent pembelian nyata.
  • Simpan pesan asli di deskripsi deal.
  • Tambahkan sumber (referral, form, outbound) sebagai satu field.

Activities mencegah panggilan terlewat karena setiap langkah berikutnya menjadi item bertanggal yang dimiliki seseorang. Saat sales punya discovery call, mereka mencatat satu activity sebagai meeting dan menambahkan langkah berikutnya segera: panggilan dua hari kemudian. Jika ops butuh detail untuk scope kerja, mereka membuat task activity pada deal yang sama sehingga muncul di satu tempat.

Peran tetap praktis: Admin bisa mengedit semua dan mengelola pengaturan, Sales bisa membuat dan memperbarui contacts, deals, dan activities mereka, Ops bisa memperbarui field delivery dan activities, dan Read-only bisa melihat pipeline dan laporan tanpa mengubah data.

Jika Anda ingin mengubah ini menjadi alat internal yang bekerja cepat, AppMaster (appmaster.io) adalah opsi langsung: Anda bisa memodelkan skema di Data Designer-nya (PostgreSQL), menambahkan aturan workflow di Business Process editor, membangun inbox lead sederhana dan halaman deal, lalu deploy ke AppMaster Cloud atau cloud Anda sendiri saat siap membagikannya dengan tim.

FAQ

What’s the simplest CRM schema a small team can start with?

Mulailah dengan empat objek inti: Contacts (orang), Organizations (perusahaan opsional), Deals (peluang), dan Activities (log terpadu). Jika setiap pertanyaan tim Anda dapat dipetakan ke salah satu dari itu, Anda akan tetap cepat tanpa merusak pelaporan.

Do I really need an Organizations table, or can I track people only?

Catat organizations jika Anda menjual ke bisnis (B2B) dan membutuhkan pelaporan per perusahaan, atau ketika beberapa kontak bisa berada pada customer yang sama. Lewati organizations untuk B2C atau ketika “orang” saja yang Anda layani, dan simpan semuanya di Contacts.

Why shouldn’t deal stages be a free-text field?

Hindari teks bebas untuk stage karena perbedaan ejaan dan penamaan akan merusak dashboard. Gunakan daftar tetap (tabel stages) dan simpan stage ID pada setiap deal sehingga Anda bisa mengganti nama stage nanti tanpa merusak data historis.

What fields should be required on Contacts, Organizations, and Deals?

Jaga field wajib seminimal mungkin: sebuah ID, nama, dan created_at untuk contacts dan organizations, plus field inti deal seperti stage, owner, value, dan close date. Field opsional boleh banyak, tetapi terlalu banyak input wajib memicu nilai sampah seperti “N/A.”

How do I handle duplicate contacts and messy imports?

Jangan memblokir duplikat dengan keras kecuali Anda yakin itu cocok dengan alur kerja Anda. Default praktis adalah membiarkan duplikat tetapi menampilkan peringatan saat email atau telepon serupa ditemukan, dan menambahkan external_id (atau kunci impor) sehingga re-import tidak membuat record ekstra.

Should calls, meetings, notes, and tasks be separate tables?

Gunakan satu tabel Activity dengan type kecil dan tetap seperti call, email, meeting, note, task. Ini membuat "last touched", pekerjaan yang lewat tenggat, dan riwayat aktivitas konsisten karena semuanya berbagi timestamp dan struktur yang sama.

Why do I need both due_at and completed_at on activities?

Simpan kedua field due_at dan completed_at karena mereka menjawab pertanyaan berbeda. due_at untuk perencanaan dan laporan overdue, sedangkan completed_at untuk eksekusi dan analisis cycle time; menggabungkannya merusak kedua jenis laporan tersebut.

How should a Deal relate to Contacts (one or many)?

Default-nya satu primary contact per deal agar pelaporan tetap jelas dan UI tetap sederhana. Jika kadang perlu orang tambahan, tambahkan tabel deal_contacts untuk peserta tanpa mengubah setiap deal menjadi many-to-many yang rumit dari hari pertama.

What’s a practical ownership and visibility model for small teams?

Default yang baik: semuanya terlihat oleh semua orang, tetapi setiap deal punya tepat satu owner yang bertanggung jawab untuk langkah berikutnya. Jika perlu privasi nanti, tambahkan field visibility sederhana seperti public/private daripada membangun matriks izin yang rumit dari awal.

What’s the fastest way to build and validate this schema in AppMaster?

Modelnya: rancang tabel dulu, lalu uji dengan data contoh nyata sebelum membuat layar. Jika Anda tidak bisa dengan mudah menjawab pertanyaan umum seperti deals by stage, overdue activities, dan last activity per deal, perbaiki skema saat masih kecil.

Mudah untuk memulai
Ciptakan sesuatu yang menakjubkan

Eksperimen dengan AppMaster dengan paket gratis.
Saat Anda siap, Anda dapat memilih langganan yang tepat.

Memulai