B
BALAJIAdmin
Website
Overview
Homepage
Banner
Hero Slides
Brand Portfolio
Editorial
Shop by Category
Homepage Settings
Content
Pages & Content
Marketing Assets
Collections
Brand Directory
Commerce ops
Carts
Promotions
Emails
Shipping
Search
Preview
Feature Ramps
Redirects
Activity
Settings
?Admin
B
BALAJIAdmin
Website
Overview
Homepage
Banner
Hero Slides
Brand Portfolio
Editorial
Shop by Category
Homepage Settings
Content
Pages & Content
Marketing Assets
Collections
Brand Directory
Commerce ops
Carts
Promotions
Emails
Shipping
Search
Preview
Feature Ramps
Redirects
Activity
Settings
?Admin
WebsiteEmails
Report an issue

Email Templates

93 templates. Every test send routes through NetSuite from info@balajiwireless.com.

34 Livefire automatically on real events·8 Previewrendered, awaiting trigger wiring·51 DesignHTML mockups, test-only
NetSuite URL missing
System registry40
  • Order lifecycle3
  • Shipment notifications2
  • Cart recovery3
  • DP approvals6
  • DP team3
  • Account2
  • Auth3
  • Ops alerts3
  • Other15
Transactional10
  • Order shipping3
  • Invoicing4
  • Returns & credits3
Account10
  • Onboarding2
  • Security2
  • Credit health3
  • Operational2
  • Other1
Marketing28
  • Brand campaigns4
  • Category campaigns5
  • Tactical & promo19
DTC campaigns5
  • Nimbus92
  • ZIZO1
  • CLICK2

System registry

40 templates

JS-rendered, production-wired. Source of truth for every system email that actually fires.

Order lifecycle

3
  • checkout-error
    Preview
    We hit a problem with your order
    ○ Not yet wired — add send call to /api/checkout error path
    4 vars
  • order-cancelled
    Preview
    Order cancelled · #SO-90123
    ○ Not yet wired — plan: SO status-change UE watching for cancel transitions
    3 vars
  • order-received
    Live
    Order received · #SO-90123 · $118.99
    ▶ rl_checkout_v2.js sendOrderConfirmationEmail — inline send after SO save (no PDF attachment; customer auto-downloads PDF from the v2 response)
    12 vars

Shipment notifications

2
  • shipment-exception
    Live
    Shipment update for order #SO-90123
    ▶ apps/shop/src/app/api/cron/tracking-poll/route.ts — hourly UPS poll, fires on UPS exception (CC ops inbox)
    10 vars
  • shipment-out-for-delivery
    Live
    Your order SO-90123 is out for delivery
    ▶ apps/shop/src/app/api/cron/tracking-poll/route.ts — hourly UPS poll, fires when status flips to OFD
    7 vars

Cart recovery

3
  • abandoned-cart-stage-2
    Live
    Your BALAJI reorder is saved · 3 SKUs · $286.50
    ▶ apps/shop/src/app/api/cron/drive-abandoned-carts/route.ts — daily cron 10:00 UTC, fires for carts idle 24-72h
    5 vars
  • abandoned-cart-stage-3
    Live
    Still time to finish your BALAJI reorder · 3 SKUs · $286.50
    ▶ apps/shop/src/app/api/cron/drive-abandoned-carts/route.ts — daily cron, fires for carts idle 72h-7d (reminder only, no discount — 2026-06-17)
    5 vars
  • abandoned-cart-stage-4
    Live
    Your saved BALAJI cart expires soon
    ▶ apps/shop/src/app/api/cron/drive-abandoned-carts/route.ts — daily cron, fires for carts idle 7d+ (last-touch reminder, no discount — 2026-06-17)
    5 vars

DP approvals

6
  • order-approved
    Live
    Acme Corporation · Order approved · #SO-90123 · $412.50
    ▶ dp_so_notification_ue.js — SO A → B
    8 vars
  • order-approved-with-changes
    Live
    Acme Corporation · Approved with changes · #SO-90123 · $336.00
    ▶ dp_so_notification_ue.js — SO A → B with modified_flag
    8 vars
  • order-pending-approval
    Live
    Acme Corporation · Approval needed · Order #SO-90123 · $412.50 · Priya Sharma
    ▶ dp_so_notification_ue.js — SO create, status A
    11 vars
  • order-rejected
    Live
    Acme Corporation · Order not approved · #SO-90123 · $412.50
    ▶ dp_so_notification_ue.js — SO A → H with reason
    7 vars
  • spend-warning
    Live
    Acme Corporation · Spending limit warning · 82% used
    ▶ dp_spend_warning_ss.js — daily, crosses 80% / 100% of cap
    7 vars
  • stale-approval-reminder
    Live
    Acme Corporation · 3 orders pending 3+ days · $692.75
    ▶ dp_stale_reminder_ss.js — daily, orders pending 3+ days
    3 vars

DP team

3
  • user-deactivated
    Live
    Acme Corporation · Your purchasing access has been removed
    ▶ dp_deactivation_ue.js — Customer afterSubmit (edit) on isinactive F→T
    4 vars
  • user-deactivated-admin
    Live
    Acme Corporation · Team member deactivated · Priya Sharma
    ▶ dp_deactivation_ue.js — same event, admin-facing variant
    3 vars
  • welcome-subuser
    Live
    Welcome to Acme Corporation purchasing team
    ▶ dp_welcome_email_ue.js — Customer afterSubmit (create) on DP sub-user
    5 vars

Account

2
  • application-approved
    Live
    Polyframes LLC · Your BALAJI wholesale account is live
    ▶ dp_account_approved_ue.js — Customer edit, custentitybsp_ap F→T
    14 vars
  • registration
    Live
    We received your wholesale application
    ▶ rl_register.js — afterSubmit on /register Lead save
    5 vars

Auth

3
  • login-email-otp
    Live
    Your BALAJI Wireless login code
    ▶ NS rl_auth.js (action=send-email-code) via apps/shop/src/app/api/auth/send-email-code/route.ts — composed via tpl.sendBrandedEmail using the canonical brand wrapper
    3 vars
  • password-recovery
    Preview
    Reset your BALAJI Wireless password
    ○ Not yet wired — add send call to /api/auth/reset-password
    2 vars
  • set-password
    Preview
    Set your BALAJI Wireless password
    ○ Not yet wired — needs token-generation route + first-use flow
    2 vars

Ops alerts

3
  • ops-catalog-coverage
    Live
    [Catalog PRODUCTION] 2 unreachable of 1048 live products
    ▶ apps/shop/src/lib/monitoring/catalog-coverage.ts — fired by /api/cron/catalog-coverage (hourly at :50) when a live NS product is unreachable on the storefront, or a urlcomponent carries NS's _N collision suffix
    10 vars
  • ops-inventory-drift
    Live
    [Inventory PRODUCTION] 3 of 30 best-sellers show KV/NS drift
    ▶ apps/shop/src/lib/monitoring/inventory-drift.ts — fired by /api/cron/inventory-drift when >5 best-sellers disagree
    5 vars
  • ops-stripe-alert
    Live
    [Stripe PROD] RADAR_BLOCK — $66.24 — Customer 8044 — pi_3TPv… payment blocked by Radar
    ▶ apps/shop/src/lib/stripe-error-notifier.ts — fired by /api/stripe/webhooks on Radar block / payment fail / dispute / payout fail
    10 vars

Other

15
  • back-in-stock
    Live
    3 items you saved are back in stock
    ▶ NS Map/Reduce customscript_awa_back_handle_subs — sweeps customrecord_awa_back_stock for active subs whose item now has stock, sends bundled email per (site, customer) and flips custrecord_awa_back_sent=T
    4 vars
  • cn-bo-daily-digest
    Live
    [BALAJI] Lily's daily digest · 33 items · 7 overdue · Mon, May 11, 2026
    ▶ apps/admin/src/app/api/portal/jobs/cn-bo-digest — Vercel cron Mon-Fri 03:00 UTC (Sun-Thu 7pm PST), per cn-lead/cn-agent user; cross-portfolio rollup of past-due ESDs, upcoming ESDs (14d), AIR pending, unack POs, price variances; CC info@balajiwireless.com
    6 vars
  • crm-rep-email
    Live
    Following up on the Q3 quote
    ▶ apps/admin/src/app/api/portal/team/email/send — Sales Rep CRM Quick Email composer; rep types subject + body, server appends signature from customrecord_rb_rep_signature, sends via this template, optionally creates Message record on customer when relatedCustomerId is set
    3 vars
  • payment-receipt
    Live
    Payment received · #CP-44210
    ▶ NS rl_customer_payment.js POST — sent to customer email (cc=custentity_bwv_email_cc, bcc=info@) with the receipt PDF attached
    9 vars
  • vendor-activity-digest
    Live
    [BALAJI] Vendor activity on PO0201355 (2 updates)
    ▶ apps/admin/src/app/api/portal/_jobs/notify-flush — Vercel cron every 5 min, fires per PO/Bill once vendor activity is idle for 30 min; bundles every line note + comment in the window
    7 vars
  • vendor-air-digest
    Preview
    [BALAJI] ✈ 2 AIR Goods Requests pending (2700 units) — 1 overdue
    ○ DEPRECATED 2026-05-11 — replaced by vendor-open-orders-daily (AIR section folded into the daily report). Cron unwired in apps/admin/vercel.json. Route file kept callable for ad-hoc only.
    3 vars
  • vendor-air-flagged
    Live
    [BALAJI] ZT Air Request — added, qty 2,000 (ref OOR-3F9A2B)
    ▶ apps/admin/src/lib/portal/air-request-mail.ts (notifyVendorOorAirFlag) — fires when an admin flags a Distys OOR SO line for air (line-update sets custcol_rb_ships_china_direct ON). Same de-identified factory notice as vendor-air-request, but a single firm "air request added — ship by air, add the PO" message (the OOR flag has no separate approval step). Branded-first with a raw-HTML sendPortalMail fallback, so pre-upload sends still go out unbranded.
    5 vars
  • vendor-air-request
    Live
    [BALAJI] NEW ZT Air Request — HOLD pending approval (ref A1B2C3D4)
    ▶ apps/admin/src/lib/portal/air-request-mail.ts — CP #38 Superior air-request lifecycle notices to the factory, de-identified (mode=hold on create / approved / cancelled). Branded-first with a raw-HTML sendPortalMail fallback, so pre-upload sends still go out unbranded.
    6 vars
  • vendor-dispute-flagged
    Live
    [BALAJI] Glaccmay flagged Bill VENDBILL211872: Price wrong
    ▶ apps/admin/src/app/api/portal/vendor/{pos,bills}/[id]/disputes/[lineId] — fires immediately when a vendor flags a price/MOQ/missing-files issue; bypasses debounce
    12 vars
  • vendor-esd-approaching
    Preview
    [BALAJI] Verify ship dates: 2 lines shipping in 8 days
    ○ DEPRECATED 2026-05-11 — replaced by vendor-open-orders-daily. Cron unwired in apps/admin/vercel.json. Route file kept callable for ad-hoc only.
    3 vars
  • vendor-esd-missed-digest
    Preview
    [BALAJI] PAST DUE: 2 lines — please update ESDs (worst 21d overdue)
    ○ DEPRECATED 2026-05-11 — replaced by vendor-open-orders-daily. Cron unwired in apps/admin/vercel.json. Route file kept callable for ad-hoc only.
    3 vars
  • vendor-esd-request
    Live
    [BALAJI] Please confirm ESDs on 2 PO lines
    ▶ apps/admin/src/app/api/portal/vendor/pos/request-esd-update — admin or CN-BO clicks "📧 Request ESD update" on selected PO lines; one email per vendor with the line list + optional note
    5 vars
  • vendor-esd-today
    Preview
    [BALAJI] Ship today: 1 line
    ○ DEPRECATED 2026-05-11 — replaced by vendor-open-orders-daily. Cron unwired in apps/admin/vercel.json. Route file kept callable for ad-hoc only.
    3 vars
  • vendor-open-orders-daily
    Live
    [BALAJI] Open orders with Balaji — 14 lines, 7 need attention · Mon, May 11, 2026
    ▶ apps/admin/src/app/api/portal/jobs/vendor-open-orders — Vercel cron Mon-Fri 05:00 UTC (Sun-Thu 9pm PST). One email per vendor with portal-active contacts (TO=alphabetical-first, CC=others, BCC=info@balajiwireless.com). Buckets: past-due ESDs, missing ESDs, ships-next-7d, awaiting-ack, AIR pending. Replaces 4 prior alert emails.
    16 vars
  • vendor-payment-request
    Live
    [BALAJI] HOLCB requested payment on 2 bills
    ▶ apps/admin/src/app/api/portal/vendor/bills/request-payment — vendor clicks "Request payment" on /v/bills; emails info@balajiwireless.com (TO; suppressOpsBcc, CC=requester) with the selected bills/lines as an Excel attachment + per-currency outstanding totals and a USD equivalent for RMB (latest synced rate). Email-only, no NS write.
    14 vars

Transactional

10 templates

Order + invoice lifecycle HTML designs. Most not yet auto-triggered.

Order shipping

3
  • order-delivered
    Design
    Delivered: Order #SO-51234
    5 vars
  • order-partial-shipment
    Design
    Partial shipment: Order #SO-51234
    4 vars
  • order-shipped
    Design
    Your BALAJI order has shipped
    4 vars

Invoicing

4
  • invoice-issued
    Design
    Invoice INV-51234 for $842.04, due May 14
    5 vars
  • invoice-overdue
    Design
    Past due: INV-51102 is 12 days overdue
    4 vars
  • invoice-payment-received
    Design
    Payment received: $842.04 applied to INV-51234
    4 vars
  • statement-of-account
    Design
    Your April 2026 statement: $1,842.50 balance
    5 vars

Returns & credits

3
  • credit-memo
    Design
    Credit memo CM-4421 for $142.40
    4 vars
  • refund-processed
    Design
    Refund processed: $142.40
    3 vars
  • rma-issued
    Design
    RMA #RMA-8821: your return label is ready
    4 vars

Account

10 templates

Onboarding / auth / account-health HTML designs.

Onboarding

2
  • application-declined
    Design
    Update on your BALAJI application
    2 vars
  • sales-rep-intro
    Design
    Meet {{rep_first_name}}, your BALAJI rep
    7 vars

Security

2
  • security-new-signin
    Live
    New sign-in on your BALAJI account
    ▶ apps/shop/src/lib/auth/security-alert.ts — fires on login from new device (when wired)
    7 vars
  • sign-in-otp
    Design
    Your BALAJI sign-in code: 482 391
    2 vars

Credit health

3
  • credit-hold-lifted
    Design
    Credit hold lifted, welcome back
    3 vars
  • credit-hold-placed
    Design
    Your BALAJI account is on credit hold
    3 vars
  • credit-limit-increased
    Design
    Your BALAJI credit limit was raised to $10,000
    4 vars

Operational

2
  • back-in-stock
    Design
    Back in stock: ZIZO Bolt for iPhone 17 Pro Max (Black)
    4 vars
  • resale-cert-expiring
    Design
    Your resale certificate expires May 14
    3 vars

Other

1
  • password-changed
    Live
    Your BALAJI password was changed
    ▶ apps/shop/src/lib/auth/security-alert.ts — fired by /api/auth/set-password on successful change
    4 vars

Marketing

28 templates

Brand + category campaigns. Manual send only.

Brand campaigns

4
  • brand-click
    Design
    CLICK at BALAJI, 244 SKUs, one catalog
    3 vars
  • brand-custom-case-kiosk
    Design
    Custom Case Kiosk at BALAJI, 35 SKUs, one catalog
    3 vars
  • brand-nimbus9
    Design
    Nimbus9 at BALAJI, 260 SKUs, one catalog
    3 vars
  • brand-zizo
    Design
    ZIZO at BALAJI, 421 SKUs, one catalog
    3 vars

Category campaigns

5
  • category-audio-earbuds
    Design
    Earbuds & Headphones at BALAJI, 20 SKUs
    3 vars
  • category-audio-speaker
    Design
    Bluetooth Speakers at BALAJI, 35 SKUs
    3 vars
  • category-case
    Design
    Phone Cases at BALAJI, 791 SKUs
    3 vars
  • category-mount
    Design
    Mounts & Stands at BALAJI, 28 SKUs
    3 vars
  • category-wireless-charger
    Design
    Wireless Chargers at BALAJI, 9 SKUs
    3 vars

Tactical & promo

19
  • abandoned-cart
    Design
    Your BALAJI cart is waiting: 84 units, $842.04
    5 vars
  • boost-intro-1-welcome
    Design
    Welcome to the Balaji family
    3 vars
  • boost-intro-2-rep
    Design
    Your Balaji B2B account is ready
    7 vars
  • boost-intro-3-lineup
    Design
    Four brands behind your new Boost partnership
    2 vars
  • boost-intro-4-nimbus9
    Design
    Nimbus9: premium protection, lifetime warranty
    2 vars
  • boost-intro-5-zizo
    Design
    ZIZO: cases, audio, power, and more from one brand
    2 vars
  • boost-intro-6-click
    Design
    CLICK: the everyday brand, built for every customer
    2 vars
  • boost-intro-7-cck
    Design
    CCK: a kiosk in your store, custom cases on demand
    2 vars
  • cross-sell-bundle
    Design
    The case + charger + cable bundle that doubles attach rate
    7 vars
  • dealer-spotlight
    Design
    Dealer spotlight: How Monte Cristo hit $1M in accessories
    4 vars
  • exclusive-early-access
    Design
    Tier 1 early access: ZIZO Bolt Pro, 48 hours before public launch
    7 vars
  • flash-sale
    Design
    20% off cases, 72 hours only
    3 vars
  • new-product-launch
    Design
    New drop: ZIZO Bolt is live across iPhone 17, S26, Pixel 10
    7 vars
  • phone-launch-stockup
    Design
    iPhone 17 drops in 14 days. Stock up now
    7 vars
  • program-announcement-cck
    Design
    Introducing Custom Case Kiosk, a new revenue stream for your store
    4 vars
  • quarterly-newsletter
    Design
    BALAJI Q2 2026 update: 48 SKUs, 2 programs, 1 new DC
    4 vars
  • seasonal-back-to-school
    Design
    Back-to-school 2026: order by July 15 for peak margins
    7 vars
  • weekly-new-arrivals
    Design
    48 new SKUs this week: ZIZO, Nimbus9, CLICK and more
    8 vars
  • winback-reorder-reminder
    Design
    10% off your next BALAJI order, we miss you
    9 vars

DTC campaigns

5 templates

Brand-storefront DTC campaign designs (Nimbus9 / ZIZO / CLICK), built by the balaji-dtc-email pipeline. View-only: no registry entry, no send path — sends are owner-gated.

Nimbus9

2
  • dtc-nimbus9-aero-launch
    Design
    This case stands on its own
    2 vars
  • dtc-nimbus9-stratus-2-launch
    Design
    Stratus 2 is here. The stand is built in.
    2 vars

ZIZO

1
  • dtc-zizo-flagship-launch
    Design
    The ring or the kickstand.
    2 vars

CLICK

2
  • dtc-click-nova-launch
    Design
    Nova. Fluted texture, framed in color.
    2 vars
  • dtc-click-ombre-launch
    Design
    Your phone wants the fade
    2 vars