Skip to content
ParsedMail

Postmark Inbound alternative that extracts the fields for you

ParsedMail is a Postmark Inbound alternative for teams that need the data inside an email rather than the email itself. Postmark Inbound turns each message into clean JSON (From, Subject, TextBody, HtmlBody, base64 attachments), and the extraction is still your code. ParsedMail reads the body and PDF attachments against fields you describe in plain English and posts typed values with a confidence score per field.

Try a sample

No account or card. Demo emails are deleted after 24 hours.

Parse a sample lead email above, then compare plans and pricing or read the API docs.

Software engineer at a standing desk wiring an email webhook into an app

Email received

From: Lead Router <[email protected]> To: [email protected] Date: Thu, 15 Oct 2026 10:42:00 -0500 Subject: New internet lead, 2024 Toyota Tacoma TRD You have a new lead from your inventory page. Name: Marcus Delgado Phone: (512) 555-0187 Email: [email protected] Interested in: 2024 Toyota Tacoma TRD Off-Road, stock T2418 Comments: I have a 2017 F-150 to trade. Best to call after 5pm, weekdays only. This lead was delivered by AutoListings.

Fields described as

customer name, phone, email, vehicle of interest with year make and model, trade in yes or no, preferred contact time

JSON delivered to your webhook

{
  "customer_name": "Marcus Delgado", 0.99
  "phone": "+15125550187", 0.98
  "email": "[email protected]", 0.99
  "vehicle_of_interest": {
    "year": 2024,
    "make": "Toyota",
    "model": "Tacoma TRD Off-Road"
  }, 0.96
  "trade_in": true, 0.93
  "preferred_contact_time": "weekdays after 5pm" 0.88
}

Parsed email or parsed data

Postmark is very good at what it does. Its inbound processing receives mail for your domain or for a unique address on its own inbound hostname, parses the MIME, and posts one JSON document per message to your webhook. You get From, To, Cc, Subject, Date, TextBody, HtmlBody, all headers, and an Attachments array where each file is base64 in a Content field. Two extras help with replies: StrippedTextReply drops the quoted history from replies, and MailboxHash carries the tag from an address such as [email protected].

What Postmark does not do is read the message for meaning. If the email is a purchase order, a dealer lead or a carrier update, the PO number, the line items and the delivery date are still somewhere inside TextBody, HtmlBody or a PDF, and your code has to find them. That code is where the real cost lives: regex per sender, an HTML table walker, a PDF library, and a fix every time a supplier changes its template.

ParsedMail starts where Postmark stops. You describe the fields once, in plain English, and every email to the inbox produces a JSON object with those fields, typed and normalized (dates in ISO 8601, amounts as numbers), each with a confidence score between 0 and 1. The example above shows a lead email going in and the finished record coming out.

Postmark Inbound vs ParsedMail side by side

Facts about Postmark come from its pricing page and its inbound developer guide, checked in October 2026.

Postmark InboundParsedMail
What your webhook receivesThe message as JSON: sender, recipients, subject, text and HTML body, headers, base64 attachmentsYour fields as typed JSON, plus the sender and subject
Field extraction from the bodyNo. StrippedTextReply for English plain text replies onlyYes, any field you describe, from the body and attachments
Reads PDF attachmentsNo, it passes them through as base64Yes, PDFs, CSV and text; scanned PDFs and images on paid plans
Confidence per fieldNot applicableYes, 0 to 1 on every value
Review queue for low confidence valuesNoYes, on Growth and Scale
Size limit35 MB for all attachments together25 MB per email, first 8 attachments read
Webhook retriesUp to 10 retries from 1 minute to 6 hours; a 403 stops them5 retries over about 15 hours, HMAC-SHA256 signature, idempotency key, replay from the log
Price to startPro from $16.50 a month at 10,000 emails (inbound is not on Free or Basic)Starter $49 a month, or $24 a month billed yearly, 1,000 emails and 300 attachment pages
Outbound sendingYes, it is a sending service firstNo, inbound only

Read the price row carefully. Per message, Postmark is far cheaper, because it moves mail and leaves the work to you. ParsedMail charges for the extraction. The fair comparison is Postmark plus the parser you build and maintain, against ParsedMail alone.

When Postmark Inbound is the better choice

Keep Postmark if your product needs the message, not values from it:

  • Reply by email. Comment threads, help desk replies and chat by email, where you store what the person wrote. StrippedTextReply and MailboxHash were built for this, and they do it well.
  • High volume, simple routing. Tens of thousands of messages a month where you only route on the recipient or subject. Paying for AI extraction you do not use makes no sense.
  • One stable sender. If every email comes from your own system in a format you control, a small parser on top of Postmark JSON is cheap to keep alive.
  • You already send through Postmark and want one vendor and one bill for both directions.

When ParsedMail fits better

  • The next system needs fields. A sales order in the ERP, a contact in the CRM, a row in a sheet, a payable in accounting. See purchase order emails to ERP and lead emails to CRM.
  • Many senders and layouts. Fifty suppliers or six lead portals each format the same facts differently. One field description covers all of them, so a new sender does not mean a new parser.
  • The data is in a PDF. Invoices, packing lists and rate confirmations usually travel as attachments. ParsedMail reads the attachment and the email text in the same pass, see attachments and PDF parsing.
  • Wrong values cost money. A misread quantity ships the wrong order. Confidence scores let your handler post what is certain and hold the rest for a person in the review queue.

What your handler looks like after the switch

A Postmark Inbound handler usually reads TextBody or HtmlBody, decodes the base64 attachments, and then runs its own extraction per sender. With ParsedMail the handler checks a signature and reads values that are already there:

# Flask
@app.post("/hooks/parsedmail")
def parsedmail_hook():
    if not verify(request.headers["ParsedMail-Signature"], request.get_data(), WHSEC):
        abort(400)
    event = request.get_json()
    lead = event["data"]["data"]   # customer_name, phone, vehicle_of_interest, ...
    if event["data"]["needs_review"]:
        return "", 200             # a person approves it first
    crm.create_lead(lead, idempotency_key=request.headers["Idempotency-Key"])
    return "", 200

The full signature check in Python and Node is on the inbound email webhook page, and every endpoint is in the email parsing API reference.

How to move a flow off Postmark Inbound

  1. Pick one flow. Start with the one whose parser breaks most often, usually purchase orders or lead notifications. Leave reply by email on Postmark.
  2. Create an inbox and describe the fields. Reuse the field names your current parser outputs, so downstream code keeps working without new mappings.
  3. Replay a sample. Forward 20 real emails, including the odd ones, and compare the JSON with what your parser produced. Tighten any field description that scores below 0.8.
  4. Run both for a week. Add a forwarding rule or a BCC so both receive live mail. Your Postmark webhook keeps doing the job while you watch ParsedMail results.
  5. Cut over. Point the sender or the forward at the ParsedMail address, delete the extraction code for that flow, and keep Postmark for everything else.

No DNS change is needed. Every inbox has an address on in.parsedmail.com; on Scale you can receive on your own inbound domain instead.

What the parser you maintain really costs

A Postmark Pro plan at 10,000 emails is a small line on the bill. The parser behind it is not. Take a typical order intake flow with 30 senders: a developer spends a few hours a month on new layouts and broken regex, and every miss is an order someone keys in by hand or a customer who waits. At a loaded cost of $90 an hour, three hours a month is $270, before anyone counts the orders that went wrong.

ParsedMail Starter is $24 a month billed yearly for 1,000 emails, Growth is $74 a month for 5,000 emails with the review queue and 5 seats, and Scale is $249 a month for 25,000 emails with a custom inbound domain and SSO. See pricing for the full table. If your parser never breaks, stay where you are. If it is a standing ticket, the plan costs less than the ticket.

Frequently asked questions

Is there an alternative to Postmark inbound that extracts data from the email?

Yes. ParsedMail receives email at an inbox address like Postmark does, but posts the values you describe, such as order number, customer name or delivery date, as typed JSON with a confidence score per field. Postmark posts the parsed message and leaves extraction from the body and attachments to your code.

How much does Postmark inbound cost?

Inbound processing is included on the Postmark Pro plan, from $16.50 a month at 10,000 emails, and on the Platform plan from $18 a month. The Free and Basic plans do not include inbound. Prices are from the Postmark pricing page in October 2026 and change over time.

Does Postmark inbound parse attachments?

Postmark includes every attachment in the JSON as a base64 string with its name, content type and size, up to 35 MB for all attachments together. It does not read what is inside the file. ParsedMail reads PDFs, CSV and text attachments, and scans and images on paid plans, as part of extraction.

What happens if my webhook is down when Postmark sends inbound email?

Postmark retries a failed inbound POST up to 10 times, with gaps growing from 1 minute to 6 hours, and stops if your endpoint returns 403. ParsedMail retries 5 times over about 15 hours, signs each delivery, sends an idempotency key, and lets you replay any delivery from the log.

Can I keep Postmark for sending and use ParsedMail for inbound?

Yes. Sending and receiving are independent. Keep transactional sending on Postmark and point one inbound flow, or a forwarded copy of it, at a ParsedMail inbox.

Is ParsedMail cheaper than Postmark?

Not per message. Postmark moves mail and charges a fraction of a cent per email, while ParsedMail charges for reading the email and returning finished fields. It costs less only when you count the engineering time spent building and fixing your own extraction code.

Related

See your own email as JSON

Paste one into the demo, describe the fields and look at the result. No account needed.