Back to docs
Sendlar
Email sending product documentation
Sendlar is Gavenue's email-sending product. It provides bulk email sending, SMTP configuration, real-time analytics, CSV import, templates, bots, and webhooks. The Sendlar app is hosted at sendlar.gavenue.io.
Relationship: Gavenue handles billing, plans, checkout, and trial activation. The Sendlar app handles sending, templates, analytics, and integrations.
Plans and pricing
| Plan | Amount | Duration | Monthly email limit |
|---|---|---|---|
| Free trial | Free | 7 days | 500 |
| Monthly | INR 699 | 1 month | 40,000 |
| Yearly | INR 6,999 | 12 months | 50,000 |
USD pricing: Monthly $8, Yearly $84 — contact via WhatsApp.
Routes and pages
| Route | Purpose |
|---|---|
| /sendlar | Landing page with features, pricing, trial CTA |
| /sendlar/checkout?plan=monthly | Checkout for monthly plan |
| /sendlar/checkout?plan=yearly | Checkout for yearly plan |
| /checkout/success?sendlar=1 | Post-payment success with Sendlar CTA |
API routes
Sendlar
| Method | Path | Description |
|---|---|---|
| POST | /api/sendlar/start-trial | Start 7-day free trial. Requires auth; one-time per user. Returns { ok, plan, expiresAt, activatedAt } or { error }. |
Related APIs
| Method | Path | Usage |
|---|---|---|
| GET | /api/subscriptions/me | Returns sendlarPlan, sendlarPlanActive, sendlarFreeTrialUsedEver |
| POST | /api/payments/create | Create payment with metadata: { platformPlan: 'sendlar', sendlarPlan } |
| POST | /api/payments/verify | Verify payment; PaymentService activates plan on success |
| POST | /api/payments/confirm | Confirm payment for success page |
| POST | /api/cron/sendlar-expiry | Mark expired plans; send expiring-soon reminders with ?notify=true¬ifyDays=7 |
Admin Sendlar APIs: see Admin routes.
User flow
- User visits /sendlar, chooses trial or paid plan.
- Trial: POST /api/sendlar/start-trial → redirect to sendlar.gavenue.io.
- Paid: /sendlar/checkout?plan=monthly|yearly → payment → /checkout/success?sendlar=1 → CTA to sendlar.gavenue.io.
User model (Sendlar fields)
| Field | Type | Purpose |
|---|---|---|
| sendlarPlan | 'monthly' | 'quarterly' | 'yearly' | 'free trial' | 'none' | Current plan |
| sendlarPlanActive | boolean | Whether plan is active |
| sendlarPlanExpiresAt | Date | Plan expiry |
| sendlarPlanActivatedAt | Date | When plan was activated |
| sendlarTrialUsedAt | Date | When trial started |
| sendlarFreeTrialUsedEver | boolean | One-time trial flag |
| sendlarMonthlyEmailLimit | number | Monthly email limit |
| sendlarMonthlyLimitResetDate | Date | Next limit reset |
| sendlarExpiryReminderSentAt | Date | Last expiring-soon reminder |
| sendlarApiKey | string (select: false) | API key for Sendlar |
Sendlar collections
| Model | Collection | Purpose |
|---|---|---|
| Template | sendlar-templates | userId, name, subject, html, variables, isDefault |
| Bot | sendlar-bots | userId, name, triggerType, triggerConfig, actions, isActive, run stats |
| sendlar-emails | userId, subject, body, html, status, recipientCount, sentAt, scheduledAt | |
| Webhook | sendlar-webhooks | userId, name, url, events, secret, isActive |
| Image | sendlar-images | userId, key, filename, size, mimeType |
| SMTPConfig | sendlar-smtpconfigs | userId, label, host, port, user, password (select: false) |
Admin
Sendlar-related admin pages and APIs: Admin routes.
- Users: plan activation, email limits
- Emails, templates, images, SMTP, bots, webhooks, API keys: list, view, manage
Sendlar permissions
| Permission | Purpose |
|---|---|
| SENDLAR_EMAILS_READ, SENDLAR_EMAILS_WRITE | Emails |
| SENDLAR_TEMPLATES_READ | Templates |
| SENDLAR_IMAGES_READ, SENDLAR_IMAGES_DELETE | Images |
| SENDLAR_SMTP_READ | SMTP configs |
| SENDLAR_BOTS_READ, SENDLAR_BOTS_WRITE | Bots |
| SENDLAR_WEBHOOKS_READ, SENDLAR_WEBHOOKS_WRITE | Webhooks |
| SENDLAR_API_KEYS_READ, SENDLAR_API_KEYS_REVOKE | API keys |
| SENDLAR_PLANS_WRITE | Plan activation |
| SENDLAR_LIMITS_WRITE | Email limits |
| SENDLAR_SYSTEM_READ | System |
Lib modules
| File | Purpose |
|---|---|
| lib/sendlarPlans.ts | Plan configs, getSendlarPlan(), getSendlarPlanExpiresAt(), isValidSendlarPlanId() |
| lib/sendlarTrial.ts | initializeSendlarTrial() — sets trial fields (500 emails, 7 days) |
| lib/email/sendlarPlanEmails.ts | sendSendlarPlanActivatedEmail(), sendSendlarPlanExpiringEmail() |
| lib/notifySendlarPlanActivated.ts | Email + WhatsApp notifications on plan activation |
| lib/abandonedCheckout.ts | saveAbandonedCheckout(), getAbandonedCheckouts() — stores sendlarPlan for resume |
Components
Sendlar-specific
| Component | Purpose |
|---|---|
| SendlarCheckoutForm | Checkout form: billing, GST, coupons, payment methods |
| SendlarCheckoutAuthLinks | Login/Sign up links for unauthenticated users |
Related
- AbandonedCheckoutCard — Resume Sendlar checkout when checkout.sendlarPlan is set
- SubscriptionsClient — Displays sendlarPlan from /api/subscriptions/me
- AdminEmailsClient, AdminTemplatesClient, AdminBotsClient, AdminWebhooksClient, AdminImagesClient, AdminAPIKeysClient
- AdminUserDetailClient — User detail with plan activation and email limits
External links
| Link | Purpose |
|---|---|
| sendlar.gavenue.io | Sendlar app |
| wa.me/919984294923 | WhatsApp contact for USD purchases |