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 #
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
- Inbox watcher. A Google service account with domain-wide delegation watches the
payroll@audit1.commailbox via the Gmail API. New messages produce a Pub/Sub push notification to the connector. - Triage. The connector reads the message, extracts attachments, and infers the file type. Messages without recognized attachments are auto-archived.
- 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).
- Optional PDF / policy pre-read. PDF attachments are parsed by
Payroll-pdf-reader; policy declarations get a quickPolicy-readerpass to confirm coverage. - Upload. The cleaned report lands in the
connectors-api-filesGCS 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 topayroll@audit1.comto be ingested.