← All Developer Tools

AWS S3 email verification with BillionVerify

AWS S3 is Amazon's object storage service, widely used to store CSV files, data exports, and uploads that often contain email addresses. BillionVerify integrates with S3-based workflows to validate those lists before they are imported into a sender or CRM, stopping bounces at the source.

Why verify before the send

CSV files and data exports stored in S3 accumulate stale, invalid, and disposable email addresses over time. Importing an unverified list directly into a mailing tool can crater your deliverability in a single send. BillionVerify catches bad addresses before they leave storage and reach your sender.

Ready-to-use n8n workflow

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

verify-emails-in-aws-s3.json
{
  "name": "Verify emails before sending in AWS S3 + 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 S3 contacts",
        "message": "Replace this Gmail send with your AWS S3 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 S3

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

How it works

  1. 1

    Set up an n8n workflow or Integrately scenario that watches for new or updated files in your S3 bucket.

  2. 2

    Parse the file to extract email addresses row by row.

  3. 3

    Send each address (or a batch) to BillionVerify via the REST API.

  4. 4

    Receive a verdict—valid, invalid, disposable, catch-all, or role—for each address.

  5. 5

    Write the cleaned list back to S3 or forward only verified addresses to your ESP or CRM.

When to use this

Validate uploaded subscriber lists

When users or partners upload email lists to an S3 bucket, trigger a BillionVerify check automatically. Only clean, verified addresses proceed to your ESP, protecting your sending reputation without manual review.

Sanitize data pipeline exports

ETL jobs that write contact records to S3 before loading them into a warehouse or CRM can include a verification step, ensuring no invalid or role-based addresses make it into your marketing segments.

Audit legacy stored lists

Use a scheduled workflow to pull archived lists from S3, verify them against BillionVerify, and write back only the deliverable addresses—keeping stored data accurate without rebuilding your infrastructure.

FAQ

Can I verify an entire CSV stored in S3 at once?

Yes. Use BillionVerify's bulk verification endpoint to submit thousands of addresses in one request, then retrieve the results and overwrite or filter your S3 file accordingly.

How do I trigger verification when a file is uploaded to S3?

Configure an S3 event notification to trigger an n8n workflow or Lambda that calls BillionVerify. Integrately also offers a 1-click S3 + BillionVerify scenario.

Will BillionVerify catch disposable email addresses in my lists?

Yes. BillionVerify identifies disposable, temporary, and single-use email providers and returns a clear flag so you can exclude them from your sends.

Is the REST API suitable for large S3 exports?

Absolutely. The BillionVerify bulk API accepts large batches, making it practical for warehouse-scale exports stored in S3 without requiring individual per-address requests.

Verify emails in AWS S3

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

Get started free