← All AI

AWS Textract email verification with BillionVerify

AWS Textract is an AI service that automatically extracts text, handwriting, and structured data from scanned documents, PDFs, and images. It goes beyond simple OCR by identifying forms, tables, and key-value pairs, making it valuable for automating document processing pipelines in industries like finance, healthcare, and legal.

Why verify before the send

Documents processed by Textract β€” application forms, registration papers, business cards, invoices β€” frequently contain email addresses typed or handwritten by end users. OCR introduces transcription errors, and users often write temporary or fake addresses on physical forms. Piping Textract output through BillionVerify catches both OCR-induced malformations and genuinely invalid addresses before they enter your CRM or trigger automated outreach.

Ready-to-use n8n workflow

Import this workflow into n8n β€” it verifies every address with BillionVerify before AWS Textract sends, so only deliverable contacts are emailed. Install the BillionVerify community node first, then add your API key.

verify-emails-in-aws-textract.json
{
  "name": "Verify emails before sending in AWS Textract + BillionVerify",
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        240,
        300
      ],
      "name": "When clicking β€˜Test workflow’"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "email-field",
              "name": "email",
              "value": "jane@example.com",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        460,
        300
      ],
      "name": "Get contacts"
    },
    {
      "parameters": {
        "sendTo": "={{ $json.email }}",
        "subject": "Message for AWS Textract contacts",
        "message": "Replace this Gmail send with your AWS Textract node β€” only deliverable, verified contacts reach it.",
        "options": {}
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        900,
        300
      ],
      "name": "Send email",
      "webhookId": "",
      "credentials": {
        "gmailOAuth2": {
          "id": "",
          "name": "Gmail account"
        }
      }
    },
    {
      "parameters": {
        "operation": "verify",
        "email": "={{ $json.email }}",
        "additionalOptions": {}
      },
      "type": "n8n-nodes-billionverify.billionVerify",
      "typeVersion": 1,
      "position": [
        540,
        300
      ],
      "name": "Verify Email (BillionVerify)",
      "credentials": {
        "billionVerifyApi": {
          "id": "",
          "name": "BillionVerify account"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "is-deliverable",
              "leftValue": "={{ $json.is_deliverable }}",
              "rightValue": "",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              }
            }
          ]
        }
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2,
      "position": [
        720,
        300
      ],
      "name": "IF deliverable"
    }
  ],
  "connections": {
    "When clicking β€˜Test workflow’": {
      "main": [
        [
          {
            "node": "Get contacts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get contacts": {
      "main": [
        [
          {
            "node": "Verify Email (BillionVerify)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verify Email (BillionVerify)": {
      "main": [
        [
          {
            "node": "IF deliverable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "IF deliverable": {
      "main": [
        [
          {
            "node": "Send email",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

Workflow templates with AWS Textract

Ready-to-use workflows that verify emails before AWS Textract sends.

How it works

  1. 1

    Trigger an n8n workflow when a new document is uploaded to S3 or sent to an SQS queue.

  2. 2

    Call AWS Textract via the HTTP Request node or AWS SDK to extract text and identify email fields from the document.

  3. 3

    Pass the extracted email address to BillionVerify using the n8n community node or REST API call.

  4. 4

    BillionVerify returns validity status, disposable detection, MX availability, and role-address flags for the extracted address.

  5. 5

    Store only verified addresses in your CRM or database; log rejected addresses with the reason for auditing.

When to use this

Validate emails extracted from scanned registration forms

After Textract parses a registration form and extracts an email address, verify it with BillionVerify before storing it. OCR errors and handwriting ambiguities often produce malformed addresses that would otherwise cause immediate bounces.

Clean contact data from business card or invoice extraction

Textract can pull email addresses from business cards and invoices at scale. BillionVerify then confirms each address is reachable, filtering out outdated contacts and disposable addresses before they enter your sales pipeline.

Enrich document processing pipelines with deliverability signals

Add BillionVerify's MX check, disposable-domain detection, and catch-all flags to the metadata returned alongside Textract's extracted fields, giving downstream systems richer signals without additional lookups.

FAQ

Why are OCR-extracted emails particularly risky to send to without verification?

Handwriting recognition and low-resolution scans frequently introduce character substitutions β€” a '0' for an 'O', or a missing dot. BillionVerify's syntax and mailbox checks catch these errors before any message is sent.

Can BillionVerify process emails in bulk after a large Textract batch job?

Yes. Export all extracted addresses from a Textract batch run and submit them to BillionVerify's bulk API endpoint to verify thousands of addresses in a single session.

How do I connect AWS Textract and BillionVerify in n8n?

Use an HTTP Request node to call the Textract API, parse the response to isolate the email field, then pass that value to the BillionVerify n8n community node. The entire flow can be built without custom code.

Verify emails in AWS Textract

Create a free account, grab your API key, and stop bounces before they happen.

Get started free