This is the complete guide to every screen in the Bhumija Elevate ERP. Inside the ERP itself, click the ❓ button on any page for just that page's section. This copy is public — safe to share with anyone who needs to learn the system before they have a login.
🔐 Login & Account
Logging In
The ERP login page is separate from the customer/farmer login. You sign in with your mobile number and password — there is no email/username login. Tick "Remember me" if you want the browser to keep you signed in longer between visits.
- If your mobile number or password is wrong, or your account has been deactivated by an Admin, you'll see: "Incorrect mobile number or password, or the account is not active." The message is intentionally the same for both cases, so it does not reveal whether a mobile number exists in the system.
- The first time you log in after a session change, the page always loads fresh — if you ever see a "Page Expired" error right after logging in, simply reload the page and log in again.
Requesting ERP Access (New Staff)
New staff do not get an account automatically. On the login page, click "Request ERP Access" and fill in:
- Full Name
- Mobile Number — this becomes your login ID once approved, so double-check it.
- Email (optional, but strongly recommended — it's needed later for "Forgot Password")
- Reason for Access (optional) — e.g. "Joining as sales executive, need order & CRM access"
After submitting, the request goes to an Admin for approval. You will not be able to log in until it is approved and credentials are shared with you. A few things to know:
- You cannot submit a second request for a mobile number that already has an account, or one that already has a pending request waiting on approval — the form will tell you if either is the case.
- Nothing is emailed or texted automatically when you submit the request — the Admin needs to be told separately (call/message) that a request is waiting, and will share your login details with you directly once approved.
Forgot Password
If you've forgotten your password, use "Forgot Password?" on the login page. This is a two-step process:
- Step 1 — Enter your mobile number. The system looks up the active account for that number and emails a 6-digit OTP to the email address registered on that account.
- Step 2 — Enter the OTP and choose a new password. You'll land on a page showing a masked version of your email (e.g.
ab***@domain.com) so you can confirm the OTP was sent to the right place. Enter the 6-digit code plus your new password (minimum 6 characters, entered twice to confirm).
The OTP is valid for 10 minutes. After that it expires and you'll need to request a new one. You also can't request a fresh OTP more than once per minute — if you request too quickly you'll see "An OTP was already sent. Please wait 1 minute and try again."
Changing Your Password (while logged in)
Once logged in, click your name in the top-right corner to open the account panel. Under "Change Password" you can update your password any time by entering:
- Current Password
- New Password (minimum 6 characters)
- Confirm New Password
If the current password you enter is wrong, the update is rejected with an error — nothing changes until the current password is verified correctly.
Completing Your Profile
The first time you log in, a "Complete Your Profile" popup appears and cannot be dismissed until you fill it in — it will keep reopening on every login until it's done. This is a one-time company-records requirement. It asks for:
- Full Name, Email, Contact Number
- Designation (Post) and Department
- Date of Birth
- Two Emergency Contact Numbers
- Permanent/Parental Address
- Aadhaar Number (12 digits)
- A passport-size photo (upload)
- A copy of your Aadhaar card (image or PDF upload)
If your name matches an entry in the public website's "About Us" team listing, the form will auto-fill your Designation (and offer to reuse that same photo, if one exists there) — you're free to change either.
Double-check your Contact Number here matches exactly what you use to log in. Any extra spaces or dashes are stripped automatically before saving, so "92017 99510" and "9201799510" both save the same way — but if the number itself is wrong, you could end up unable to match it at login.
After the first save, you can still reopen this form any time from the account panel ("Edit My Profile") to update your details — it's just no longer forced on you once the required fields are filled in.
🏠 Dashboard
The Dashboard is the first page you land on after logging in. It is an analytics command-center: order counts, revenue, RTO rate, leads, top farmers, and a sales map, all for whatever date range and (if you're allowed to see other executives' data) executive you choose.
What You See Depends on Who You Are
- Regular executives only see their own orders and leads — the numbers on this page are scoped to what you personally booked/handled.
- Admins and anyone whose role can "see all orders" (e.g. Warehouse) can filter by Executive using the dropdown in the filter bar, including an "All Executives" option.
- Super Admin additionally sees a breakdown showing "Actual Sales (Gross Booked)" minus "RTO" = "Net Sales" — everyone else only sees the final Net Sales figure.
Choosing a Date Range
By default the Dashboard shows "This Month" — the 1st of the current month through today. You can change this several ways:
- Quick-range buttons at the top: Today, Yesterday, 7 Days, 30 Days, This Month, This Financial Year, or All (from the very first order ever placed).
- The Start / End date fields in the filter bar, then click Apply.
- The Quick Month picker to jump straight to a specific calendar month.
Click Reset to return to the default "This Month" view. Admins also get Export CSV, Export Excel, and Download PDF Report buttons here to take the current range's data out of the system.
The Four Tabs
Below the top summary cards, four tabs switch what the page shows (the date range and executive filter you picked stay applied across all of them):
- Overview — order counts (total, dispatched, RTO, delivered, pending), revenue, total farmers, the Sales Funnel (how orders move stage-to-stage), an Executive Performance table, Top Products, a Low Stock Alert (products at 5 units or fewer), and an interactive India Sales Map you can drill into by State → District → Pincode.
- Day-wise — a bar chart plus table of orders and revenue for each individual day in the selected range.
- RTO Orders — every order in the range that came back as RTO (Return to Origin), with the COD amount lost and the RTO reason, and a link to view each order.
- 🌾 Farmers — repeat-customer analysis: which farmers have placed 2 or more orders, their delivered/RTO counts, and a separate table of "RTO-Risk Repeat Customers" (repeat farmers who have at least one RTO on record, sorted by RTO rate). Each shows the Top 10 by default — click "Show All" to see the complete list.
Other Things on This Page
- Lead Overview card — total, contacted, and converted lead counts, plus a breakdown by source. Click "Full CRM" to go to the complete CRM module.
- Delivered Orders Report card — click "Order-wise details + CSV download" to see exactly which order was delivered on which day, by which executive, for how much.
- If you have WhatsApp access, a "Create WhatsApp Campaign" button appears in the filter bar.
📦 Orders & New Order
New Order
Use New Order to book a fresh order for a farmer. The recommended order to fill the form in is: Farmer Name → Mobile (wait a moment after typing) → Pincode (wait for auto-fill) → Village → Products → Discount/Advance → Remark.
- Mobile number — the moment you leave this field, the system checks whether this farmer has ordered before. A badge (or a popup, if they have cancelled/RTO orders) shows their past orders — this is only informational and never blocks you from continuing. It may also auto-fill address fields from their last order into whatever is still empty (it never overwrites anything you've already typed) — always double-check the auto-filled details are still correct.
- Products & price — pick one or more products; each shows its standard rate, but the rate is editable. If you and the farmer agreed on a different price, change it before submitting.
- Advance (prepaid) amount — if the farmer already paid something (UPI/bank transfer/cash/cheque), enter it under "Advance"; "Final COD" (what to collect on delivery) updates automatically. The moment you enter any Advance amount, you must also select the payment mode, enter the transaction/UTR number, and upload a screenshot of the payment — the order cannot be submitted without all three.
- Must-fill fields — Farmer Name, Mobile (10 digits), Pincode, Village, and at least one Product. The form will not submit without these.
Similarly, if this mobile number's past orders mostly belong to a different executive than the one booking now, the order is routed to admin approval as a "conflict" instead of being created right away.
Above the form, "Find & Edit an Existing Order (Before Dispatch)" lets you search by Order ID, mobile number, or farmer name to pull up and edit an order that hasn't been dispatched yet. Once an order is dispatched, further changes go through the Orders page instead.
Orders List
The Orders page lists every order you (or, if your role allows it, every executive's) orders, with tabs across the top for each pipeline stage: All Orders, Pending, Booking & Induction, In Transit & Sorting, Destination Arrival, Out for Delivery, Kept in Deposit, Final Delivery, Return Process (RTO), Item Delivered (RTO Complete), and Failed/Lost. Each tab shows a live count next to its name.
From a row's action buttons you can:
- ⚡ Dispatch — open the dispatch panel for an approved, not-yet-dispatched order (see "Dispatching an Order" below).
- ⏸ Hold / ▶ Release Hold — visible to Admin and Warehouse only, for a pending, already-approved order that hasn't been dispatched. Puts the order on hold with a reason (stock unavailable, waiting on farmer confirmation, etc.) and a note — this pauses the "pending dispatch" reminder and swaps it for a reminder tied to that specific reason instead. "Release Hold" clears it once resolved.
- Status-change actions (once dispatched) to move an order through Shipped → Out for Delivery → Delivered, or mark it Cancelled or RTO.
Order Detail Page
Click into an order to see its full detail: status, payment status, COD amount, courier charge (an "Estimate" fetched live at dispatch time, or "Reconciled" once Finance uploads the actual courier invoice — reconciled always wins), and a link to 📜 History/Tracking for that farmer. Admin can refetch or manually override the courier charge here. Once payment has been received, a 🧾 Generate Invoice button becomes available (it's disabled until then).
If an order was rejected during verification, its rejected status and reason show here; a Super Admin can undo the rejection and re-approve it directly from this page.
Dispatching an Order
An order must be verification-approved before it can be dispatched — otherwise the system blocks it with "Order must be verification-approved before it can be dispatched." To dispatch, choose the Courier, and (where applicable) enter the Tracking ID, weight, and dimensions.
- For most couriers, dispatching immediately moves the order to Shipped and deducts stock.
- Self Collected and Bus / Train couriers go straight to Delivered instead — there's no courier to track and payment is typically collected on the spot.
- Post Office (India Post) orders stay at "Placed" (shown as "Ready to Ship") until a real tracking scan event comes in — this is normal, not stuck.
Farmer History Lookup
Use the 📜 History/Tracking link (available from an order row or the order detail page) to pull up everything for a given farmer — search by mobile number, order/tracking number, or farmer name. This shows every past order for that farmer, their order stats, and monthly order pattern — useful for confirming a customer's track record (repeat orders, past RTOs/cancellations) before committing to a new order or a courier decision. If a name search matches more than one distinct mobile number, you'll be shown a picker to choose the right person.
📷 Scan / RTO Receiving
The Scan Parcel page is a mobile-friendly page for looking up an order by scanning its barcode/QR — used both for checking an order's status on the ground and, importantly, for confirming when an RTO (Return to Origin) parcel physically arrives back at the office/warehouse.
Finding an Order
- Tap "📷 Scan Parcel Barcode / QR" to open your phone's camera and point it at the barcode already printed on the India Post label (or any QR code the ERP generated for that order) — no separate sticker is needed.
- Or type the Order Number, Tracking ID, or Mobile Number into the box and tap "Find."
- A flashlight button appears automatically if your device's camera supports one — useful for scanning in dim light.
Once found, the order card shows status, payment status, farmer name, mobile (tap to call), address, COD amount, courier, tracking ID, and the product list. If the order was shipped via India Post, live tracking history from India Post is shown right below it.
Confirming an RTO Parcel Has Physically Arrived
When an order's status is RTO, a dedicated "📦 RTO — Physical Receipt" card appears. This exists because the courier marking an order as RTO (a tracking event) is not the same moment as someone at the office actually holding the returned parcel in their hands — this card is that second, physical confirmation step.
- Scan or look up the RTO order on this page.
- If any item in the parcel came back physically damaged, enter the damaged quantity next to that product (leave it at 0 for items that are fine). This is capped at the quantity originally in that order — you can't enter more than was shipped.
- Tap "📦 RTO Parcel Received — Confirm" and confirm the prompt.
Once confirmed, the card shows a green "✅ Received at office/warehouse" with the date/time and who confirmed it, and the damaged-quantity form disappears — it can only be confirmed once per order.
Manually Marking an Order as RTO (Admin only)
If an order's courier tracking already shows it moving back to origin (delivery status "Returning to Origin" or "Returned to Origin") but no one has updated its status in the ERP yet, Admins will see a "↩️ Mark as RTO" card here. Select a Reason (required), optionally add remarks, and confirm — this only appears for orders that aren't already RTO, Delivered, or Cancelled.
✅ Verification & Approvals
This section covers the three screens where staff check and sign off on things before they go further: Order Verification (every order gets checked before dispatch), Approval Queues (special cases that need a Super Admin's okay), and Invoice Approvals (sending delivery invoices over WhatsApp in a controlled batch).
Order Verification
Every order placed in the ERP lands here with a status of Pending before it can move toward dispatch. This is the checkpoint where Admin/Warehouse staff confirm an order is genuine and correct — wrong address, price disputes, out-of-stock items, and similar problems get caught here instead of after the courier has already been booked. Staff assigned to the "confirmation" desk see only this screen for their queue; a plain Executive who doesn't have full order visibility won't see other executives' orders.
The page has tabs — Pending, Approved, Rejected, Hold, Sent Back, and All — with a live count next to each. If you're an Admin/Warehouse user who can see everyone's orders, an Executive dropdown filter also appears so you can narrow the list to one executive's orders.
On each order card/row you get four action buttons (visible only while the order is Pending or on Hold):
- ✅ Approve — the order is correct. It moves forward toward dispatch.
- ❌ Reject — the order has a real problem. You must pick a reason (e.g. price dispute, stock unavailable) from a dropdown. Rejecting does not delete or cancel the order — it just sits in the "Rejected" tab and is never dispatched.
- ⏸ Hold — you need more time or information before deciding. Pick a reason, add a remark, and optionally set a follow-up date/time to remind yourself. The order stays in your queue under the "Hold" tab — it does not go back to the executive.
- ↩ Send Back — the executive who placed the order needs to fix something (wrong address, wrong item, etc.). Type what needs correcting; they'll see your note and can fix and resubmit it.
Clicking any of these opens a small popup where you fill in the reason/remark (and follow-up date for Hold) and hit Confirm.
Approval Queues
This screen (only visible to Super Admin) is where special-case requests wait for a human decision before they take effect. It has five tabs, each handling a different kind of request:
- 🧑🌾 CRM Pending — new farmer/CRM records submitted by an executive that need review before being created.
- 📜 History Approvals — a new order for a farmer who already has another order currently placed/shipped/out-for-delivery/RTO. The system won't create it automatically (to avoid double-booking the same farmer) — check the shown history, then Approve to create it anyway, or Reject/Send Back if it looks like a mistake.
- ⚡ Conflict Queue — this farmer's mobile number's past orders mostly belong to a different executive than the one submitting this new order. It's held so the same farmer doesn't end up served/credited to two different executives by accident. Approve to let the new executive have it anyway, or Reject/Send Back to keep it with the original executive.
- 🧑💼 ERP Access Requests — someone has requested a new ERP login. Approving creates the account and generates a mobile number (login ID) and password on the spot — these are shown only once, so copy and share them with the person immediately.
- ⏱️ Stale Lead Reassignment — a lead (from WhatsApp, Facebook, or any auto-assigned source) that its assigned executive hasn't touched (no call, note, status, or follow-up change) within 3 hours of assignment. Approving hands it to the proposed executive — picked the same way new leads are normally distributed, i.e. whoever currently has the fewest.
For most tabs you have three actions per request: Approve, ↩ Send Back (asks the executive to correct something specific, without closing the request — a popup lets you type what needs fixing), and Reject (asks for a reason via a prompt). ERP Access Requests only offer Approve/Reject.
Below the pending list, a Sent Back panel shows requests currently waiting on an executive to correct and resubmit, and a Recently Resolved table shows the last 50 approved/rejected requests with who resolved them and any note left.
Invoice Approvals
Delivered orders don't get their invoice sent to the farmer over WhatsApp automatically — this screen is a deliberate manual checkpoint (Super Admin only for the actual send) where you review the list of delivered-and-paid orders that haven't had their invoice sent yet, then approve a batch to send.
By default the list shows only today's deliveries. Use the From/To date filters to reach older delivered orders that are still pending an invoice (the backlog doesn't show by default so it doesn't clutter this screen).
To send invoices: tick the orders you want (or use Select All), then click ✅ Approve & Send Selected. Once confirmed, the WhatsApp invoice messages are queued and sent automatically — there's no further per-order confirmation step after this.
🤝 Referrals
What this page is for
The Referrals page tracks farmers who bring in new customers, and the commission they earn for each order placed through their referral. Every referral gets a unique Ref ID, and every order linked to that referral creates a commission record with its own Log ID.
Adding a new referral
- Open Farmer Referrals and fill in the Add New Referral form at the top: Farmer Name and Mobile are required; Father Name, Aadhar, Village/Area, District, State, Pincode, Referral Promise, Product Interest and Notes are optional but recommended.
- "Referral Promise" is a free-text field for whatever was promised to the farmer for referring (e.g. a discount, a gift, a cash incentive) — record it here so there's no dispute later.
- Click Save Referral. The system generates the next Ref ID automatically and stamps today's date as the referral date. The referral is recorded against the executive who is logged in when it is saved.
How commission gets added
Commission is not entered from this page. When a farmer places an order and the order is linked to a referral (done from the order entry screen by selecting the referral), a commission record is created automatically with the order's COD value and the commission amount entered at that time. It then shows up here against the referral, with its own Log ID and a link to the order.
Referral List and the summary cards
- The three cards at the top show Total Referrals recorded, Orders via Referral (count of all commission entries), and Total Commission Paid across all referrals.
- The list shows each referral's Ref ID, farmer, village/district, the executive who logged it, how many orders it has generated, and the commission total for that referral.
- Click View on any row to open the full referral detail, including the farmer's address, referral promise, product interest, notes, and the complete order/commission history for that referral.
Editing and deleting referrals
Editing a referral's details (name, mobile, village, district, state, pincode, referral promise, notes) and deleting a referral are admin-only actions. Regular executives can add new referrals and view the list, but cannot edit or delete existing ones.
💬 Team Chat
What this page is for
Team Chat is the ERP's internal messaging tool for staff — separate from the WhatsApp features used to talk to farmers/customers. It supports a Team Group (everyone), one-to-one Direct Messages, and custom Groups you create with selected teammates.
Rooms panel (left side)
- Team Group — one shared room every active executive can see.
- Direct Messages — every other active teammate is listed automatically; click a name to open a private 1-to-1 chat with them.
- Groups — custom rooms you created or were added to. Click + New Group, give it a name, tick the teammates to include, and click Create. You are added to the group automatically along with whoever you selected.
Sending messages
- Open a room, type in the message box at the bottom, and press Send (or Enter).
- To attach a file, click the 📎 icon next to the message box and pick a file. It uploads immediately and appears in the chat as a message — images show as a thumbnail preview, other files (PDF, docs, etc.) show as a downloadable attachment. Files up to 10 MB are accepted.
- To reply to a specific message, click ↩ Reply under it — a preview of what you're replying to appears above the message box. Click the ✕ on that bar to cancel the reply before sending.
Reactions and deleting messages
- Click the 👍 under any message for a quick "thumbs up" reaction, or click an existing reaction chip to add/remove your own reaction to it. Reaction counts are shown next to each emoji.
- You can delete your own messages using the 🗑 icon (only appears on your own messages). A deleted message is replaced with "Message deleted" for everyone — it isn't fully removed from the thread.
👤 CRM / Leads
What this page is for
The Farmer CRM is where every lead/farmer record lives — from a fresh WhatsApp/Facebook lead to someone who has ordered many times. It's the main working screen for executives: search, filter, call, update status, set follow-ups, and jump straight to placing a New Order for that farmer.
What Status and Interest mean
These are two separate, independent fields on every lead:
- Status — where the lead is in the pipeline, i.e. whether anyone has worked it yet: New Lead (just came in, untouched) → Contacted (called/messaged at least once) → Active (an ongoing conversation) → then either Converted (placed an order) or Lost (said no, stop chasing). Cold means not responding right now but still worth trying again later.
- Interest — what the farmer actually said when spoken to, regardless of Status: High (ready to buy soon), Medium (interested but deciding), Low (mild interest), Not Interested (explicitly said no to the product).
Farmer list, search and filters
- The five cards at the top (Total Farmers, New Leads, Active/Converted, Cold, Lost) reflect whatever filters are currently applied — not just the visible page.
- Search box matches name, mobile, or lead code. Filters are available for Status, Interest, Source, Crop, and (for admins) which Executive a lead is assigned to, including an "Unassigned (Pool)" option.
- The Order History filter narrows to farmers who Never Ordered, Have Ordered, are Repeat Customers (2+ orders), have a Delivered order, an order In Transit, or an RTO.
- Sort by Newest First, Most Orders First, or Call Priority First (a system-calculated score shown as a badge — hover it to see why a lead was scored that way).
- Each row shows the farmer's Orders/Delivered/RTO counts, last call time and total call count, and quick actions to Call, open WhatsApp, view Order History, Edit, or start a New Order.
Adding a new farmer
Use the Add New Farmer form at the top of the page. Name and Mobile are required; everything else (address, crop, land area, sales info, notes) is optional. Typing a Pincode auto-fills Division/District/State and offers a Post Office dropdown. Admins get an Assign To dropdown — a Super Admin leaving it blank keeps the new farmer unassigned (in the pool) rather than owned by anyone; a regular executive's new farmers are always assigned to themselves.
Editing a lead
- Click Edit on any row/card to open the Edit Farmer popup — this covers name, contact, full address, crop/land, Purchased/Product/Amount, Status, Interest, (admins only) reassignment, Follow-up Date/Time, and Notes.
- Click Save Changes to save everything in one submit — Status, Interest, follow-up, and notes can all be updated together without needing to visit a separate page.
- The 📋 Full Profile / Call Log → link on the popup opens the complete profile page with full order history, monthly order stats, and this farmer's call log.
Calling and logging calls
Clicking a farmer's mobile number (or the 📞 Call button) dials out and automatically logs the call against that lead, updating their Last Call time and total call count. The 💬 WhatsApp button opens a chat with the farmer directly. The 📋 History link shows their full order history without leaving the page.
Bulk Import Farmers
- From 📥 Bulk Import Farmers, first download the template (an .xlsx with example data), fill it in Excel, then upload it as .xlsx, .xls, or .csv.
- Only the Mobile Number column is required — every other column (Name, Village, Tehsil, District, State, Pincode, Crop, Land Area, Notes, Lead Date) is optional and can be left blank or reordered, since the importer matches columns by their header name, not position.
- Lead Date accepts almost any format you'd naturally type (15/07/2025, "July 2025", etc.).
- Any row whose mobile number already exists in the CRM is automatically skipped — no duplicate farmer is created. The result message tells you how many were added vs skipped.
- A regular executive's import is assigned to themselves automatically. A Super Admin's import goes into the unassigned pool, ready to be allotted out via Lead Pool.
Transfer Leads (admin only)
Use this when an executive leaves or needs their leads handed to someone else. Pick a From Executive to see all their leads with order history (Delivered/RTO/Cancelled) alongside a checkbox list, tick the ones to move, choose Transfer To, and submit. Only ticked leads move — the rest stay with the original executive.
Lead Pool (Super Admin only)
The pool is the set of leads with no executive assigned (e.g. from a Super Admin's bulk import, or leads sent back from an executive). Only Super Admin can access it.
- Allot leads — enter how many leads to hand out and pick an executive; the oldest leads in the pool are allotted first, in a stable, predictable order (never random), so repeat allotments don't overlap.
- Search the pool by name, mobile, village, or lead code, and browse the full pool list with pagination.
- Return leads to the pool — pick an executive to see their leads (with order history), select which ones to pull back. Each returned lead gets a note recorded automatically, stating who previously had it and how many orders it had produced, so that history isn't lost once it's back in the anonymous pool.
Follow-up page
Lists every lead with a follow-up date/time set, for a chosen day (defaults to today). Overdue follow-ups for today are highlighted. Each row links to Update (opens the full edit profile) and Call. Non-admins only see their own follow-ups; admins see everyone's.
Call Log page
A day-by-day log of every call: the CRM's own tap-to-call clicks plus calls synced from the Android companion app (which also records real talk-time duration — CRM-click calls don't have a duration). Shows total calls, total talk time, and unique farmers called that day. Non-admins only see their own calls; Admin/Super Admin/Warehouse roles can see everyone's and filter by executive.
Automatic alerts while working leads
These pop up on their own across the ERP (not just on the CRM page) so a lead can't quietly sit ignored:
- New Lead popup — appears the moment a fresh lead lands in your name (e.g. a live WhatsApp/Facebook ad lead), so it can be picked up within seconds.
- Follow-up Due popup — pops up automatically the moment a lead's scheduled follow-up time arrives, showing the farmer's name, mobile, interest, and notes, with quick links to call or open the lead.
- My Unattended Leads — the red 🔔 My Unattended Leads button on the CRM page (and an automatic nag every 15 minutes) lists every lead assigned to you that has never been touched at all since assignment (excluding ones already Converted or Lost) — a lead can't just sit forever because its one-time "new lead" popup was dismissed without action.
- Escalated Leads (admin only) — on the WhatsApp Inbox toolbar, admins see Facebook/Instagram/Click-to-WhatsApp leads across all executives that have sat untouched for 30+ minutes, with the option to set a follow-up, confirm the order, or reassign the lead to someone else on the spot.
🎯 Segments
What this page is for
A Segment is a saved filter over the CRM's leads/farmers — e.g. "New leads from Indore" or "High interest, Soyabin crop, not yet purchased". Instead of re-typing filters every time, save them once as a Segment, then pick that Segment as the audience when sending a WhatsApp campaign. This page is only visible to Admins and marketing-head executives (whoever has WhatsApp access).
Creating a segment
- Give it a Segment Name (required) — something that describes the audience, e.g. "Indore New Leads".
- Set any combination of filters: State, District, Source, Lead Status, Interest, Crop, Purchased (Yes/Not purchased), and a Lead Date range (From/To). Leaving any filter on "Any" means that field doesn't restrict the audience at all.
- As you change filters, the "X leads match" counter updates automatically (with a short delay) so you can see the audience size before saving.
- Click 💾 Save Segment.
Editing and deleting a segment
- Click the ✏ icon on any segment row to load its filters back into the form above for editing. The form switches to "Edit Segment: [name]" mode — make your changes and save. Click ✖ Cancel Edit to discard and return to creating a fresh segment instead.
- Click the 🗑 icon to permanently delete a segment (with a confirmation prompt). This only deletes the saved filter — it does not affect the leads themselves.
Using a segment in a campaign
Click 📣 Send Campaign on any segment row to jump straight to the WhatsApp campaign screen with that segment pre-selected as the audience. The Matching Leads count shown in the segment list is live — recalculated from the current CRM data — so it reflects how many leads would actually be targeted right now, not a stale number from when the segment was created.
⚡ CRM Triggers
What this page is for
CRM Triggers are "when X happens to a lead, automatically send WhatsApp template Y" rules. For example: automatically message every new Facebook lead a welcome template, or nudge a lead that's gone quiet for 5 days. This page is only visible to Admins and marketing-head executives (whoever has WhatsApp access).
Creating a trigger
- Trigger Name — a label for your own reference, e.g. "Welcome new FB leads".
- When This Happens (Event) — pick one of three event types:
- Lead status changes to — fires for leads whose Status equals the one you pick (e.g. "Contacted").
- New lead comes in from this source — fires for leads whose Source matches the one you pick.
- No activity on the lead for X days — fires for leads that have had no action recorded for at least that many days (and were created at least that long ago). Leads already marked Converted or Lost are automatically excluded from this one.
- 🎯 Lead Origin — filters which leads this trigger can ever apply to, based on how they entered the CRM, independent of the event condition above:
- Any — Meta Ads leads and manually added leads, both.
- Only leads that came from Meta Ads — the Facebook webhook tagged the lead with a campaign/adset/ad ID.
- Only leads added/uploaded manually in CRM — everything else: manual CRM entry, bulk import, referral, etc.
- Send Template — choose from your approved WhatsApp templates (only templates already Meta-approved appear here; the language field fills in automatically once you pick one). If none appear, a template must first be approved under WhatsApp Hub → Templates.
- 💰 Daily Limit — the maximum number of messages this trigger is allowed to send in one day. Required on every trigger, no exceptions.
- Click 💾 Save Trigger. It's created active (ON) by default.
Reading the trigger list
Each trigger row shows its Event and Lead Origin conditions, the Template it sends, its Daily Limit, how many it has Sent Today and Sent Total (all-time), and Eligible Now — a live count of leads that currently match the trigger's condition and haven't been messaged by it before.
- Click the ✅ ON / ⏸ OFF badge to toggle a trigger active or paused without deleting it.
- Click 🗑 to permanently delete a trigger.
🎫 Support Tickets
This page is the queue of customer support issues raised for farmers — mostly delivery complaints (wrong pincode, delayed parcel, damaged product) and India Post / courier problems that need someone to follow up. Every ticket links back to the related order and (where known) the farmer's lead record.
What you see by default
The page opens showing only tickets with status Open or In Progress — resolved/closed tickets are hidden automatically so the list only shows what still needs action. Three counters at the top always show the live count of Open, In Progress, and Resolved tickets regardless of what's currently filtered.
Filtering and searching
- Search — matches against the farmer's name, mobile number, ticket number, or the order's tracking ID.
- Status — leave on "Open + In Progress" for the normal working view, or pick a specific status (including Resolved/Closed) to look up something already handled.
- Category — filters by the type of issue the ticket was raised under.
Working a ticket
Each ticket card shows the farmer's name and mobile, the linked order number (if any), and the original complaint description. For any ticket that isn't already Resolved/Closed, there's an update form at the bottom of the card:
- Pick a status from the dropdown — In Progress, Resolved, or Closed.
- Optionally type a resolution note — this is what gets saved and shown later as the record of what was done.
- Click Update.
The first executive who updates a ticket's status is automatically recorded as its assignee if nobody was assigned yet — you don't need to manually claim a ticket first.
India Post tickets — special handling
When a ticket is tied to an India Post shipment, the card shows a highlighted "Ready reference for calling India Post" box with the tracking ID, the farmer's name/mobile, and India Post's IVR/Grievance phone number.
Once a ticket is Resolved or Closed
The update form disappears and is replaced by a simple line showing when it was resolved and the resolution note that was saved — this is the permanent record of how the issue was closed out. To reopen or re-check it, use the Status filter to find it again (it won't show in the default Open + In Progress view).
📊 Analytics & Reports
This section covers two related but separate screens: the main Analytics dashboard (sales figures, executive performance, RTO tracking) and the standalone Delivered Orders Report (a simple list of what was actually delivered in a date range). Both are admin-only.
Analytics dashboard — date range and executive filter
At the top you can set a Start date, End date, and optionally filter to one Executive. This filter applies to every tab on the page. If you don't set dates, it defaults to the last 30 days.
- ⬇ Export CSV / ⬇ Export Excel — downloads the raw order list for the selected range (order number, date, executive, farmer, mobile, status, total, COD amount).
- 📄 Download PDF Report — a formatted sales report for printing/sharing.
Overview tab
Shows headline numbers for the selected range: Total Orders, Dispatched, RTO (with RTO rate %), Revenue, Delivered, Pending, and Total Farmers. Below that:
- Executive Performance — each executive's order count, revenue, and delivery rate as a bar, sorted by revenue.
- Top Products — best-selling products by quantity in the range.
- Low Stock Alert — any product (not counting combo/bundle products) with 5 or fewer units in stock. This box only appears when something is actually low.
Day-wise tab
A bar chart plus a table of orders and revenue per day across the selected range — useful for spotting which days were busiest or slowest.
RTO Orders tab
Lists every order in the range that came back as RTO (Return to Origin), with the COD amount lost and the RTO reason. Click an order number to open Farmer History (order + tracking status), or "View" to open the full order.
Delivered Orders Report
A separate, simpler screen reachable outside the main Analytics tabs — it lists orders by their actual delivered date, not their order date, which makes it the right tool for questions like "what got delivered today/this week" rather than "what was placed today."
- Set the From/To dates and click 🔍 Filter.
- The table shows Order #, exact delivered timestamp, executive, farmer, the products in that order, order total, and COD amount.
- Use ⬇ Download CSV to export the same list.
🚚 Delhivery Courier
The Delhivery Hub is where you interact directly with the Delhivery courier's API — tracking, labels, NDR (delivery-failure) actions, rate calculation, pickups, and editing/cancelling shipments. It's admin-only. There are two related tools reachable from the top of this page: the India Post Bulk Status Update tool, and the PIN-protected Delhivery Configuration screen.
Find Waybill by Order
Type an order number to look up its Delhivery waybill/tracking number, if one exists on that order.
Shipping Label
Type a waybill number and click Generate to pull the official Delhivery shipping label PDF for that shipment.
NDR Management
NDR = Non-Delivery Report, i.e. Delhivery couldn't deliver the parcel on an attempt. Enter the waybill and choose an action:
- Re-attempt Delivery — tells Delhivery to try delivering again.
- Reschedule Pickup — reschedules the pickup instead.
Shipping Cost Calculator
Estimates what Delhivery will charge for a shipment before you commit to it — enter origin/destination pincode, weight, payment type (COD/Pre-paid), mode (Surface/Express), and expected status (Delivered/RTO/DTO), then Calculate.
Schedule Pickup
Books a real pickup request with Delhivery for a given date, time, and package count.
Edit Shipment
Lets you update a live Delhivery shipment's COD amount, weight, name, phone, or address by waybill number — only fill in the fields you actually want to change; blank fields are left as-is.
Cancel Shipment (API only)
Prefetch Waybills
Reserves a batch of waybill numbers from your Delhivery account quota ahead of time (up to 100 at once), useful if you need waybill numbers before shipments are actually created.
India Post Bulk Status Update
Reached via the 📮 India Post Bulk Status Update button at the top of the Delhivery Hub — despite living under this controller, it's actually for updating India Post (not Delhivery) tracking statuses in bulk, from data India Post has sent you outside the live tracking sync (e.g. an emailed report).
- Paste one row per line, comma-separated:
Article Number, Event Code, Event Description, Event Office, Destination Office, Tariff, Booking Date. Only the Article Number and Event Code/Description are required — leave the rest blank if you don't have it. - Click Process Update.
The system matches each article number to an order by tracking ID, updates its delivery status, and automatically detects RTO (Return to Origin) — both from an explicit RTO-type event code and from certain office names known to indicate a return (e.g. Kanadia, CJ-388, Scheme 140, BNPL Indore). If a row includes a tariff amount, it's saved once as a Post Office courier charge in Finance (never duplicated for the same article number).
After processing you'll see a summary: how many orders were updated, how many RTOs were detected, how many article numbers weren't found in the ERP, and how many courier charges were newly saved.
Configuration (PIN protected)
Shows the current Delhivery mode (Live/Staging), a masked preview of the API token, and the configured pickup location.
📮 India Post Courier
The India Post Hub is where you manage the Speed Post / India Post courier integration — tracking sync, pincode lookup, tariff calculation, booking, labels, and the delivery tracking report. It's admin-only for the Hub itself, though the tracking report and dispatch actions are also available to Warehouse executives. If credentials haven't been set up yet, a warning banner points you to Configuration.
Real-Time Tracking Webhook
The Hub shows a webhook URL you give to India Post when registering their callback. Once active, delivery/status updates land on Orders automatically, a popup shows the moment a parcel is delivered, and the courier charge is logged into Finance automatically — no manual "Track" click needed. This only works once the app is on a server with a fixed IP that's been whitelisted with India Post.
Pincode Search
Finds delivery post offices under a given 6-digit pincode — useful for confirming the Office ID needed for bookings.
Tariff Calculator
Estimates India Post's charge for a shipment: pick the product type (Speed Post, Business Parcel, 24hr/48hr variants), enter weight, optional dimensions and insurance, and source/destination pincodes.
Track Article
A live tracking lookup by article number — the same lookup used by the Orders page's tracking modal for Post Office shipments.
Book Order with India Post
Registers a booking against a barcode/article number you already have. Note that India Post's API does not generate barcodes for you here — you need one from your own allocated range first (see Configuration below for the one-click auto-barcode alternative used from the Orders page).
India Post Bulk Status Update
Reached via the link near the top of the Hub — this tool actually lives under the Delhivery Hub's controller but is for India Post. See the Delhivery Hub manual page for the step-by-step; in short, you paste tracking rows (article number, event code/description, etc.) and it bulk-updates matching orders' delivery status, detects RTOs, and records India Post charges into Finance.
Delivery Tracking Report
A separate page (reachable from Orders → tracking report, or directly) that groups all orders for a chosen date range into India Post's own tracking stages — Booking, In Transit, Out for Delivery, Delivered, RTO, and so on. Use the quick-range buttons (Today, Yesterday, 7 Days, 30 Days, This Month) or a custom date range, then download as PDF or Excel.
Important: RTO no longer restores stock immediately
Configuration (PIN protected)
Where India Post API credentials and settings are managed:
- API credentials — Username (your allocated India Post Customer ID), Password (default
Dop@1234unless India Post gave you a different one), Customer/Account ID, and API Base URL. You can also paste a token directly if you already have one. - Contract ID per Article Type — India Post issues a separate contract ID per service (Speed Post, Business Parcel, etc.); fill in whichever ones you actually use.
- Barcode Number Range — the block of barcode numbers India Post has allocated to you, per article type. Once set, the "Dispatch via India Post" one-click action on the Orders page auto-generates the next valid barcode (with the correct check digit) with zero manual typing. Ask India Post's web team for your allocated prefix and start/end range if you don't already have it.
📒 Accounting
This section is only visible to admin executives. It is the double-entry bookkeeping engine behind the ERP — every purchase bill, invoice payment, expense, vendor payment, and salary payment you record elsewhere in the system automatically creates entries here. You rarely need to touch it directly except to check balances or post a one-off manual entry.
The tabs
- Chart of Accounts — the full list of ledger accounts (Assets, Liabilities, Equity, Income, Expenses), each with a code, name, group, and current balance. Click View Ledger next to any account to see its transaction history.
- Ledger — pick an account and a date range to see every debit/credit line posted to it, with a running balance. Every vendor and every executive automatically gets their own ledger account, so you can look up "how much do we owe this vendor" or "how much have we paid this person" here.
- Trial Balance — total debits vs total credits across all accounts as of a chosen date. A green "Books are balanced" badge means total debits equal total credits; a red "Out of balance" badge means something needs investigating.
- Profit & Loss — total income vs total expense for a date range, with the resulting net profit or net loss.
- Balance Sheet — Assets vs Liabilities + Equity as of a chosen date, including the current period's retained earnings. A green badge confirms the sheet balances (Assets = Liabilities + Equity).
- Journal Voucher — where you post a manual entry (see below), and a list of the 30 most recent journal entries across the whole system, including auto-generated ones from purchases, payments, and payroll.
Posting a manual journal entry
Use the Journal Voucher tab for anything that doesn't already have its own screen elsewhere (e.g. correcting a mistake, recording a bank charge, an opening balance adjustment).
- Set the Date and, optionally, a Narration describing what the entry is for.
- For each line, choose an Account from the dropdown (grouped by Assets/Liabilities/Equity/Income/Expenses) and enter an amount in either the Debit or Credit column — not both.
- Use + Add Row if you need more than two lines. Remove a row with the ✕ button.
- Click Post Journal Entry.
Where entries come from
Most journal entries you'll see under Recent Entries and in account ledgers are posted automatically by other parts of the ERP — recording a purchase bill, a vendor payment, an invoice payment, an expense, or a salary payment all create their own journal entries behind the scenes. You don't need to duplicate those here; use Journal Voucher only for entries that don't have a dedicated screen.
🧾 Purchases & Vendors
This section is only visible to admin executives. It covers buying stock from vendors: recording vendor details, purchase bills, and payments made to vendors. Every purchase bill you save here automatically increases stock for the products on it and posts entries to Accounting — you don't need to update stock separately.
Vendors
Add a vendor before you can record a bill against them. Fill in the Vendor / Company Name (required) plus optional Contact Person, Mobile, Email, GSTIN, and Address, then Save Vendor. Saving a vendor automatically creates a ledger account for them in Accounting, so their balance due always reflects actual bills and payments.
The Vendors table shows each vendor's current Balance Due (red if they're owed money, green if settled) and a 📒 Ledger link that jumps to their full transaction history in Accounting.
Purchase Bills
This is where you record stock coming in from a vendor.
- Enter the Bill / Invoice No (must be unique — the system will reject a duplicate), Bill Date, and select the Vendor.
- For each product received, add a row: pick the Product (its current stock is shown next to the name), Qty, Rate, and GST %. Selecting a product auto-fills its last purchase rate and GST rate, which you can override. Use + Add Product for more items.
- Line totals, subtotal, GST, and grand total calculate automatically as you type.
- Click Save Bill.
Editing or deleting a bill reverses its stock and ledger effect first, then (for edits) re-applies the new item list. In practice this means: if you edit a bill's quantity from 10 to 15, the system first removes the original 10 from stock, then adds back 15 — so stock ends up correct even if you change products entirely between the old and new version. Deleting a bill removes its stock and ledger impact entirely.
Vendor Payments
Use this tab to record money paid out to a vendor.
- Select the Vendor — their current balance due shows in the dropdown.
- Optionally select a specific Against Bill to apply the payment to (or leave as "General / On Account" for a payment not tied to one bill). The bill dropdown only lists that vendor's unpaid/partially-paid bills.
- Enter Date, Amount, Payment Mode, and optional Reference No / Notes.
- Click Save Payment.
Deleting a payment from the Payment History table reverses its ledger entry and, if it was tied to a bill, subtracts it back out of that bill's amount paid.
💰 Payroll
This section is only visible to admin executives. It handles executive salaries — setting each person's monthly salary, running payroll to accrue what's owed, and recording the actual payments made to them.
Salary Setup
This tab lists every executive with their role, mobile number, current Monthly Salary, and Salary Due (unpaid balance across all their salary records). To set or change someone's monthly salary, type the amount in the box next to their name and click Save. Leaving it blank means they have no salary configured and will be skipped when payroll is run.
The 📒 Ledger link (once an executive has a ledger account) opens their full salary transaction history in Accounting.
Run Payroll / Records
Use Run Payroll for a Month to generate salary records for a period:
- Pick the month/year and click Run Payroll.
- The system creates one salary record for every active executive who has a monthly salary set on the Salary Setup tab, using that salary amount.
- Each new record automatically posts a ledger entry: Debit Salary Expense, Credit that executive's salary payable account.
The Salary Records table below shows every record with Amount, Paid, Due, and status (Unpaid / Partial / Paid). From here you can:
- ✏️ Edit a record — e.g. to add a bonus or a deduction for a specific month. Editing reverses the old ledger entry and posts a new one for the updated amount; use the Notes field to explain why the amount was changed.
- Delete a record — reverses its ledger entry entirely.
Salary Payments
Use this tab to record an actual payment made to an executive.
- Select the Executive — their total salary due shows in the dropdown.
- Optionally pick Against Month to apply the payment to a specific salary record (only their unpaid/partially-paid months are listed), or leave it as "General / On Account".
- Enter Date, Amount, Payment Mode, and optional Reference No / Notes.
- Click Save Payment.
Deleting a payment from Payment History reverses its ledger entry and, if it was tied to a specific month, subtracts it back out of that record's amount paid.
🏦 Finance
Finance is only visible to admin executives, and is additionally locked behind a 4-digit PIN. It's the money control center: what's actually been received (not just ordered), expenses, courier reconciliation, invoices, and GST filing.
PIN Lock
The first time you open Finance in a session, you're asked for a 4-digit PIN. Enter it on the "Enter Finance PIN" screen to unlock. Once unlocked, a 🔒 Lock button appears at the top of every Finance tab — click it any time to re-lock the section immediately (useful before handing the device to someone else). The PIN itself is set from Settings, not from here.
Overview
The default tab. Use the date range fields at the top (and Apply) to pick the period you want to see. Four figures are shown:
- COD Income Received — money actually posted to the ledger as received in that period (based on the date the payment was recorded, not the order date).
- Expenses — total of all expenses logged for the period.
- Courier Charges — total courier/delivery charges for the period.
- Gross Profit — COD Income minus Expenses minus Courier Charges.
📄 Download Finance Report PDF exports the same figures for the selected range as a PDF.
Expenses
Use Add Expense to log a business expense — date, category, description, amount, payment mode, and an optional transaction ID. Saving it immediately posts a matching entry to Accounting (debit the expense category, credit the payment mode account). The table below lists every expense in the selected date range, with a Delete option per row (this also reverses the ledger entry).
Income (Remittance)
Labeled "Income" tab — this is where COD money actually received from a courier gets recorded manually (as opposed to the bulk courier uploads described below).
A given Reference Number can only be used once — the system blocks a duplicate entry rather than double-counting the same remittance.
Courier Uploads
The Courier Charges tab has four bulk-upload cards for reconciling courier export files, plus a manual entry form and a running list of courier charges for the period.
- 📮 Post Office COD Bill (upload the India Post Articles_Bill_COD*.xlsx) — matches each row to an order by Article Number/tracking ID, records the COD amount received, books the commission as a separate courier charge, and marks the order paid.
- 📦 PO Delivery Charges (upload India Post's Type 3 (exported_data)*.xlsx) — matches each article's delivery tariff to an order and books it as a courier charge.
- 🚚 Delhivery COD Remittance (upload remittance_transactions_export*.csv) — only rows marked "Delivered" are processed; matched by Order Number or Waybill, and the order is marked paid.
- 🧾 Delhivery Charges (Invoice) (upload Delhivery's per-shipment Invoice CSV) — the delivery charge, RTO charge, and COD commission are booked together as one courier charge per waybill; only waybills that already match an ERP order are accepted.
You can also add a courier charge manually below the upload cards if you don't have an export file for it.
Products — Order Value
Shows every product's Buy Price, Sell Price, quantity sold, order value booked, cost, and gross margin. You can edit a product's Buy Price, HSN Code, and GST% directly in this table and click Save — these are used for invoice GST calculations.
Invoices
Invoices are generated per order, from the order's own detail page ("Generate Invoice" link), or by entering an Order ID directly on the GST tab's "Generate Invoice" box. An invoice is only available once an order's payment has been received — attempting to view/download one before that is blocked. Two invoice types are issued automatically depending on the order:
- Tax Invoice — issued once payment is received; gets a permanent invoice number.
- Bill of Supply / Proforma or Cancelled — shown for orders that are cancelled/RTO'd, or not yet paid.
From the invoice page you can 🖨️ Print / Save as PDF (browser print) or 📄 Download PDF directly.
On the GST tab, Bulk Invoice Download lets you generate a single PDF containing every paid order's invoice in a date range (max 75 orders per run — narrow the date range if you have more), plus a separate Download Invoice Details (Excel) export listing every line item with invoice number and payment status.
GST
Also on the GST tab:
- GSTR-1 Export — downloads an Excel file in the GST offline-tool format for the selected date range (paid orders only), ready to send to the GST portal or your CA.
- Company GST Settings — your registered company name, GSTIN, address, state, PAN, phone, email, and bank details used on every invoice. A checkbox here enables automatic monthly GST export: on the last date of each month (after 9 PM), the GSTR-1, Invoice Details, and all Invoice PDFs are generated and emailed automatically, with a reminder every 4 hours until someone downloads them.
- CA Mail Recipients — add the accountant's email as a To recipient (required for the monthly mail to go out at all) and anyone else as CC/BCC.
- Monthly GST Exports — a history table of every auto-generated monthly export, its download status, how many reminders were sent, and whether the CA mail has gone out. Download GSTR-1 / Details / Invoices from here at any time.
RTO & Payment Reconciliation
Shows the latest 500 dispatched orders and what happened to each: payment received (and when), returned to origin/RTO (and when), or neither yet. Orders that are neither paid nor RTO'd are flagged "⚠️ Pending" and counted in a warning banner at the top — check these regularly, since money may be stuck with the courier.
Payment Reminders
Lists delivered orders whose payment has been pending 3+ days. For each, click 💬 Remind to open a pre-filled WhatsApp message to the farmer, then ✓ Mark Reminded to log that a reminder was sent — the order then drops off this list until its payment status actually changes (it isn't a snooze; it just avoids you re-sending needlessly on the next visit). This tab also always shows every currently-overdue order regardless of the date range filter.
⚙️ Settings
Settings is only visible to admin executives (a few actions — editing another admin, promoting to Super Admin, and marking someone on leave — are Super Admin only, noted below). It's the control panel for the whole ERP: who can log in and what they can see, the dropdown lists used across the app, WhatsApp message templates, lead-source integrations, the daily report email, and the careers/hiring popup.
General
Three things live here:
- Security PIN Lock — set or change the 4-digit PIN that gates Finance, Products P&L, and the Delhivery/India Post configuration screens. Enter a new PIN and confirm it, then Save PIN. If a PIN is already set, a Remove PIN button appears to turn the requirement off entirely.
- Post Sales to Accounting Ledger — a one-time (but safe to re-run) catch-up button that posts any already-paid order or Finance entry that predates ledger tracking into Accounting. Entries already posted are skipped, never duplicated.
Executives
Manage every login account for the ERP.
- Add Executive — fill in Name, Mobile (used to log in), Email, Password, Role, and optionally a Desk. Tick which pages (Page Access) this person can see; by default all are checked. If you're a Super Admin, you can also set individual Admin Permissions (export orders/farmers, permanently delete leads, transfer leads) — these only apply when the role is Admin.
- The Executives table lists everyone with role, desk, active/inactive status, and (for Super Admins) leave status. Click Edit to open an inline row for changing any of these, including resetting a password.
- 🗑 Delete (Access) does not delete the person or their history — it only disables their login. All their orders, leads, and activity history stay completely intact. Use ✅ Restore Access to re-enable login later.
Mark On Leave (Super Admin only) opens a date-range popup — the executive is excluded from new lead assignment for every day in that range. If they return early, use 🏖️ On Leave — End Now on their row to re-enable them immediately instead of waiting out the original range.
Dropdown Options
One option per line, per list. These control the reason/category dropdowns used throughout the ERP — order reject/hold/cancel/RTO reasons, expense categories, and payment modes. Edit the text areas and click Save Dropdown Options. Leaving a list completely empty resets it back to the system default rather than saving it blank.
WhatsApp Templates
One message per event that powers the floating WhatsApp button available on every ERP page. Use {name} in the text as a placeholder — it's automatically replaced with the farmer's name when the message is sent. Edit any template and click Save WhatsApp Templates.
Lead Sources (Facebook, IndiaMART & more)
Four integrations live on this tab:
- Facebook Lead Ads Setup — connect a Meta Lead Ads form so new leads flow straight into the CRM, auto-tagged "Facebook Lead Ad" and rotated between active executives. Copy the Webhook Callback URL and Verify Token shown here into your Meta App Dashboard (Webhooks → Page), and subscribe to the "leadgen" and "messages" fields. Paste a Page Access Token, optional Facebook Page ID, Instagram Business Account ID, and Ad Account ID, then Save Facebook Settings. A "Marketing Hub Readiness" panel shows which permissions (Page Posting, Messenger Inbox, Ads Dashboard, Instagram) are actually working with the current token.
Also add the App Secret (Meta App Dashboard → Settings → Basic) — without it, anyone who discovers the webhook URL could send fake "new lead" requests straight into the CRM.
- Facebook Conversions API — enter a Dataset ID from Meta Events Manager so every Facebook lead automatically reports a "Lead" event back to Meta, helping its ad delivery optimize toward people who actually convert. 🧪 Send Test Event confirms the connection is working.
- IndiaMART — leads are pulled on demand (not pushed automatically) using a CRM Key from the IndiaMART seller panel (Lead Manager → CRM Integration). Save the key, then click 🔄 Sync Now whenever you want to pull in leads received since the last sync. "Last synced" shows when that last happened.
- Other Lead Sources (Google Ads, JustDial, a website form, etc.) — add a source name to generate its own secret webhook URL. Whoever configures that platform posts lead data (name/mobile/email/city/state/notes) as JSON to that URL. Remove a source to immediately disable its webhook.
Daily Report Email
Configures an automatic daily summary email — today's delivery tracking plus the same Sales Report available from the Dashboard, sent as a PDF attachment. Set the Send From address, Send Time, and one or more comma-separated Send To addresses, then tick Enable daily report email and save. 📤 Send Report Now sends an on-demand copy immediately with today's current numbers, without affecting the regularly scheduled send.
Careers/Hiring
Controls the "We're Hiring" popup shown to website visitors and the homepage Apply button. Toggle it on/off, choose a Type, an optional Auto-stop Date (after which it stops showing itself), a Popup Title and short Message, an optional custom Apply Link (leave blank to use the built-in application form), and an optional popup image. Applications submitted through it land in ERP → Recruitment → Applications, which is Super Admin only.
Activity Log
A separate page (reached from the main menu, not a Settings tab) showing a running audit trail of actions taken across the ERP — order creation, dispatch, cancellations, RTOs, CRM saves, logins/logouts, settings changes, calls, and WhatsApp sends. Filter by user, action type, and date range. The summary panel at the top shows a per-user activity count; the table below lists the latest 300 matching entries with timestamp, user, role, action, details, and the page it happened on.
📋 Recruitment / Careers
This page lists everyone who has applied for a job through the public Careers form on the website. It is separate from the CRM/Leads screens because job applicants are not customers or farmer leads — they're people applying to work at Bhumija Elevate.
Viewing applications
The main table shows every application: Name, Mobile, Email, Type (the job category they applied for), Qualification, Experience, Resume, and when they applied.
- Click View next to Resume to open the applicant's uploaded resume file in a new tab. If it shows "—", no resume was attached.
- Use the Search box to find an applicant by name, mobile number, or email.
- Use the Type dropdown to filter to a specific job category.
Editing an application
Click Edit on any row to correct or update an applicant's details — name, mobile, email, location, qualification, experience, or job Type. This is useful when an applicant calls in with a correction, or when staff want to reclassify which role they should be considered for. Click Save to apply the change.
Deleting applications
There are two different levels of delete, and the difference matters:
- Delete — removes the application from the main list, but it is not gone. It moves into a recoverable "trash" state and can be brought back at any time.
- Show Deleted — click this button (top of the list) to switch the table to show only deleted applications. From here you can:
- Restore — brings the application back to the active list, exactly as it was.
- Permanent — deletes it for good. This also deletes the resume file from the server. This action cannot be undone, and the system will ask you to confirm before proceeding.
📱 WhatsApp Business API & Bot Config
WhatsApp Hub is where the WhatsApp Business connection, the auto-reply bot's content, message templates, and bulk marketing campaigns are all configured. It's one tabbed page — click the tab buttons near the top (Templates, Campaigns, Bot Manage, Send Test, Messages, Pricing, Connection & Setup) to switch sections; nothing reloads the page. The "Send Campaign" page you may reach separately (via a bookmarked link) simply redirects here, opening the Campaigns tab.
At the top of the page you'll always see a hero strip showing the connected WhatsApp Business name, phone number, and quality rating, plus four quick stats: today's estimated spend, this month's estimated spend, messages sent today, and messages failed today.
Settings (Connection & Setup tab)
This tab holds everything about the underlying Meta connection:
- Connection Status — shows the linked business name, phone number, quality rating, and verification status pulled live from Meta.
- Inbound Messages Webhook — the Callback URL and Verify Token that must be pasted into Meta's App Dashboard so replies and new contacts reach the CRM Inbox. There's also a Subscribe Now button — pasting the webhook URL alone is not enough, the WhatsApp Business Account also has to be explicitly told to send this app its events. If messages aren't arriving even though the webhook looks configured, this is almost always the fix.
- Credentials & Estimate Rates (full Admin only) — Phone Number ID, WABA ID, Meta App ID (needed only for photo/JPG templates), and the Access Token. Also sets the ₹/message estimate rates used for the "Est. Spend" figures shown at the top of the page — these are our own internal estimate, not Meta's actual bill.
Templates
Every WhatsApp message this system sends outside of a live conversation — order confirmations, dispatch alerts, offers — must go through a pre-approved Meta template. Templates are created here and submitted to Meta for approval, which usually takes a few minutes to a few hours.
- Click + Create New Template, fill in the Template Name (lowercase, underscores only), Category (Utility for order updates, Marketing for offers/promotions, Authentication for OTP), Language, an optional Header (text or photo), and the Body Text. A live preview on the right shows how it will look on WhatsApp as you type.
- To personalize the message per recipient, click the "+ Variable 1 / 2 / 3" buttons to insert placeholders into the body — these get replaced with each recipient's own value when sent (like mail-merge). The first or last word of the message cannot be a variable — there must be real text before and after it, or Meta will reject the template.
- Up to 3 optional Buttons can be added (quick reply, website link, or phone number).
- Click Sync from Meta any time to pull the latest approval status, or to bring in templates created directly on Meta's side.
- Each template row can be Edited (body/header/buttons — this resubmits it to Meta for re-approval), Hidden, or Deleted.
Bot Menu (Bot Manage tab)
This is where you control what the WhatsApp auto-reply bot says and shows when a farmer messages in. It's split into a few blocks on the same tab:
- Bot Offer / Discount Text — the message (plus an optional photo) shown when a customer taps the bot's "View Offers and Discounts" option. There's no separate offers system — this is a single free-text field with an image.
- Bot Menu — Turn Options On/Off & Order — the bot's 8 built-in main menu options are listed here. Untick a box to remove that option from the menu entirely; use the ↑ / ↓ buttons to reorder — whichever is on top becomes option "1" in the menu the farmer sees. Click Save Menu when done.
- Bot Menu — Add/Delete New Option — lets you add a custom menu option beyond the 8 built-in ones, with your own title, short description, and reply text the customer receives when they tap it. Custom options only appear if there's room left within WhatsApp's hard limit of 10 menu rows, after the built-in options.
Products (Bot Manage tab)
The Products block on Bot Manage shows every product as the bot will present it — name, category, price, and live stock (synced straight from the ERP, always accurate). For each product you can:
- Add/Change WhatsApp Photo — upload a photo specifically for what WhatsApp customers see. This is independent of the product's normal Stock photo — changing one never affects the other. If no WhatsApp-specific photo is set, the Stock photo is used as a fallback (shown with a small "Stock photo (fallback)" tag).
- Edit — jumps to the full product edit page in Stock for anything beyond photo/description.
- Add/View/Edit Details — a short Description and a Dose/Quantity field shown to the customer alongside the product in the bot (e.g. "25 ml/15L paani"). This is separate from the main product edit page, kept here for convenience.
- Delete — permanently removes the product (and it disappears from the bot too). This is the same delete as removing it from Stock.
Categories (Bot Manage tab)
Controls how products are grouped when a farmer browses by category in the bot.
- Add — create a category name ahead of assigning any product to it, so it's visible in the list immediately (useful when planning ahead).
- Rename — renames the category across every product that currently has it, in one go.
- Hide / Show — a hidden category no longer appears as its own entry in the bot's category list; its products fold into an "Others / Various" bucket instead — they're never actually removed from being orderable.
- Delete — removes the category outright. Products that had it are not deleted — only their category field is cleared, so they land in "Others" rather than disappearing.
Opt-outs (Campaigns tab)
The "Opted-Out / Suppressed Numbers" panel at the bottom of the Campaigns tab lists mobile numbers that must never receive a marketing campaign. A number lands here either automatically (it replied "STOP" to a message) or manually — use the Suppress form to add a number yourself, e.g. when a farmer asks over a phone call rather than by texting STOP. Click Remove on any row to re-include that number in future campaigns.
Campaign History
Also on the Campaigns tab, this table lists every campaign that has been sent — grouped by campaign name and template — showing when it went out, total recipients, how many failed, and the estimated cost. Click Export CSV to download the complete history (the on-screen table is capped at the 50 most recent).
Send Campaign
This is the main bulk-send form on the Campaigns tab, built in two steps:
- Message — give the campaign a name (for your own record-keeping, shown in History), and pick an approved Template. Only templates Meta has approved (and that aren't Hidden) are selectable. If the template has variables, fill them in — if sending to CRM leads and the first variable is left blank, it's automatically filled with each farmer's own name. If the template has a photo header, a public image URL must be supplied (the template's original approved sample photo is not reused automatically on every send).
- Audience — choose one of three ways to pick recipients:
- Select from CRM — tick individual leads from a filterable, searchable list (filter by status, interest, source, or consent).
- Upload / Paste Numbers — paste 10-digit mobile numbers (one per line or comma-separated) or upload a .csv/.txt file.
- Use a Segment — send to everyone matching a saved Segment (create/manage segments on the separate Segments page). Leads without marketing consent are automatically excluded here.
- Click Send Campaign. Messages are queued and go out over the next minute or two, not instantly — check the Messages tab or Campaign History to follow status.
Send Test
Use this tab to send a single template message to one mobile number before running a full campaign — useful for checking how a template actually renders on a real phone. Enter the recipient's number, pick an approved template, fill in any body parameters (comma-separated, in order), and supply a header image URL if the template needs one.
Messages (log)
A running log of every WhatsApp message sent through the system (template, campaign, or transactional) — date, recipient, template used, category, delivery status, estimated cost, and who/what triggered it. Failed sends show the error reason underneath the status badge.
Pricing
Two different numbers live here, and it's worth knowing the difference: the "Est. Spend" figures shown across the page are our own in-house estimate (messages sent × the rates you set under Connection & Setup). This tab additionally lets you Sync Real Pricing (Last 30 Days) directly from Meta, which is Meta's own approximate figure by message category — closer to the truth than our estimate, but still not the authoritative invoice. For the actual bill/payment history, only Meta Business Manager's Billing Hub can be relied on.
🌳 Bot Flow Builder
This is where you control what the WhatsApp bot says and does at each step, without needing a developer. There are three parts to it: editing the wording of the 8 built-in menu options, building brand-new custom menu options with your own branching conversation on a visual canvas, and analytics showing where farmers drop off inside a flow.
The Bot's 8 Main Options
Every farmer who messages the WhatsApp bot sees the same 8 tappable options: Crop Problem, New Order, Offers, Track Order, Delivery Complaint, Complaint, Product Price, Talk to Executive. Their underlying behaviour (what data gets pulled, what happens next) stays fixed — but you can freely edit exactly what the bot says at each step: the prompts, confirmations, and error/retry messages.
Click ✏️ Edit Bot Messages to open this editor. Each of the 8 options is shown as its own diagram — a strip of connected steps from top (farmer taps the option) to bottom (flow ends). Each step is a colored circle plus a card:
- 💬/✉️ blue card — the bot sends a plain message.
- ❓ purple card — the bot asks a question and waits for the farmer's reply.
- ⚠️ small red card — a retry/error message shown when the farmer's reply wasn't understood (e.g. invalid mobile number, product not recognised).
- ⚙️ gold card — a background action (like creating a support ticket) with no message of its own — these are not clickable, purely descriptive.
- 🏁 dark card — the flow ends (back to the main menu, or handed to a human).
Only the white cards with actual text are clickable. Click one to open an editor popup, change the wording, and click 💾 Save — the new wording goes live immediately. A small dot next to the step's title means it's currently different from the factory default. Click ↺ Reset to Default in the popup to put the original wording back.
{this} that the bot fills in automatically (farmer name, order number, price, etc.) — don't delete these when editing, or the message will look broken to the farmer.
Custom Flows (Visual Canvas)
Beyond the 8 built-in options, you can add entirely new tappable menu options with your own conversation logic — useful for things like a seasonal scheme, a survey, or a promotional flow that doesn't fit any existing option.
On the main Bot Flow Builder page, use ➕ Create New Flow: give it a Title (max 24 characters — this is literally the button text the farmer sees in the WhatsApp menu) and an optional Description (max 72 characters), then click 🔀 Create Flow. This opens the canvas editor for your new flow.
On the canvas, build the conversation by adding nodes from the toolbar and connecting them:
- ✉️ Message — bot sends text (and optionally an image) and moves straight to the next node.
- ❓ Question — bot sends text and waits for the farmer's reply before moving on.
- 🔀 Condition — branches based on a keyword in the farmer's reply: if their answer contains a chosen keyword it follows that branch, otherwise it falls through to the Default path.
- 🙋 Handoff — hands the conversation over to a human executive.
- 🏁 End — the flow finishes and the farmer sees the main menu again.
Drag a node by its colored header bar to reposition it. To wire two nodes together, use the connect button on the source node and then click the node you want it to point to. Every flow needs exactly one node marked ⭐ Start — that's the node that runs first when a farmer taps this menu option. Use the zoom controls (top right) to zoom in/out or reset the canvas view on a busy flow.
Click 💾 Save Flow to save your changes — nothing is saved until you click this. Deleting a node (the × on its header) also removes any connections pointing to it.
On the main Bot Flow Builder list, each custom menu item shows whether it has a flow built yet ("✅ Flow built (N nodes)" vs "— Fixed reply only"). Use 🔀 Edit Flow to reopen the canvas, or the 🗑 button to delete the whole menu item and its flow (this cannot be undone).
Flow Analytics
For any custom flow that has real usage, click View Analytics → (shown inline on the Bot Flow Builder list once a flow has at least one run) to see how farmers are actually moving through it. Choose a period — Today, 7 Days, 30 Days, All Time — and you'll see five numbers:
- Started — how many farmers entered this flow.
- ✓ Completed — reached a proper End node.
- 👤 Handoff — got handed to a human executive instead of finishing on their own.
- ⏳ Active — still mid-conversation, replied within the last 24 hours.
- ⚠️ Abandoned — went quiet for 24+ hours without completing or being handed off.
Below that, "Where customers drop off" shows every node in the flow in order from Start to End, with what percentage of everyone who started actually reached that node. A node with a noticeably lower percentage than the one right above it is where farmers are getting stuck or giving up — a good sign that step's wording, question, or option needs rethinking.
🎁 Combos
Combos let you bundle two or more existing products together and sell them as a single item, usually at a discount. A combo automatically shows up in Stock and on the New Order form under a "Combos" category, exactly like a regular product — customers (and the WhatsApp bot) can pick it the same way. This page lives under WhatsApp Hub because combos are primarily offered to farmers through the bot, but they can be ordered manually too.
Creating a combo
- Go to WhatsApp Hub → Combos, and use the "Create New Combo" form at the top.
- Enter a Combo Name (e.g. "Fungal Control Combo") and optionally upload a Photo.
- Add at least 2 products using the product rows — pick a product from the dropdown and set its quantity. Use Add Product to add more rows (a combo can hold more than 2 products).
- As you pick products and quantities, Auto Total fills in automatically (sum of each product's normal sell price × quantity).
- Combo Price starts out equal to the Auto Total, but you can type your own (lower) price here to give the customer a discount. Savings updates automatically to show the difference.
- Click Save Combo.
Editing a combo
Click Edit on any combo card to load it back into the form at the top — change the name, photo, products, quantities, or price, then save. This replaces the combo's product list with whatever is on screen when you save.
Hide / Show (deactivating)
Use the Hide button to take a combo off sale without deleting it — its stock is immediately set to 0 so it can't be picked on a new order, but it stays visible here and in past order history. Click Show to reactivate it (its stock recalculates automatically once active again).
Deleting a combo
Click Delete to remove a combo entirely. If the combo has already been used in at least one order, deletion is blocked — you'll be told to use "Hide" instead, since deleting it would break the order history that references it.
How combo stock works
Because of this, if a combo's stock looks lower than expected, check the stock levels of its individual component products rather than the combo itself — that's almost always where the shortage is.
💬 WhatsApp Inbox
What this page is for
This is the shared team inbox for every conversation that comes in on WhatsApp, plus Facebook Messenger and Instagram DMs (for staff with marketing access). Everyone works from one screen instead of switching between apps. What you can see here depends on your role: most executives only see conversations tied to their own assigned leads/orders, while Admin, Super Admin, Warehouse and Marketing Head accounts see every conversation.
Layout
- Left column — Conversations. Every WhatsApp/Messenger/Instagram thread, most recent first. Each row shows the contact's name (or number), a channel icon (💬 WhatsApp, 📘 Messenger, 📸 Instagram), the last message preview, and — if you can see everyone's conversations — which executive that lead/order belongs to.
- Right column — the open conversation, with the message thread and a reply box at the bottom.
Each conversation row can also show small stickers: a coloured 🏷️ status chip (e.g. Contacted, Cold), an interest/order flag (🟢 High, 🟡 Medium, ⚪ Low, 🔴 Not Interested, or 🔵 Order Placed once confirmed), and a 📅 follow-up date (turns to a red ⚠ once it's overdue). A left-edge colour bar also marks a conversation as pending (orange), confirmed (green), or utility-only (grey).
Searching and filtering
- Search box — matches by name, mobile number, or message text.
- Filter tabs — All, 👤 Leads, ⏳ Pending Orders, 🔔 Utility, 💬 Needs Reply.
- Executive dropdown and date range (quick presets or a custom From/To pair) — only shown to roles that can see everyone's conversations.
- ✕ Clear resets every filter back to All.
🔔 Utility means an automated system message (e.g. Order Placed / Dispatched / Delivered receipts) was sent to a number with no real lead behind it, and the customer never actually replied. Once a real lead exists, or the customer replies, that conversation moves out of Utility.
Replying
- If the customer has messaged within the last 24 hours, you'll see a normal text box — type and hit Send. This is a free-form "session" message.
- If more than 24 hours have passed since their last message, WhatsApp's rules block free-form replies. The composer switches to Send a template instead — pick an approved template, fill in any 1/2 placeholder fields it needs, and send.
- The composer icons let you attach 😊 Emoji, insert a 💬 Canned Reply, attach a 📎 photo/video/document/audio file, or 🎙️ record a voice note directly in the browser.
- Tap ↩ on any message to reply-in-context (quotes that message above your reply, same as WhatsApp itself).
- Hover a message and tap 😊 to send a quick emoji reaction on it.
Canned Replies
Click the 💬 icon in the composer to open your saved canned replies and insert one with a click. Click ⚙ Manage Canned Replies (at the bottom of that same panel) to add a new one (Title + Message) or delete an existing one. These are shared/reusable message templates for things you type often — not to be confused with WhatsApp's own approved message templates used outside the 24-hour window.
Deleting a message or conversation
🗑 on a single message deletes just that message locally. 🗑 Delete Chat in the conversation header deletes the entire thread from your panel and resets the bot's memory of that conversation, so if the customer messages again later, they'll get the welcome menu fresh rather than picking up mid-flow.
Lead actions (only shown when the open conversation is tied to a real lead)
- ✅ Confirm Order / ↩ Undo Confirm — a quick triage flag meaning "this lead's order is confirmed." This does not create or edit an actual order record — it's only for tracking in this inbox. Orders are still created the normal way from New Order.
- 📝 Note — add a dated, attributed remark straight onto the lead's CRM notes without leaving the inbox. Notes are appended, never overwritten, so nothing you or a colleague wrote earlier gets lost.
- 📅 Follow-up — set the lead's Status (has the team actually talked to them?), Interest (what did they say?), and next Follow-up date/time, plus an optional remark. Status and Interest are deliberately two separate signals — see the tip below.
- 🔁 Transfer — instantly reassign this lead to another executive, if you have transfer permission. A lead can never be transferred to a Super Admin account.
- 📇 View in CRM — jumps to this lead's full record in the CRM module.
Bot control
The auto-reply bot answers customers automatically until a human needs to take over. Bot controls are visible to Super Admin accounts only:
- 🤖 Bot ON/OFF (inside an open conversation) — turns the bot on or off for that one conversation only. Turning it back on shows the customer the welcome menu again on their next message, rather than resuming wherever the bot last left off.
- 🤖 Bot Master: ON/OFF (top toolbar) — the master switch. Turning it OFF silences the bot completely, for every conversation, including numbers that haven't messaged yet. Turning it back ON does not force every individual conversation back on — each one returns to whatever its own toggle was last set to.
Escalated Leads and Unattended Leads
These are two separate reminder pop-ups, not pages you navigate to:
- 🚨 Escalated Leads — visible only to Admin/Super Admin, as a button in this inbox's toolbar. Shows every Meta-sourced lead (across all executives) that has sat unattended for 30+ minutes, with quick links to call, WhatsApp, open the chat in this inbox, or reassign it. Checked automatically in the background every 2 hours, or click the button any time to check right now.
- 🔔 Unattended Leads — a reminder for your own leads that have never been touched since assignment. It pops up automatically for every executive every 15 minutes when something is overdue, and can also be triggered on demand from the CRM page (not from this inbox). Setting a follow-up on a lead from that pop-up marks it attended.
Exporting Meta leads (Super Admin only)
📊 Export Meta Leads in the toolbar downloads an Excel file of every Facebook/Instagram/ad-attributable lead, with its assigned executive and full chat history, plus a summary pivot sheet. The same export also goes out automatically as a weekly email.
📢 Facebook Ads
What this page is for
The Facebook Ads Dashboard pulls live campaign and spend data from your Meta (Facebook) Ads account and lines it up against what actually happened in this ERP — leads received and orders placed — so you can see whether ad spend is turning into real business, not just clicks.
Who can open this page
Only executives with the Admin or Marketing Head role can view this dashboard. Anyone else who tries to open it will get an access-denied error.
Connecting your Ads account
If the dashboard shows a "Not Connected" message instead of numbers, it means the ad account isn't linked yet. To fix this:
- Go to Settings → Lead Sources (a shortcut link is shown right on the "Not Connected" card).
- Enter your Meta Ad Account ID.
- Make sure the access token saved there has the ads_read permission. This is different from the permission your Lead Ads webhook token already has, so an older token that only receives leads may not be enough — it needs to specifically include ads_read to show campaigns and spend here.
Choosing a date range
At the top of the page is a "From" and "To" date filter. When the page first loads, it defaults to the last 30 days. Pick different dates and click Apply to reload every number on the page — spend, leads, orders, revenue, and both tables — for that period.
The summary numbers
The row of stat cards near the top shows, for the selected date range:
- Ad Spend — total amount spent across all campaigns, as reported by Meta.
- Leads — count of ERP leads whose source is recorded as "Facebook Lead Ad," created within the selected dates.
- Qualified Leads — of those leads, how many have reached a status of Contacted, Active, or Converted (i.e. an executive has actually engaged with them, as opposed to a fresh, untouched, or written-off lead).
- Cost / Lead — Ad Spend divided by the number of Leads.
- Orders — orders placed within the date range whose mobile number matches one of those Facebook leads.
- Revenue — total value of those matched orders.
- Estimated/Attributed ROAS — Revenue divided by Ad Spend, expressed as a multiple (e.g. "3.20x").
Campaigns table
Lists every campaign in the connected ad account with its Name, Status (an "ACTIVE" badge is highlighted differently from paused/other statuses), Objective, and Daily Budget. This list is not limited by the date filter — it reflects the current state of the account. If nothing shows up here, no campaigns exist on the connected ad account, or the token can't see any.
Spend & Results table
Breaks the same date range down campaign by campaign, showing Spend, Impressions, Clicks, CTR (click-through rate), and CPC (cost per click), as reported directly by Meta for each campaign. A "No data for this period" row means Meta returned no activity for any campaign in the selected dates.
How this data is refreshed
Every time you open this page or click Apply on the date filter, the ERP fetches fresh campaign and insights data directly from Meta — nothing here is stored or cached in the ERP itself. The Lead/Qualified Lead/Order/Revenue figures, by contrast, come straight from the ERP's own lead and order records, filtered to the same date range.
🤖 AI Assistant
What This Is
The AI Assistant is a chat-based helper built into the ERP. You'll find it two places: a dedicated "AI Assistant" page, and a floating chat widget available on every ERP screen (both talk to the same conversation — they're not separate chats). You can type in English or Hindi/Hinglish.
Behind the scenes it runs on Google's Gemini model, with an automatic fallback to a second AI provider (Groq) if Gemini is temporarily unavailable or its free-usage quota is hit. Either way, the AI itself never touches the ERP database directly — it can only call a small, fixed set of pre-built "tools," and each tool decides for itself what data it's allowed to hand back based on who's asking.
What It Can Actually Do Today
As of now the assistant has exactly two capabilities wired up:
- Sales reports — ask for this month's, today's, or last month's sales report (or phrase it your own way, e.g. "July ki report") and it will pull order counts, total order value, dispatched-vs-pending value, and a stage-wise/executive-wise breakdown.
- Marketing audience recommendations — ask it to recommend farmers/leads for a WhatsApp marketing message. It only recommends leads with a real signal on file (a past order, expressed interest, consent, or a prior reply) — it will never suggest cold or unconsented numbers. If it finds eligible leads and you have an approved WhatsApp template ready, you can tick the ones you want and send the campaign straight from the chat reply.
The full page shows quick-tap shortcut buttons for these ("This month's sales report," "Today's sales report," "Last month's report," "Recommend marketing list") so you don't have to type them out. Outside of these two things, it cannot look up individual orders, leads, stock, or payroll on request, and it cannot place orders, edit records, or send messages on its own — anything beyond these two tools is simply not built yet.
One exception: if you're logged in as Super Admin, the assistant will also answer general/off-topic questions (like a normal AI chat) when none of the business tools apply. Every other role gets a polite "this assistant is only for Bhumija Elevate business tasks" reply instead of an off-topic answer.
Starting and Using a Chat
- Open the AI Assistant page, or use the floating chat widget from anywhere in the ERP.
- Type your question in the input box and press Enter, or click Send.
- Each executive has one ongoing conversation thread — there's no way to start a separate new thread or switch between multiple chats; everything you and the AI have said stays in the same running conversation.
- To wipe it and start clean, click 🗑 Clear Chat and confirm. This permanently deletes your message history — it cannot be undone.
The assistant only remembers roughly the last 10 turns of a conversation when deciding how to respond — very old messages in a long-running chat won't influence new answers.
AI Activity Log
The AI Activity page is a separate screen, visible only to Super Admin — anyone else gets an access-denied error. It's a running log of every tool the AI has actually executed, across every channel it operates on (ERP chat, Customer WhatsApp, Internal WhatsApp, Messenger, Instagram), not just this page.
Each row shows: when the call happened, which user (or external contact) triggered it, their role at the time, the channel, which tool ran, its risk level, what data scope was applied (e.g. whose data the tool was restricted to), and the result status — success, failed, denied, awaiting confirmation, confirmed, or cancelled. You can filter the list by user, channel, tool name, or status.
This log exists so a Super Admin can audit exactly what the AI looked up or attempted on anyone's behalf, and catch anything that was denied (blocked by a permission check) or failed.
📦 Products / Stock
This is the Inventory screen — the master list of every product Bhumija Elevate sells, how much stock is on hand, and every stock movement (received, sold, damaged) ever logged. Only Admin and Warehouse users can access this section.
Top Stats & Filters
The stat cards at the top show total Products, units Sold, units In Stock, Low Stock count (5 or fewer units), and Out-of-Stock Orders (orders taken when stock had already run out — a backorder situation worth watching). Use the search box to filter the list by product name, company, or category, and 📄 Download Stock Report PDF for a printable snapshot of the whole inventory and its total value.
Manual Stock Entry
Use this form to record a stock movement by hand — pick the Product (grouped by product family in the dropdown), a Type, a Qty, and optional Notes, then click Save Entry. There are three types:
- IN (Purchase/Return) — stock coming in, e.g. a new purchase or a return.
- OUT (Manual Sale/Adjustment) — stock going out for a reason other than a normal dispatched order, e.g. correcting a count.
- DAMAGE (Broken/Expired/Lost) — stock that's no longer sellable. This works like OUT (it reduces In Stock the same way) but is logged separately under its own DAMAGE tag in the Stock Log, so damaged/broken/expired/lost stock never gets confused with an ordinary manual adjustment.
An OUT or DAMAGE entry that asks for more than what's currently available is blocked with an "Insufficient stock" error — you can't take stock negative from this form.
Product List & Product Families
Products that share the same base product but come in different pack sizes (e.g. 250ml, 500ml, 1 Litre of the same item) are shown grouped together as one card/row with a "N sizes" badge — click ✏️ Manage Product & Sizes to open the family (see Master Products below). A product with only one size shows as its own card with ✏️ Edit, ➕ Add Size (to turn it into a family), and 🗑 Delete actions.
Each product card/row also shows: Sold (lifetime), Promised (ordered this month but not yet dispatched — hasn't touched real stock yet), Dispatched (shipped out), and — if applicable — an ⚠️ Oversold badge, meaning units were promised to customers even though stock had run out (a backorder). Stock Value is In Stock × Selling Price. Last In/Last Out dates show the most recent stock movement.
Click 📜 Stock History on any single-size product to see every IN (stock received) entry logged for it, with date, quantity, notes, and who logged it.
Click 🗑 Delete to remove a product — this is blocked if the product has ever appeared in an actual order, so historical order data can never be broken by deleting a product.
Editing a Product ("Edit" screen)
Opens a form to update a single product's Name, Company, Category, Technical, Dose, Selling Price, MRP (shown on the website), Description, and its WhatsApp photo (the image the bot sends customers — leaving the file picker blank keeps the current photo, nothing gets removed by accident). This same screen also lets you receive fresh stock:
- Add Stock (received qty) — how many units physically arrived.
- …of which Damaged — of that received quantity, how many arrived already broken/damaged. Only the remainder (good units) actually increases In Stock; the damaged portion is logged separately and never added to sellable stock.
If the product already has oversold units, this screen reminds you that new stock will first clear that backorder before In Stock visibly increases.
Stock Log
Shows the latest 200 stock movements across all products — date, product, type (IN/OUT, with a distinct dark DAMAGE tag), quantity, notes, and who logged it. This is the full audit trail for manual stock changes.
Bulk Import
Reached via the 📦 Bulk Import button on the Inventory page. Two ways to add/update many products at once:
- Import from Excel File — download the template first (columns: Product Name*, Company, Category, Buy Price, Sell Price*, Stock, HSN Code, GST Rate%, Dose, Technical — only Name and Sell Price are required), fill it in, then upload your file. A product is matched by name: if it already exists it gets updated, otherwise a new one is created. Any stock quantity in the file is added as fresh incoming stock, logged automatically.
- Bhumija Product Catalog — Preset Quick-Add — a ready-made table of common Bhumija products. Products already in inventory are marked "Yes"; you can tweak price/category/dose/technical/stock for any row before clicking Import All.
Master Products (Product Families & Sizes)
Handled by its own controller, but it's really an extension of the product list above — this is what powers the "grouped by size" cards you see on the Inventory page.
A Master Product is the shared identity of a product (its name, category, company, technical/active ingredient, description, and shared photo) — the actual sellable/stock-tracked items underneath it are its Sizes (e.g. 250ml, 500ml, 1kg), each with its own price, MRP, and stock count.
Creating a brand-new product is always done via ➕ New Product on the main Inventory page — this creates the master and its first size together in one step, so every product is grouped from day one. Fill in Product Name, Company, Category, Technical, Dose, Pack Size + Unit, Selling Price, MRP, and Opening Stock, then Add Product.
To add another size to an existing product, don't use the New Product form — open that product family's Manage Product & Sizes page and use the ➕ Add Size form there instead (Pack Size, Unit, Selling Price, MRP, Opening Stock, Dose). Trying to add a size that already exists (same size + unit) is blocked with an error so you can't accidentally create a duplicate.
On the Manage Product & Sizes page you can also:
- Edit the shared master fields (Name, Category, Company, Technical, Status, Description, Photo).
- Tick "Sync to all sizes" when saving to push Category/Company/Technical/Photo down to every size at once, instead of editing each one individually.
- See every size in a table with its price, MRP, stock, and stock value, and Edit or Unlink each one. Unlink detaches a size from the family without deleting it or its order/stock history — use this only to correct a genuine mis-grouping.
📣 Social Posts
This page creates and schedules posts to the Bhumija Elevate Facebook Page and/or linked Instagram Business account, straight from the ERP. Only executives who are Admin or Marketing Head can open it — anyone else gets an access-denied error.
Creating a post
AI Caption suggestions
After selecting a product, the Generate AI Caption button asks Gemini to write a fresh caption based on that product's details, replacing whatever is in the Caption box. This is a separate feature from the automatic caption that appears when you first pick a product (that one is a fixed template with the product name, price, and standard hashtags — not AI-written).
Publishing behaviour
When a post targets Both platforms, Facebook and Instagram are published to independently. It's possible for one to succeed and the other to fail (for example, if Instagram permissions haven't been granted yet) — the post is still marked Posted as long as at least one side went through, and any per-platform error is shown underneath the status badge in the posts table.
Posts move through these statuses:
From the All Posts list, any post that isn't already Posted can be published immediately with Publish Now, or removed with Delete. A post that failed can simply be retried with Publish Now once the underlying issue (e.g. missing Facebook/Instagram credentials in Settings) is fixed.
Gotchas worth knowing