Skip to content

Solution for HR tech platforms

Import any HRIS roster file without code

For HR tech, workforce management, employee referral, scheduling and benefits administration platforms that onboard employer clients. Each client exports employees from a different system: Workday, ADP, UKG, BambooHR, Paylocity, Gusto, Rippling or something built in house.

FileFeed takes the roster file your client sends over SFTP or email, as CSV or Excel, maps it to your schema once, checks every row and delivers clean JSON to your API on every drop.

The input

Six fields, thirty ways to name them

Every HRIS export carries the same handful of fields. The names, the order and the formats differ with each system, and often with each client's configuration of the same system.

Dates arrive as ISO, US, day first and Excel serial numbers, sometimes in one file. Status is a full word in one export and a single letter in the next. One system identifies the manager by email, another by employee ID, a third by name.

None of this is wrong on the client's side. It is what their system exports. The work is to absorb it once, on your side, so the client keeps sending the file they already have.

Column names we see for the same field

Employee_IDEmp NoWorker IDAssociate IDPersonnel Number
employee_id
Full NameFirst Name / Last NameLast, FirstPreferred Name
first_name + last_name
Work EmailE-MailPrimary EmailEmail_Address
work_email
DeptDepartment CodeCost CenterOrg UnitSupervisory Org
department
Hire DateStart DateOriginal Hire DateSeniority Date
hire_date
Active / TerminatedA / TActive / Leave / InactiveEmp Status Code
status

Dates in the same files: 2026-03-01, 03/01/2026, 1-Mar-26, Excel serial 46082.

The feed

Set up once per employer, then every drop runs itself

This is Automated FileFeeds applied to an employee roster. Six parts, in HR terms.

  1. 1

    Connection

    The employer gets its own SFTP folder on FileFeed, or you point FileFeed at their SFTP server. If their HR team would rather email the export, they send it as an attachment from an address you allow.

  2. 2

    Schema

    You define your employee schema once: fields, types, which are required, which must be unique within a file (employee ID, work email) and which take a value from a list (status).

  3. 3

    Mapping, once

    Upload the client's first file. FileFeed suggests which column feeds which field. You confirm or adjust, add transforms where needed (trim, formatEmail, toNumber, date normalisation) and the mapping is saved for that client.

  4. 4

    Validation

    Every row of every file is checked against the schema. Rows that fail go into an error report with row number, field, value and reason.

  5. 5

    Webhook

    Clean rows reach your endpoint as JSON, signed with HMAC. Your API creates or updates employee records and never touches a file.

  6. 6

    Runs

    Each drop is a run: file name, rows in, rows passed, rows failed, what was delivered. Fix a mapping and reprocess the same file without asking the client to send it again.

app.filefeed.io/pipelines/acme-hr/mappings

Pipeline & Mappings

Map source columns to schema fields.

Auto-map
FirstNamefirst_nametrim()
E-Mailwork_emailformatEmail()
DEPT_CODEdepartmentno transform

Map every required schema field: start_date.

Run

roster_export_2026-10-01.xlsxCompleted

Rows in

1,284

Passed

1,281

Failed

3

RowFieldValueReason
412work_emailj.smith@not a valid email
760hire_date31/02/2026not a valid date
1,101statusTermnot in allowed values (Active, Leave, Terminated)

Send this report to the client, or fix the mapping and reprocess the same file.

Validation

A readable error report, not a support ticket

When a client's export has a problem, the run shows which rows failed and why: a malformed email, a date that does not parse, a status value your schema does not know. You forward the report. Their HR admin fixes the export, or you adjust the mapping and reprocess.

Nothing is silently dropped and nothing is half loaded into your product.

30+

HR systems connected through FileFeed

Proof

More than 30 HR systems, one employee schema

Hellora, an employee referral platform (formerly EQORefer), connects each employer client's HR system to its product through FileFeed. More than 30 different HR systems are live this way, each mapped once to the same employee schema, with no engineer assigned per client.

Read the case study

Security

Each employer's data stays in its own lane

Employee files carry names, emails, dates of birth and pay. Here is how they are handled from the drop to your API.

  • Isolated per client. Each employer connection has its own SFTP folder and credentials. One client cannot see another's files.

  • Controlled senders. Email intake accepts attachments only from addresses you approve for that connection.

  • Encrypted. Files are encrypted in transit and at rest, from the drop to the delivered JSON.

  • Signed delivery. Every webhook payload carries an HMAC signature your endpoint can verify.

  • Audit trail. Every run, mapping change and reprocess is recorded, per client, with who did it and when.

app.filefeed.io/connections

Connections

acme-hr-sftpSFTP · FileFeed-hostedUsed by 3 pipelines
globex-inventoryEmailUsed by 1 pipeline
initech-legacySFTP · Your own serverUsed by 2 pipelines

Reusing this connection. No new one will be created.

FAQ

Questions HR tech teams ask

How do we onboard a client who only has a Workday report export?

That is the normal case. The client schedules the report they already run to land in their FileFeed SFTP folder, or emails it as an attachment. You map that export to your employee schema once. The client does not build or change anything on their side.

Can clients email the roster instead of using SFTP?

Yes. Each connection can accept CSV or XLSX attachments from a list of sender addresses you approve. Mail from any other sender is ignored. The file then goes through the same mapping, validation and webhook as a file dropped over SFTP.

What if the client changes columns?

The next run fails validation on the renamed or missing field and the error report names it. You open that client's mapping in the dashboard, point the new column at the right field and reprocess the same file. No code change and no redeploy.

How are terminated employees handled?

Map the client's status column to your status field and set the allowed values, so Terminated, Term, T and Inactive all arrive as the one value your API expects. Map the termination date as well. Most clients send a full roster on each run, so a terminated employee shows up with the terminated status rather than disappearing, and your API deactivates the record.

How long does onboarding a new employer take?

Plan for one working session on your side: create the connection, confirm the suggested mapping on the client's first file, read the first run. The rest of the calendar time is the client's IT scheduling the export, which is the same for any integration.

What does it cost?

A $3,000 Feed Pilot puts the first employer feed live within 30 days, or your money back. After that it is $90 per client connection per month, billed annually. There is no per row pricing, so a 50,000 employee roster costs the same as a 500 employee one.

Full plan details on the pricing page. Or book a demo and bring one client's roster with you.

Schedule

Ready to automate your file workflows?

Tell us how you exchange files today, and we’ll show you how to replace manual uploads and scripts with a single, automated pipeline.