Cara MASA bicara — di Splash, di Iuran, di Sedekah Subuh, di Error. Doc ini adalah kontrak operasional untuk designer, copywriter, marketer, dan dev yang menulis copy apa pun di produk MASA.
Lima karakter yang harus hadir bersama-sama di setiap copy. Bukan pilih salah satu — semua lima.
Detail tiap dimensi ada di Brand Strategy §6.
Menggurui — "Anda harus..." / "Jangan lupa..." / "Sudah sholat?"
Mengajak — "Mari kembali ke arah." / "Sudah waktunya, kak."
Terlalu formal religius — "Marilah kita menunaikan ibadah sholat..."
Hangat & ringan — "Subuh sebentar lagi. Sudah siap?"
Urgensi-paksa — "Segera donasi!!!" / "Jangan tunda kebaikan!"
Calm motivation — "Jaga kebiasaan baik hari ini."
Bahasa internal — "M-ID Anda terhubung dengan ekosistem MASA"
Bahasa user — "Akun Anda siap dipakai di semua layanan Muhammadiyah."
Startup-bro tone — "Yuk gas konsisten ibadahnya! 🔥"
Bijak yang mengerti — "Konsistensi tidak harus sempurna. Cukup mulai lagi."
Setiap pesan besar (hero, onboarding, campaign) mengikuti urutan empat-langkah. Dimulai dari masalah user, bukan dari fitur kita.
"MASA punya jadwal sholat lengkap untuk seluruh kota di Indonesia."
Feature dump · tidak ada Pain · tidak ada Outcome
"Sulit menjaga konsistensi ibadah di tengah kesibukan? MASA membantu kamu tetap terarah, dengan panduan terpercaya dalam satu aplikasi."
Pain (sulit konsisten) → Insight (kesibukan) → Guidance (panduan terpercaya) → Outcome (tetap terarah)
"Fitur QurbanMu memungkinkan pembayaran cicilan dan tracking distribusi real-time."
Mekanik · tidak ada emosi
"Mau kurban tapi cashflow belum siap? MASA membantu kamu kurban dengan pembayaran yang bisa diatur sesuai kemampuan — tetap tenang, tetap niat baik."
Pain (cashflow) → Insight (niat ada) → Guidance (pembayaran fleksibel) → Outcome (tenang)
"Aplikasi MASA dilengkapi fitur Sedekah Subuh dengan auto-debit harian dan streak tracker."
Sounds like Strava for charity · gamification overshadow trust
"Mau sedekah harian tapi sering lupa? MASA membantu kamu konsisten — nominal kecil, jendela waktu Subuh, disalurkan ke yang tepat. Hari demi hari, hidup lebih terarah."
Pain (lupa) → Insight (nominal kecil OK) → Guidance (otomatisasi tepat sasaran) → Outcome (hidup terarah)
Setiap fitur punya dua nama: impact-name (untuk hero, hook, marketing) dan feature-name (untuk button, nav, label fungsional). Tidak satu menggantikan yang lain — keduanya dipakai sesuai konteks.
| Konteks | Gunakan | Contoh |
|---|---|---|
| Hero / Splash / Marketing / Onboarding | Impact-name | "Panduan hidup harian" (bukan "Al-Qur'an") |
| Beranda hero zone (NOW · HABIT) | Impact-name | "Waktu kembali terarah" (di card jadwal sholat hero) |
| Bottom nav · Quick action grid · Button label | Feature-name | "Al-Qur'an" · "Sholat" · "Iuran" |
| Push notif (action-oriented) | Feature-name | "Subuh 04:42 di Yogyakarta" (clear, no metaphor) |
| Empty state / Discoverability | Impact-name | "Mulai bangun panduan hidup harian Anda." |
| Error message / System message | Feature-name | "Bayar Iuran KTAM gagal. Coba lagi." |
| ❌ JANGAN dipakai sendirian | ✓ Impact-name (hero) | Pilar | Feature-name (fungsional) |
|---|---|---|---|
| "Jadwal Sholat" | "Waktu untuk kembali terarah" | GUIDED | "Jadwal Sholat" (tetap, di nav) |
| "Al-Qur'an" / "Quran Digital" | "Panduan hidup harian" | GUIDED | "Al-Qur'an" (di nav, button) |
| "Doa & Dzikir" / "Kumpulan Doa" | "Penguat kehidupan" | GUIDED | "Doa" (di nav) |
| "Arah Kiblat" / "Kompas Kiblat" | "Penunjuk arah ibadah" | GUIDED | "Kiblat" (di nav) |
| "KTAM" sendiri | "Kartu kader Muhammadiyah" | TRUSTED | "e-KTAM" (di tab) |
| "Iuran KTAM" / "Iuran bulanan" | "Partisipasi sebagai kader" | TRUSTED | "Bayar Iuran" (di button) |
| "LazisMu" / "Donasi" | "Sedekah yang sampai" | TRUSTED · CONNECTED | "Sedekah" (di nav) |
| "Sedekah Subuh" | "Kebiasaan baik di awal hari" | CONSISTENT | "Sedekah Subuh" (di feature) |
| "Zakat Kalkulator" | "Tunaikan zakat dengan benar" | GUIDED · TRUSTED | "Zakat" (di nav) |
| "QurbanMu" | "Kurban yang sampai ke yang tepat" | TRUSTED · CONNECTED | "Qurban" (di nav) |
| "Streak ibadah" | "Konsistensi-mu" | CONSISTENT | "Streak: 7 hari" (di counter) |
| "M-ID" | "Identitas Muhammadiyah" | TRUSTED | "Login dengan M-ID" (di button) |
| "EventMu" / "Event" | "Komunitas yang menggerakkan" | CONNECTED | "Event" (di nav) |
| "BukuMu" | "Bacaan yang menguatkan" | GUIDED | "Buku" (di nav) |
| "ChatHPT" | "Tanya berdasar Putusan Tarjih" | TRUSTED · GUIDED | "ChatHPT" (di nav) |
quran.impact = "Panduan hidup harian" (untuk hero)quran.feature = "Al-Qur'an" (untuk nav)Tiap surface MASA punya nuansa tone yang sedikit berbeda. Tidak melanggar personality, tapi disesuaikan dengan moment.
Membuka percakapan · membangun trust dalam 2 detik
"Sudah 100 tahun Muhammadiyah membimbing umat. Sekarang, dalam satu aplikasi."
"Selamat datang di MASA SuperApp! Jelajahi fitur-fitur kami."
User merasa dilibatkan, bukan ditanyai
"MASA ingin menyesuaikan pengalaman-mu. Mana yang paling kamu rasakan?"
"Pilih kategori Anda untuk melanjutkan."
Memberitahu, bukan menyuruh
"Subuh sebentar lagi · 04:42 di Yogyakarta."
"⏰ Jangan lupa sholat Subuh! Sudah waktunya."
Mengingatkan tanpa menyombongkan amal
"Subuh hari ini sudah datang. Anda bisa lanjutkan kebiasaan baik kapan-pun siap."
"🔥 Streak 7 hari! Jangan sampai putus, sedekah sekarang!"
Reminder yang menunjukkan value, bukan tagihan
"Partisipasi-mu sebagai kader bulan Mei: Rp 25.000 · dipakai untuk dakwah, kaderisasi, dan amal usaha."
"Iuran KTAM Anda jatuh tempo! Bayar sekarang sebelum nunggak."
Mengajak sedekah dengan kejelasan, bukan rasa bersalah
"Sedekah-mu akan disalurkan oleh LazisMu — ke santri pondok pesantren binaan Muhammadiyah."
"Bantu sesama sekarang! Setiap rupiah berarti!!! 🙏"
Memberi arah selanjutnya, bukan menyalahkan
"Belum ada ayat yang ditandai. Saat membaca, ketuk ikon bookmark untuk menyimpan."
"Oops! Tidak ada data. Silakan tambahkan bookmark."
Konfirmasi yang membangun trust, bukan celebration berlebihan
"Pembayaran Iuran Mei selesai. Kuitansi tersedia di Profil > Riwayat."
"🎉 Selamat! Iuran Anda berhasil dibayar! Anda hebat!"
Sedekah Subuh punya bahaya bahasa lebih besar dari fitur lain: mekanika streak + amal harian bisa terbaca sebagai riya' (pamer amal). Voice harus privat default, tenang, dan menempatkan amal sebagai antara user dan Allah — bukan trophy.
"🔥 Streak 7 hari! Jangan sampai putus!"
Gamified · panic-inducing · riya'
"Konsistensi-mu hari ke-7. Privat — hanya kamu yang melihat."
Calm · privat default · acknowledge anti-riya'
"Streak Anda terputus 😢"
Shaming · membuat user merasa gagal
"Subuh besok adalah pintu baru. Kapan pun siap."
Forgiveness · anti-shaming · Islamic-aligned
"Pilih nominal donasi Anda hari ini:"
Transactional · seperti e-commerce
"Berapa yang ingin kamu sedekahkan hari ini? Tidak ada nominal yang terlalu kecil."
Permission · welcome small amounts
"Selamat! Kamu sudah sedekah Rp 5.000 hari ini! 🎉"
Celebration excessive · riya' implicit
"Tersimpan. Disalurkan oleh LazisMu ke santri pondok pesantren binaan Muhammadiyah."
Faktual · trust framing · impact tanpa pamer
Qurban Campaign menjual "kurban tanpa ribet": ketenangan hati, kemudahan pembayaran, kejelasan distribusi, rasa kontribusi nyata. Bukan menjual sapi/kambing.
Paylater — terdengar konsumtif, bukan ibadah"Kurban sekarang, bayar nanti" — implicit hutang untuk ibadah"Tanpa uang, tetap bisa kurban" — terkesan abuse niat baik"Kurban sekarang, bayar nanti dengan Paylater MASA!"
Terlarang · membuat ibadah jadi transaksi finansial
"Opsi pembayaran fleksibel untuk memudahkan ibadah kurban Anda."
Fleksibilitas sebagai enabler · niat baik tetap inti
"Tanpa uang, tetap bisa kurban!"
"Atur pembayaran sesuai kemampuan, tanpa mengurangi niat baik Anda."
"Pesanan Anda telah diproses. Status: shipped."
E-commerce voice
"Kurban kamu sudah disembelih di Pondok Pesantren Karangkajen, Yogyakarta. Foto distribusi akan dikirim setelah Idul Adha."
Trust framing · konkret lokasi · transparansi
Review user di Play Store: "Kalau bisa gak ada iuran bulanan." Friksi ini bukan karena angka — karena value tidak dirasakan. Voice Iuran harus menunjukkan untuk apa dana dipakai, bukan menagih.
"Iuran KTAM Anda jatuh tempo dalam 3 hari. Bayar sekarang!"
"Partisipasi-mu sebagai kader bulan Mei: Rp 25.000.
Dipakai untuk: dakwah, kaderisasi, dan amal usaha Muhammadiyah."
"Iuran bulan ini sudah dibayar. Terima kasih!"
"Iuran Mei selesai. KTAM-mu aktif sampai Juni. Lihat kuitansi →"
"Error: Cannot generate virtual account."
Technical · tidak ada arah
"Nomor rekening Iuran belum bisa dibuat sekarang. Coba lagi sebentar, atau bayar dengan QRIS."
Jujur · alternatif tersedia · tidak menyalahkan user
Error adalah moment paling rentan untuk kehilangan trust. Empat aturan:
"Error 500: Internal Server Error"
"Sambungan ke server terganggu sebentar. Coba lagi, atau cek koneksi Anda."
"Anda memasukkan format email yang salah."
"Format email belum lengkap. Contoh: nama@email.com"
"😢 Maaf, terjadi kesalahan."
"Tidak bisa dimuat sekarang. Coba lagi sebentar."
Notif adalah moment yang paling mengganggu user. Hak guna kita lebih ketat: 1 notif harus benar-benar memberi value. Tone: kalem, faktual, tidak guilt-trip.
Daftar microcopy yang dipakai berulang. Designer + dev bisa paste langsung.
| Konteks | Copy yang dipakai | Avoid |
|---|---|---|
| Primary CTA · payment | "Bayar Iuran Rp 25.000" | "Bayar Sekarang!" / "Lunasi Iuran" |
| Primary CTA · donasi | "Sedekah Rp 5.000" | "Donasi Sekarang" / "Salurkan Sekarang" |
| Continue button | "Lanjut" | "Berikutnya >>" / "Continue" |
| Confirm button | "Ya, lanjutkan" | "OK" / "Setuju!" |
| Cancel button | "Tutup" | "Batal" (terlalu menyerah) |
| Retry button | "Coba lagi" | "Refresh" / "Ulang" |
| Skip button | "Lewati untuk saat ini" | "Skip" / "Lewati" |
| Save (positional) | "Simpan posisi baca" | "Save" / "Bookmark" |
| Konteks | Title | Sub |
|---|---|---|
| Bookmark Qur'an kosong | "Belum ada ayat yang ditandai" | "Saat membaca, ketuk ikon bookmark untuk menyimpan." |
| Riwayat donasi kosong | "Mulai dari yang kecil" | "Sedekah pertama-mu bisa diatur kapan-pun siap." |
| Tidak ada event di ranting | "Belum ada event di ranting-mu" | "Kabari saya kalau ada — ranting Anda: Caturtunggal." |
| Notifikasi kosong | "Tenang dulu" | "Tidak ada pesan baru sekarang. Kembali nanti." |
| KHGT belum dipakai | "Mulai mencatat amalan" | "KHGT membantu kamu mencatat amalan harian dengan tenang." |
| Aksi selesai | Success message |
|---|---|
| Pembayaran Iuran | "Iuran Mei selesai. KTAM-mu aktif sampai Juni." |
| Sedekah Subuh | "Tersimpan. Disalurkan oleh LazisMu." |
| Bookmark ditambah | "Ayat disimpan. Lihat di Bookmark." |
| Profil di-update | "Profil tersimpan." |
| Daftar event | "Kamu terdaftar. Tiket di Profil > Event." |
| Permission | Primer copy MASA (sebelum OS) |
|---|---|
| Notifikasi | "Aktifkan notifikasi agar kami bisa mengingatkan waktu sholat dan kebiasaan baik harian-mu. Suara dan tampilan bisa kamu atur kapan saja." |
| Lokasi (untuk kiblat) | "Lokasi diperlukan untuk menghitung arah kiblat secara presisi. Hanya dipakai saat kompas terbuka." |
| Lokasi (jadwal sholat) | "Lokasi diperlukan agar jadwal sholat sesuai dengan kotamu." |
| Kamera (KTAM upload foto) | "Kamera diperlukan untuk verifikasi foto KTAM. Foto hanya disimpan di akun-mu." |
"Yuk" — kecuali sebagai bagian kalimat netral; jangan jadi opener startup-bro"Gas" · "Yuk gas" — startup-bro lexicon"Banget" dalam superlatif — "keren banget", "mudah banget" — terlalu informal"Segera" + emoji urgency 🔥 ⏰ ⚡ — high-pressure marketing"Klik di sini" — vague CTA"Oops" · "Maaf" di empty/error — tidak ada yang perlu meminta maaf"Selamat!" dengan exclamation + emoji 🎉 — celebration excessive"Loh" · "Kok" — informal partikel"Anda" di copy kasual (Sedekah, habit) — gunakan "kamu" · "Anda" hanya untuk formal (Iuran, kuitansi)"Paylater" — untuk konteks ibadah/kurban, lihat §8"Streak" sebagai noun utama — gunakan "konsistensi" sebagai impact, "streak" hanya di counterCopy disimpan di Laravel i18n (JSON). Designer hanya menulis copy Indonesia · translator handle Arabic/English jika dibutuhkan kemudian.
| Pattern | Contoh |
|---|---|
{feature}.{moment}.{type} | sedekah_subuh.reminder.title |
{feature}.impact (hero name) | quran.impact → "Panduan hidup harian" |
{feature}.feature (nav name) | quran.feature → "Al-Qur'an" |
cta.{action} (universal button) | cta.retry → "Coba lagi" |
empty.{context}.title | empty.bookmark.title → "Belum ada ayat yang ditandai" |
error.{code}.user_message | error.500.user_message → "Sambungan ke server terganggu sebentar." |
{
"code": "PAYMENT_VA_GENERATION_FAILED",
"user_message": "Nomor rekening belum bisa dibuat sekarang. Coba lagi sebentar.",
"dev_message": "Danamon VA API timeout after 3s retry",
"retryable": true,
"fallback": "QRIS"
}
User-facing message SUDAH sesuai voice MASA. Backend menulis pesan sesuai guide ini — bukan generic error code.
Di Fase 5 (Handoff Package), saya akan deliver copy-deck.json dengan ~200 key terstruktur. Tim Laravel paste ke resources/lang/id.json langsung. Sample shape:
{
"sedekah_subuh": {
"impact": "Kebiasaan baik di awal hari",
"feature": "Sedekah Subuh",
"reminder": {
"title": "Subuh sudah datang",
"body": "Anda bisa lanjutkan kebiasaan baik kapan-pun siap."
},
"streak_label": "Konsistensi-mu hari ke-{{n}}. Privat — hanya kamu yang melihat.",
"forgive_message": "Subuh besok adalah pintu baru. Kapan pun siap."
}
}
Akhir dokumen · Voice & Tone Guide v1 · MASA by LabMu