Approval Workflows with Email Webhooks

Turn inbound emails into structured data for approval workflows. JsonHook parses every message and delivers JSON to your endpoint in real time.

Table of Contents
  1. The Problem
  2. How JsonHook Solves Approval Workflows
  3. Architecture Overview
  4. Implementation Guide
  5. ROI & Benefits

The Problem

Many business processes require approvals — expense reports, purchase requests, time-off requests, content publishing, and access grants. These approvals often happen via email ("Reply APPROVED to this message"), but tracking which requests are pending, approved, or denied across dozens of email threads is chaos. Requests fall through the cracks, approvals are delayed, and there is no audit trail beyond someone's inbox.

How JsonHook Solves Approval Workflows

JsonHook receives approval response emails and delivers them as structured JSON to your webhook handler. The handler extracts the approval decision (approved/denied), the approver's identity, and the request reference, then updates the request status in your workflow system. Pending requests are tracked, escalated on timeout, and every decision is logged for compliance.

Build Email-Based Approvals

Approval workflows that live in email. Tracked, escalated, auditable.

Get Free API Key

Architecture Overview

A production approval workflows pipeline built on JsonHook follows this architecture:

  • Outbound notification: Your system sends an approval request email with a unique request ID in the subject or body
  • Reply address: The approval email's reply-to address is a JsonHook inbound address
  • JsonHook delivery: When the approver replies, JsonHook parses their response and delivers it as JSON to your webhook
  • Webhook handler: Extracts the request ID, approver email, and decision (keyword scan for "approved", "denied", "rejected") from the reply
  • Workflow update: Updates the request status in your system, notifies the requester, and triggers the next step if approved

This architecture keeps each layer stateless and independently scalable. The inbound email address, the webhook handler, and the downstream data store can each be deployed, monitored, and scaled separately without affecting the others.

Implementation Guide

Follow these steps to set up approval workflows automation with JsonHook:

  1. Design the approval email with a unique request ID in the subject and clear instructions ("Reply APPROVED or DENIED")
  2. Set the reply-to address to a JsonHook inbound address configured with your approval-handler webhook URL
  3. Build a handler that extracts the request ID from the subject or in-reply-to header, the approver from the sender field, and the decision from the body text
  4. Update the workflow — mark the request as approved or denied in your system, timestamp the decision, and record the approver
  5. Implement escalation — if no response is received within a timeout period, re-send the approval request or escalate to a backup approver
  6. Log for compliance — store the original request, approval email, parsed decision, and timestamp as an immutable audit record

Once the pipeline is active, every qualifying email delivers structured JSON to your handler within seconds of arrival — no polling, no manual exports, no missed messages.

ROI & Benefits

Automating approval workflows via email webhooks delivers measurable improvements across multiple dimensions:

  • Email-native approvals: Approvers respond from their inbox — no login to a separate system, no app to install, no link to click
  • Tracked requests: Every approval request has a status — pending, approved, denied — with timestamps and approver identity
  • Escalation on timeout: Stale requests are automatically escalated — no more approvals stuck in someone's inbox for days
  • Compliance audit trail: Every decision is logged with who approved, when, and the exact text of their response
  • Works everywhere: Approvers can respond from any email client on any device — no specific software required

Teams that adopt email-to-webhook automation for approval workflows consistently report faster response times, lower error rates, and significant labour savings within the first month of deployment.

Frequently Asked Questions

How does the handler know which request was approved?

Include a unique request ID in the approval email subject (e.g., "Approve Request #12345"). When the approver replies, the subject line is preserved. Your handler extracts the request ID from the subject or In-Reply-To header and matches it to the pending request.

What if the approver's response is ambiguous?

Scan the reply body for clear keywords ("approved", "yes", "denied", "no", "rejected"). If no clear decision is found, mark the request as "unclear response" and re-send the approval email with clarified instructions. Log the ambiguous response for audit purposes.

Can I support multi-level approvals?

Yes. Your workflow system manages the approval chain. When the first approver responds, your handler advances the request to the next approver by sending a new approval email with the same request ID and a different reply-to JsonHook address (or the same address with routing logic).

Is email-based approval secure enough for sensitive requests?

Email-based approval is appropriate for low-to-medium risk decisions. For high-sensitivity approvals (financial, access control), add a verification step — include a unique one-time approval link in the email body that the approver must click in addition to replying.