Email

Send a payroll report as an email attachment to payroll@audit1.com and Audit1 will identify your employer, parse the attachment, and run it through the standard ingestion pipeline. No code, no SFTP setup — just hit Send.

Supported attachments: CSV, Excel (.xlsx, .xls), PDF, JSON.


Prerequisites #

  • An employer record on Audit1 with a recognizable business name or FEIN
  • An email address belonging to that employer (the connector uses the sender to match)
  • A payroll report attached (one or more — each attachment becomes a file)

That's it. No portal setup is required, though pre-registering your sender email in Settings > Connections > Email Senders speeds up identification and avoids manual triage.


How It Works #

flowchart LR sender["Sender
any email client"] inbox["payroll@audit1.com
Google Workspace"] pubsub["Pub/Sub push"] connector["Connector-email
triage · sender identification"] gcs[("connectors-api-files
GCS bucket")] creator["Files-creator"] db[("MongoDB")] auditor["Auditor
P1 · P2 · P3"] sender --> inbox --> pubsub --> connector --> gcs --> creator --> db --> auditor classDef primary fill:#4f39f6,color:#ffffff,stroke:#4f39f6,stroke-width:2px; class connector primary
  1. Inbox watcher. A Google service account with domain-wide delegation watches the payroll@audit1.com mailbox via the Gmail API. New messages produce a Pub/Sub push notification to the connector.
  2. Triage. The connector reads the message, extracts attachments, and infers the file type. Messages without recognized attachments are auto-archived.
  3. Sender identification. The connector resolves the sender email to an Audit1 employer using the registered-sender table first, then heuristics (business name in subject, FEIN in body, domain match).
  4. Optional PDF / policy pre-read. PDF attachments are parsed by Payroll-pdf-reader; policy declarations get a quick Policy-reader pass to confirm coverage.
  5. Upload. The cleaned report lands in the connectors-api-files GCS bucket. Files-creator picks it up; Auditor runs Phase 1 / 2 / 3 as usual.

If sender identification fails the message is held for manual triage in the portal under Operations > Email Inbox.


Best Practices #

Do Don't
Send from the email registered on the employer record Send from random personal aliases — identification will hold the message for review
Use one attachment per report (CSV/Excel preferred) ZIP multiple files together — the connector unpacks zips but it's slower
Put the pay period in the subject line (e.g., Acme Payroll 2026-03-01 to 2026-03-15) Embed payroll as inline HTML — only attachments are parsed
Match the file format you already use for SFTP Send password-protected attachments — the connector cannot read them

File Format #

The same shape used by the SFTP integration — see that page for the minimum-column spec and naming examples. Anything Audit1 can read via SFTP, it can read via email.


Troubleshooting #

Problem Solution
Email sent but no file appears Allow 10-15 minutes. Verify the sender is registered on the employer in Settings > Connections > Email Senders.
✗ "Unable to identify sender" reply Reply to the bounceback with your employer FEIN, or register the sender in your portal and resend.
✗ Attachment was a password-protected PDF Remove the password and resend. The connector cannot decrypt attachments.
✗ Multiple employers under one sender Put the destination employer's FEIN in the subject line — the connector uses it as a tiebreaker.

Need help? Email support@audit1.com — note: do not send payroll reports to support@. Reports must go to payroll@audit1.com to be ingested.