WhatsApp Purchase Order Approval Automation — Case Study | Ashish Kumar

How I built a WhatsApp Business API system that cut Purchase Order approval time from 24 hours to under 30 seconds for a manufacturing client — with real-time multi-stakeholder notifications and automated SMS updates.

Case Study Overview

A manufacturing business was losing hours every day waiting for Purchase Order approvals. Managers had to log into a desktop ERP to approve POs — any laptop delay meant delayed procurement and slower production. This case study documents how a WhatsApp-native approval workflow reduced approval time from 24 hours to under 30 seconds, with real-time multi-stakeholder notifications and automated SMS broadcasting.

The Problem

The client's procurement workflow was entirely desktop-dependent. When managers were traveling or in meetings, POs sat pending for hours — sometimes a full business day. The procurement team had zero visibility into approval status and resorted to constant phone calls to chase updates. Rejected POs were even more painful: the team often would not learn about a rejection for 1–2 days, losing valuable time that could have been spent on vendor renegotiation.

The Solution & Architecture

I built a WhatsApp Business Cloud API integration that delivers PO approval requests directly to the manager's WhatsApp with a formatted notification, a PDF link, and two interactive CTA buttons — Approve and Reject. One tap updates the PO status, moves it to the next workflow stage (Receive Items on approval), and simultaneously broadcasts the decision to all authorized procurement users via WhatsApp. Pre-approved Meta Utility Templates ensure 100% message delivery regardless of the 24-hour activity window.

Key Results & Metrics

Approval turnaround dropped by 98% — from up to 24 hours down to under 30 seconds. Production delays caused by pending approvals were eliminated entirely. Internal follow-up phone calls between the procurement team and management dropped to zero. Decision-makers now handle procurement approvals from anywhere, on a device they already check dozens of times a day — no laptop, no login required.

Tech Stack

Node.js, Express.js, TypeScript, PostgreSQL, Prisma ORM, WhatsApp Business Cloud API, Meta Cloud API, React, Tailwind CSS, AWS EC2, PM2

The Problem: Approvals Were Stuck Waiting for a Laptop

This client runs a manufacturing and supply chain business. Every time their store team needed to buy materials, they had to raise a Purchase Order (PO) — a request that a manager had to review and approve before anything could move forward.

  • The manager had to log into a desktop system to see and approve the PO. If they were traveling or away from their laptop — the approval waited. Sometimes for a full day.
  • The store team had no idea what was happening. Was it approved? Rejected? Still pending? The only way to find out was to call and ask.
  • Important documents were scattered across email, the internal system, and WhatsApp chats, making it hard to track anything in one place.

The result: materials arrived late, production slowed down, and everyone spent time chasing approvals instead of doing actual work.

The Solution: One-Tap Approval via WhatsApp

Instead of asking managers to log into a system, I brought the approval directly into WhatsApp:

  1. The moment a Purchase Order is created, the manager gets a WhatsApp message with all details and a PDF link — openable in one tap, works on iPhone and Android.
  2. Right below the message are two buttons: Approve or Reject.
  3. The manager taps one button. No app to open, no login, no forms.
  4. The system automatically updates the order status and moves it forward to the next workflow stage.
  5. Everyone involved gets an instant WhatsApp update saying whether the PO was approved or rejected, and by whom.

What the WhatsApp Message Looks Like

When a PO is raised, the manager receives a formatted WhatsApp notification like this:

Purchase Order Approval
PO Number: PO/STORES/2025/168
Party: [Vendor Name]
Material Description: [Item Name]

Please review the attached PO and tap a button below to take action.

Two CTA buttons appear below the message: ✅ Approve and ❌ Reject. One tap is all it takes.

Automated SMS & WhatsApp Notifications After Every Decision

After the manager acts, the system automatically sends status updates to all relevant stakeholders via both WhatsApp and SMS:

On Approval:

Purchase Order PO/STORES/2025/168 status has been updated.
Status: Approved
Updated By: WhatsApp Approval System
Details: PO approved and moved to Receive Items stage.

On Rejection:

Purchase Order PO/STORES/2025/168 status has been updated.
Status: Rejected
Updated By: WhatsApp Approval System
Details: Reason: Rate is too high / Delivery time unacceptable

Real-Time Multi-Stakeholder Broadcast

Here is a problem most approval systems do not solve: even after the manager makes a decision, the people who actually need to act on it are still left waiting.

In a factory, the Purchase Executives and Procurement Team are the ones who talk to vendors, negotiate rates, and raise the Purchase Order. They need to know the moment a decision is made.

The moment the manager taps Approve or Reject, the system finds all authorized procurement team members and sends them the update instantly — in parallel:

  • If Approved → Every procurement team member instantly gets: "✅ PO has been Approved by Manager." They immediately call the vendor to dispatch the material. The store team also knows to get ready to receive it. No one is sitting around guessing.
  • If Rejected → The team instantly gets: "❌ PO Rejected. Reason: Rate is too high." Instead of losing 1–2 days figuring out why, they know the exact reason within seconds — and can renegotiate and raise a revised PO immediately.

This closed-loop communication eliminated 100% of internal follow-up phone calls about PO status.

Key Technical Challenges Solved

1. WhatsApp 24-Hour Messaging Window

WhatsApp only allows businesses to message someone within 24 hours of that person last messaging the business — otherwise messages get blocked. Since managers were not always actively chatting, regular messages would often fail to deliver.

The fix: I used pre-approved Meta Utility Templates — a special category that Meta allows to reach users at any time, bypassing the 24-hour inactivity window entirely. This ensures 100% reliable delivery every time.

2. Idempotent Action Handling

If a manager accidentally taps "Approve" twice, or the network blips, the system needed to be smart enough not to process the same approval twice. Every action is validated against the current PO state before any database update is made — preventing duplicates and data corruption.

Phones are strict about opening random file links for security reasons. A secure gateway converts PO documents into clean, trusted mobile links that open instantly — no security warnings, no friction for the approver.

4. Role-Based Dynamic Stakeholder Discovery

The system dynamically queries all users with PO creation permissions and broadcasts the decision to all of them simultaneously — zero manual distribution required. The right people are notified the right way, every time, automatically.

Results at a Glance

  • Approval time: 6–24 hours → under 30 seconds — approximately 98% faster
  • Zero production delays caused by pending approvals
  • 100% elimination of internal status follow-up phone calls
  • Managers approve from anywhere — no laptop or login required

Tech Stack

  • Backend: Node.js, Express.js, TypeScript
  • Database: PostgreSQL (AWS-hosted), Prisma ORM
  • Messaging: WhatsApp Business Cloud API (Meta)
  • Frontend: React, Tailwind CSS
  • Hosting: AWS EC2, PM2, secure webhook verification

Why This Works Beyond Procurement

Any business where a decision-maker is the bottleneck — approvals, sign-offs, confirmations — can use this same pattern. It does not have to be procurement. It could be:

  • Leave and expense approvals for HR
  • Order confirmations for a sales team
  • Quality sign-offs on a factory floor

If the approval can be reduced to "yes or no," it can probably live inside a WhatsApp message instead of a system nobody wants to log into.