DOCS

QUICK START

[DIRECTIVE] Set up ParseHook in under five minutes. Create a permanent inbox, map webhook URLs, forward test emails, and capture structured JSON immediately.

Set up ParseHook in under five minutes. By the end of this guide you will have a working inbox that parses emails and fires structured JSON to your webhook.

PREREQUISITES

+
ACCOUNT SOURCE: A ParseHook account (Free plan works immediately).
+
WEBHOOK DESTINATION: A webhook endpoint that accepts incoming HTTP POST requests.
+
EMAIL ORIGIN: An active email address you can forward messages from.

No webhook endpoint yet? Use webhook.site to inspect payloads during development.

CREATE AN INBOX

  1. 1Log in to your ParseHook dashboard.
  2. 2Click "Create Inbox" and give it a name (e.g. "Invoices").
  3. 3You receive a unique address like x7k2m9@mails.parsehook.com.
  4. 4This address is permanent and highly random. Keep it private — anyone with this address can trigger your automation.

CONFIGURE WEBHOOK

  1. 1In the inbox settings, click "Add Webhook".
  2. 2Enter your endpoint URL (must be HTTPS in production, localhost/http allowed for testing only).
  3. 3Optionally add a signing secret for payload verification.
  4. 4Save — ParseHook will POST to this URL after each parse.

FORWARD AN EMAIL

Forward any email to your ParseHook address. ParseHook parses it and fires your webhook within five seconds.

EXAMPLE — FORWARD RULE IN GMAIL
Settings → Filters → Create filter
From: billing@anyvendor.com
Action: Forward to x7k2m9@mails.parsehook.com

WEBHOOK PAYLOAD

ParseHook POSTs this JSON structure to your endpoint after each parse:

PAYLOADapplication/json
{
  "event": "email.parsed",
  "email_id": "uuid-here",
  "from": {
    "email": "billing@vendor.com",
    "name": "Vendor Corp"
  },
  "subject": "Invoice #INV-2026-88",
  "parsed_data": {
    "type": "invoice",
    "invoice_number": "INV-2026-88",
    "amount": 1250.00,
    "currency": "USD",
    "vendor": "vendor.com",
    "due_date": "2026-02-15"
  },
  "metadata": {
    "parsing_method": "multi_model_ai",
    "parsing_confidence": 0.96,
    "received_at": "2026-01-15T14:22:00Z"
  }
}

parsing_method indicates whether a learned pattern was applied (pattern) or the Multi-Model AI Engine parsed the email from scratch (ai). Learned patterns are used when a known sender format is detected. AI parsing handles everything else automatically.

RECEIVE THE WEBHOOK

A minimal Python handler:

PYTHONFlask
from flask import Flask, request

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def handle_parsed_email():
    data = request.json
    
    print(f"Email type: {data['parsed_data']['type']}")
    print(f"From: {data['from']['email']}")
    
    # Your logic here
    # Save to database, trigger workflow, etc.
    
    return "OK", 200

VERIFY SIGNATURES

Every webhook is signed with HMAC-SHA256. Verify the X-ParseHook-Signature header to confirm the request came from ParseHook. Ensure the secret used here is your Webhook Signing Secret, not your API Key:

PYTHON
import hmac
import hashlib

def verify_signature(payload_bytes, received_sig, secret):
    expected = hmac.new(
        secret.encode('utf-8'),
        payload_bytes,
        hashlib.sha256
    ).hexdigest()
    
    return hmac.compare_digest(
        f"sha256={expected}",
        received_sig
    )