Mengirim Pengingat Keranjang yang Diabaikan dengan SendGrid
Made by Twilio
Mengamati koleksi keranjang dan melacak waktu pembaruan terakhir suatu objek keranjang. Ketika sudah melewati periode tertentu, kirimkan email kepada pengguna berdasarkan Template Dinamis SendGrid.
Cara kerja ekstensi ini
Gunakan ekstensi ini untuk mengotomatiskan pengiriman email pengingat kepada pengguna tentang item yang mereka tinggalkan di keranjang belanja mereka.
Ekstensi ini akan mengamati dokumen yang ditambahkan ke koleksi Cloud Firestore tertentu. Untuk setiap dokumen, ekstensi mencatat waktu pembaruan terakhir dari dokumen tersebut. Lalu, ketika waktu pembaruan terakhir melewati batas yang dapat dikonfigurasi, informasi di dalam dokumen disalin ke koleksi baru yang memicu email menggunakan SendGrid API Twilio. Informasi di dalam dokumen dikirim sebagai data template untuk email transaksional dinamis.
Penyiapan tambahan
Sebelum menginstal ekstensi ini, pastikan:
- Anda telah menyiapkan database Cloud Firestore di project Firebase
- Anda telah menyiapkan Firebase Authentication di project Firebase
- Anda telah mendaftar untuk akun Kampanye Pemasaran SendGrid Twilio
- Anda telah membuat Kunci API SendGrid dengan akses untuk mengirim email
- Anda telah memverifikasi alamat email pengirim tunggal atau menyiapkan autentikasi domain dengan SendGrid
- Anda telah menyiapkan template transaksional dinamis yang digunakan untuk mengirim email
Indeks Firestore
Ekstensi ini memerlukan indeks komposit Firestore. Anda dapat menambahkan indeks di Firebase console atau melalui command line.
Indeks di Firebase console
- Buka bagian Cloud Firestore di Firebase console
- Buka tab Indexes dan klik Add Index
- Masukkan nama koleksi untuk koleksi keranjang Anda
- Tambahkan kolom berikut ke indeks:
metadata.emailSent
- Ascendingmetadata.error
- Ascendingmetadata.lastUpdated
- Ascending- Tetapkan Query scopes ke Collection
- Klik Create
Indeks dengan Firebase CLI
- Di project Firebase Anda, buka file konfigurasi indeks, dengan nama file default
firestore.indexes.json
-
Tambahkan objek berikut ke array
indexes
:json { "collectionGroup": "cart", "queryScope": "COLLECTION", "fields": [ { "fieldPath": "metadata.emailSent", "order": "ASCENDING" }, { "fieldPath": "metadata.error", "order": "ASCENDING" }, { "fieldPath": "metadata.lastUpdated", "order": "ASCENDING" } ] }
Nama
collectionGroup
harus merupakan nama koleksi untuk koleksi keranjang Anda. 1. Deploy konfigurasi indeks Anda dengan perintahfirebase deploy
. Jika Anda hanya ingin men-deploy indeks, tambahkan flag--only firestore:indexes
.
Cara kerja
Keranjang belanja
Satu keranjang belanja seharusnya diterapkan sebagai satu dokumen per keranjang. Anda dapat bebas menyimpan item di dalam dokumen dengan cara apa pun, tetapi properti array yang bernama items
yang berisi informasi tentang masing-masing item di dalam keranjang biasa digunakan. Dokumen juga harus memiliki referensi ke Pengguna Firebase Authentication, ID dokumen keranjang harus cocok dengan ID pengguna atau harus ada properti userId
di dokumen. Saat Anda membuat dokumen keranjang atau memperbarui properti di dokumen keranjang, ekstensi akan memperbarui stempel waktu metadata.lastUpdated
.
Memeriksa keranjang
Sebuah fungsi akan berjalan secara berkala untuk menentukan apakah ada keranjang yang diabaikan dan Anda harus mengirim email. Anda dapat mengonfigurasikan periode waktu dengan CART_CHECK_INTERVAL
menggunakan cron.yaml syntax.
Ada beberapa persyaratan yang harus dipenuhi sebuah dokumen keranjang sebelum diproses ke tahap berikutnya:
- stempel waktu
metadata.lastUpdated
harus lebih lama daripada waktuABANDONED_TIMEOUT
dalam menit yang dapat dikonfigurasi - properti boolean
metadata.emailSent
harus berupafalse
- harus tidak ada error di dalam properti
metadata.error
Jika semua persyaratan tersebut dipenuhi, ekstensi akan berupaya memuat data pengguna menggunakan properti userId
atau ID dokumen. Jika pengguna tidak memiliki alamat email, error akan terekam. Jika pengguna memiliki alamat email, dokumen akan dibuat di EMAIL_COLLECTION
. Dokumen akan mencakup email pengguna dan properti untuk dynamicTemplateData
yang terdiri dari isi keranjang pengguna dan properti user
yang mencakup email
dan displayName
pengguna jika ada. dynamicTemplateData
ini digunakan untuk mengisi kolom di dalam template email dinamis SendGrid.
Mengirimkan email
Ketika sebuah dokumen ditambahkan ke EMAIL_COLLECTION
, isinya akan dimasukkan ke dalam antrean untuk dikirim melalui email menggunakan SendGrid API Twilio. Semua informasi dari dokumen keranjang ditambahkan sebagai data template dinamis untuk email. Anda dapat mengonfigurasikan DEFAULT_TEMPLATE_ID
yang merupakan ID template dinamis SendGrid.
Anda dapat membuat template transaksional dinamis di dasbor SendGrid. Template SendGrid menggunakan Handlebars untuk merender data dinamis ke dalam email.
Anda juga harus mengonfigurasikan DEFAULT_FROM
Anda menjadi alamat email yang telah Anda verifikasikan dengan SendGrid sebagai pengirim tunggal atau melalui autentikasi domain. Anda juga dapat menetapkan email DEFAULT_REPLY_TO
.
Anda dapat memicu email untuk dikirimkan kapan saja dengan menambahkan dokumen ke EMAIL_COLLECTION
dengan alamat email to
dan properti dynamicTemplateData
.
admin.firestore().collection('cart_emails').add({ to: 'example@example.com', dynamicTemplateData: { name: "Example" } });
Penagihan
Untuk menginstal ekstensi, project Anda harus menggunakan paket Blaze (bayar sesuai penggunaan)
- Anda akan dikenai sedikit biaya (biasanya sekitar $0,01/bulan) untuk resource Firebase yang diperlukan oleh ekstensi ini (meskipun jika tidak digunakan).
- Ekstensi ini menggunakan layanan Firebase dan Google Cloud Platform lainnya yang mengenakan biaya terkait jika Anda melebihi paket tanpa biaya layanan:
- Cloud Firestore
- Firebase Authentication
- Cloud Functions (Node.js 10+ runtime. Lihat FAQ)
- Cloud Secret Manager
Penggunaan ekstensi ini juga mengharuskan Anda untuk memiliki akun SendGrid Twilio dan kredensial agar dapat menggunakan SendGrid API Twilio untuk kampanye pemasaran. Anda bertanggung jawab atas semua biaya terkait penggunaan SendGrid Twilio Anda.
Cara menginstal ekstensi ini
Menggunakan Firebase console
Anda dapat menggunakan Firebase console untuk menginstal dan mengelola ekstensi.
Instal menggunakan konsolMenggunakan Firebase CLI
Anda juga dapat menggunakan Firebase CLI untuk menginstal dan mengelola ekstensi:
Langkah 1: Jalankan perintah npm berikut untuk menginstal CLI atau mengupdate ke versi CLI terbaru.
npm install -g firebase-toolsTidak berhasil? Lihat referensi Firebase CLI atau ubah izin npm Anda.
Langkah 2: Siapkan direktori project Firebase baru atau buka direktori yang sudah ada
Langkah 3: Tambahkan ekstensi ini ke manifes ekstensi Anda dengan menjalankan
firebase ext:install twilio/abandoned-cart-emails --local --project=projectId_or_alias
Langkah 4 (Opsional): Uji ekstensi ini secara lokal dengan Firebase Emulator Suite
firebase emulators:start
Langkah 5: Deploy ekstensi dalam manifes ke project Anda
firebase deploy --only extensions --project=projectId_or_alias