Flatfile emits events throughout the data import lifecycle, allowing your applications to respond to user actions, system changes, and processing results. This reference documents all available events, their payloads, and when they are triggered.

Event Structure

All Flatfile events follow a consistent structure. Optional fields may be included depending on the event’s Domain (workbook-level events, for instance, won’t have a sheetId)

interface FlatfileEvent {
  id: string;
  topic: string;
  domain: string;
  context: {
    environmentId: string;
    spaceId?: string;
    workbookId?: string;
    sheetId?: string;
    jobId?: string;
    fileId?: string;
    [key: string]: any;
  };
  payload: any;
  attributes?: any;
  createdAt: string;
}

Job Events

Job events are triggered when background tasks and operations change state.

job:created

Description

Triggered when a new job is first created. Some jobs will enter an optional planning state at this time. A job with ‘immediate’ set to true will skip the planning step and transition directly to ‘ready.‘

Payload
{
  job: string          // domain:operation format (e.g., "space:configure")
  info?: string
  domain: string       // event domain (e.g., "space")
  status: "created"
  operation: string    // operation name (e.g., "configure")
}
Context
{
  accountId: string
  environmentId: string
  spaceId?: string
  jobId: string
  actorId: string
}

job:ready

Description

Triggered when a job is ready for execution by your listener. Either the job has a complete plan of work or the job is configured to not need a plan. This is the only event most job implementations will care about. Once a ready job is acknowledged by a listener, it transitions into an executing state.

Payload
{
  job: string          // domain:operation format (e.g., "space:configure")
  info?: string
  domain: string       // event domain (e.g., "space")
  status: "ready"
  operation: string    // operation name (e.g., "configure")
}
Context
{
  accountId: string
  environmentId: string
  spaceId?: string
  jobId: string
  actorId: string
}
Usage Example
listener.filter({ job: "*" }, (configure) => {
  configure.on("job:ready", async (event) => {
    const { jobId } = event.context
    // Handle any job that becomes ready
    await processJob(jobId)
  })
})

job:updated

Description

Triggered when a job is updated. For example, when a listener updates the state or progress of the job. The event will emit many times as the listener incrementally completes work and updates the job.

Payload
{
  job: string          // domain:operation format (e.g., "space:configure")
  info?: string
  domain: string       // event domain (e.g., "space")
  status: string
  operation: string    // operation name (e.g., "configure")
}
Context
{
  accountId: string
  environmentId: string
  spaceId?: string
  jobId: string
  actorId: string
}

job:completed

Description

Triggered when a job has completed successfully

Payload
{
  job: string          // domain:operation format (e.g., "space:configure")
  info?: string
  domain: string       // event domain (e.g., "space")
  status: "complete"
  operation: string    // operation name (e.g., "configure")
}
Context
{
  accountId: string
  environmentId: string
  spaceId?: string
  jobId: string
  actorId: string
}

job:outcome-acknowledged

Description

Triggered to trigger workflow actions after the user has acknowledged that the job has completed or failed. Background jobs will skip this step.

Payload
{
  job: string          // domain:operation format (e.g., "sheet:buildSheet")
  info?: string
  domain: string       // event domain (e.g., "sheet")
  status: string       // e.g., "failed"
  operation: string    // operation name (e.g., "buildSheet")
}
Context
{
  accountId: string
  environmentId: string
  spaceId?: string
  workbookId?: string
  sheetId?: string
  jobId: string
  actorId: string
}

job:failed

Description
Triggered when a job fails
Payload
{
  job: string          // domain:operation format (e.g., "sheet:buildSheet")
  info?: string
  domain: string       // event domain (e.g., "sheet")
  status: "failed"
  operation: string    // operation name (e.g., "buildSheet")
}
Context
{
  accountId: string
  environmentId: string
  spaceId?: string
  workbookId?: string
  sheetId?: string
  jobId: string
  actorId: string
}

job:deleted

Description

Triggered when a job is deleted

Context
{
  accountId: string
  environmentId: string
  spaceId?: string
  jobId: string
  actorId: string
}

File Events

File events are triggered when files are uploaded, processed, or modified.

file:created

Description

Triggered when a file upload begins or a new file is created

Context
{
  accountId: string
  environmentId: string
  spaceId: string
  fileId: string
  actorId: string
}

file:updated

Description

Triggered when a file is updated. For example, when a file has been extracted into a workbook

Context
{
  accountId: string
  environmentId: string
  spaceId: string
  fileId: string
  actorId: string
}
Payload
{
  status: string
  workbookId?: string
}

file:deleted

Description

Triggered when a file is deleted

Context
{
  accountId: string
  environmentId: string
  spaceId: string
  fileId: string
  actorId: string
}

file:expired

Description

Triggered when a file is expired

Context
{
  accountId: string
  environmentId: string
  spaceId: string
  fileId: string
}

Record Events

Record events are triggered when data records are created, updated, or deleted.

record:created

Description

Triggered when new records are added to a sheet

Payload
{
  sheetId: string
  recordIds: string[]
  recordCount: number
}
Context
{
  environmentId: string
  spaceId: string
  workbookId: string
  sheetId: string
}

record:updated

Description

Triggered when existing records are modified

Payload
{
  sheetId: string
  recordIds: string[]
  changes: Array<{
    recordId: string
    fieldKey: string
    previousValue: any
    newValue: any
  }>
}

record:deleted

Description

Triggered when records are deleted from a sheet

Payload
{
  sheetId: string
  recordIds: string[]
  recordCount: number
}

Sheet Events

Sheet events are triggered when sheets are created, modified, or when sheet-level operations occur.

sheet:created

Description

Triggered when a new sheet is created

Payload
{
  sheetId: string
  workbookId: string
  name: string
  slug: string
  fieldCount: number
}

sheet:updated

Description

Triggered when a sheet Blueprint or configuration is modified

Payload
{
  sheetId: string
  workbookId: string
  changes: Array<{
    type: "field_added" | "field_removed" | "field_updated" | "config_updated"
    details: any
  }>
}

sheet:records:created

Description

Triggered when new records are added to a sheet (alias for record:created)

sheet:deleted

Description

Triggered when a sheet is deleted

Payload
{
  sheetId: string
  workbookId: string
  name: string
  slug: string
}

sheet:records:updated

Description

Triggered when records in a sheet are modified (alias for record:updated)

Workbook Events

Workbook events are triggered for workbook-level operations and changes.

workbook:created

Description

Triggered when a new workbook is created

Payload
{
  workbookId: string
  spaceId: string
  name: string
  namespace?: string
  sheetCount: number
}

workbook:updated

Description

Triggered when a workbook is modified

Payload
{
  workbookId: string
  spaceId: string
  changes: Array<{
    type: "sheet_added" | "sheet_removed" | "config_updated"
    details: any
  }>
}

workbook:deleted

Description

Triggered when a workbook is deleted

Payload
{
  workbookId: string
  spaceId: string
}

workbook:expired

Description

Triggered when a workbook expires

Payload
{
  workbookId: string
  spaceId: string
}

Space Events

Space (Project) events are triggered for project lifecycle changes.

space:created

Description

Triggered when a new project (space) is created

Payload
{
  spaceId: string
  environmentId: string
  name: string
  appId?: string
}

space:updated

Description

Triggered when a project is modified

Payload
{
  spaceId: string
  environmentId: string
  changes: Array<{
    field: string
    previousValue: any
    newValue: any
  }>
}

space:deleted

Description

Triggered when a space is deleted

Context
{
  accountId: string
  environmentId: string
  spaceId: string
  workbookId: string
  actorId: string
}

space:expired

Description

Triggered when a space is expired

Context
{
  accountId: string
  environmentId: string
  spaceId: string
  workbookId: string
}

space:archived

Description

Triggered when a space is archived

Context
{
  accountId: string
  environmentId: string
  spaceId: string
}

space:guestAdded

Description

Triggered when a guest is added

Context
{
  actorId: string
  accountId: string
  environmentId: string
  spaceId: string
}

space:guestRemoved

Description

Triggered when a guest’s access is revoked from a space

Context
{
  actorId: string
  accountId: string
  environmentId: string
  spaceId: string
}

App Events

App events are triggered when applications are created, updated, or deployed.

app:created

Description

Triggered when a new app is created

Payload
{
  appId: string
  environmentId: string
  name: string
  slug: string
}

app:updated

Description

Triggered when an app configuration is modified

Payload
{
  appId: string
  environmentId: string
  changes: Array<{
    type: "config_updated" | "listener_updated" | "metadata_updated"
    details: any
  }>
}

app:deployed

Description

Triggered when an app is deployed to production

Payload
{
  appId: string
  environmentId: string
  production: boolean
  deployedAt: string
}

Environment Events

Environment events are triggered for organization-level changes.

environment:created

Description

Triggered when a new environment is created

Payload
{
  environmentId: string
  name: string
  slug: string
  isProd: boolean
}

environment:updated

Description

Triggered when an environment is modified

Payload
{
  environmentId: string
  changes: Array<{
    field: string
    previousValue: any
    newValue: any
  }>
}

environment:deleted

Description

Triggered when an environment is deleted

Payload
{
  environmentId: string
  deletedAt: string
  deletedBy: string
}

Document Events

Document events are triggered when documents are created, updated, or deleted within workbooks.

document:created

Description

Triggered when a document is created on a workbook

Context
{
  actorId: string
  spaceId: string
  accountId: string
  documentId: string
  environmentId: string
}

document:updated

Description

Triggered when a document is updated on a workbook

Context
{
  actorId: string
  spaceId: string
  accountId: string
  documentId: string
  environmentId: string
}

document:deleted

Description

Triggered when a document is deleted on a workbook

Context
{
  actorId: string
  spaceId: string
  accountId: string
  documentId: string
  environmentId: string
}

Commit Events

Commit events are triggered when data changes are made to records.

commit:created

Description

Triggered when a cell in a record is created or updated

Payload
{
  sheetId: string
  workbookId: string
  versionId: string
  sheetSlug: string
}

commit:completed

Description

Triggered when a commit has completed (only when trackChanges is enabled)

Payload
{
  sheetId: string
  workbookId: string
  versionId: string
  commitId: string
}

layer:created

Description

Triggered when a new layer is created within a commit

Payload
{
  sheetId: string
  workbookId: string
  layerId: string
  commitId: string
}

Snapshot Events

Snapshot events are triggered when snapshots of sheet data are created.

snapshot:created

Description

Triggered when a snapshot is created of a sheet

Payload
{
  snapshotId: string
  sheetId: string
  workbookId: string
  spaceId: string
}

Agent Events

Agent events are triggered when agents are created, updated, or deleted.

agent:created

Description

Triggered when a new agent is deployed

Payload
{
  agentId: string
  environmentId: string
}

agent:updated

Description

Triggered when an agent is updated

Payload
{
  agentId: string
  environmentId: string
}

agent:deleted

Description

Triggered when an agent is deleted

Payload
{
  agentId: string
  environmentId: string
}

Secret Events

Secret events are triggered when secrets are managed.

secret:created

Description

Triggered when a new secret is created

Payload
{
  secretId: string
  spaceId: string
  environmentId: string
}

secret:updated

Description

Triggered when a secret is updated

Payload
{
  secretId: string
  spaceId: string
  environmentId: string
}

secret:deleted

Description

Triggered when a secret is deleted

Payload
{
  secretId: string
  spaceId: string
  environmentId: string
}

Data Clip Events

Data clip events are triggered when data clips are managed.

data-clip:created

Description

Triggered when a new data clip is created

Payload
{
  dataClipId: string
  accountId: string
  status: string
}

data-clip:updated

Description

Triggered when a data clip’s details are updated

Payload
{
  dataClipId: string
  accountId: string
  status: string
}

data-clip:deleted

Description

Triggered when a data clip is deleted

Payload
{
  dataClipId: string
  accountId: string
  status: string
}