Skip to main content
The entity formerly called Client is now called Connection as of API version 2026-05-25. This page uses the new name throughout. See the migration guide if you’re still on 2024-09-01.

What is an Email connection?

An Email connection is a Connection whose type is EMAIL. Instead of uploading over SFTP, senders email a file to a dedicated inbound address. FileFeed receives the message, validates it, and runs the first attachment through the connection’s pipeline — the same Schema → Mappings → Transforms → Webhook flow as every other channel. It’s the lowest-friction way to onboard a sender: there are no credentials to issue. You give them an address, they email files to it.

Create an email connection

Set type: "EMAIL" and configure the inbox. emailAllowedFormats is required and non-empty for email connections; the other fields are optional.
The response includes an emailInbox object (present only for EMAIL connections):
Request fields are prefixed email* (emailAllowedSenders, emailAllowedFormats, emailSubjectFilter, emailInboundAddress). The response returns the same config under emailInbox with short names (allowedSenders, allowedFormats, subjectFilter, inboundAddress).

The inbound address

Each email connection has a globally unique inbound address — the routing key mail is delivered to. You can let FileFeed mint one, or supply your own:
  • Server-generated (recommended): omit emailInboundAddress and FileFeed returns one shaped like feed-7t9w@in.filefeed.io.
  • Custom: pass emailInboundAddress shaped as {workspace-slug}.{connection-name-slug}@in.filefeed.io — e.g. acme.orders-import@in.filefeed.io for the workspace acme.
Two rules apply to a custom address:
The inbound address is immutable — it’s set at create time and can’t be changed on update. Pick a stable connection name, or use the generated address.

Configure who can send, and what

These controls are your security boundary — there is no separate credential, so the allow-list is what keeps an inbox private.

Allowed senders

emailAllowedSenders restricts which From addresses are accepted. Each entry is either a full address or a root-domain pattern:
  • alice@acme.com — matches that exact address
  • @acme.com — matches any *@acme.com (but not subdomains like x.acme.com — list those explicitly)
An empty or omitted list accepts any sender. Max 50 entries.

Allowed formats

emailAllowedFormats is the attachment accept-list and is required (non-empty) for email connections. Accepted values: csv, xlsx, xls, json, xml, tsv. An attachment whose extension isn’t listed is rejected.
This is a configuration-time accept-list and is decoupled from what the transform parser ultimately supports — accepting a format here doesn’t guarantee downstream transform support for it.

Subject filter

emailSubjectFilter is an optional, case-insensitive substring the subject must contain for the message to be processed (e.g. orders matches Weekly Orders Export). Omit it to accept any subject — including an empty subject, which is common for automated senders that just drop a file.

How inbound ingestion works

When a message arrives, FileFeed:
  1. Routes it to the connection by the inbound address. An address that matches no connection is dropped.
  2. Validates the envelope, in order: allowed senders → attachment format → subject filter.
  3. Processes the first attachment through the connection’s active inbound pipeline. (Today only the first attachment is processed; additional attachments are ignored.)
  4. Emits a signed webhook on completion, exactly like the SFTP and outbound flows. See Webhook Listener and Retrieve processed data — the mechanics are identical once a file is in the pipeline.

Why was my email rejected?

Every rejection (except an unknown inbound address) is recorded as a failed pipeline run, visible in Dashboard → Pipeline Runs next to successful ones, with the reason in the run’s error message: A message sent to an address that matches no connection, or to a connection with no active inbound pipeline, is dropped without a run (there’s nothing to attribute it to).

Browse received files

Attachments received by an email connection are retained and browsable the same way as SFTP drives — in the dashboard’s Documents view for that connection.

Checklist

  • Get API key (Dashboard → My Account → Security Settings)
  • Create an EMAIL connection (set emailAllowedFormats; optionally emailAllowedSenders / emailSubjectFilter)
  • Note the emailInbox.inboundAddress and share it with your sender
  • Define a Schema and create + activate an inbound Pipeline on the connection
  • Register a Webhook (store secret, verify signature)
  • Send a test email with an attachment and confirm the run completes
  • Retrieve processed data and persist (SDK or REST)