The DevXP engineering team hosts office hours every Thursday at 11 a.m.
Pacific Time where we answer your questions live and help you get up and
running with Flatfile. Join
us!
FlatfileRecord
class.
Record-level hooks have access to all fields in a row and should be utilized for operations that require access to multiple fields or when creating a new field.
Getting started
TheFlatfileRecord
class provides methods to manipulate and interact with a record in the Flatfile format, including setting values, retrieving values, adding information messages, performing computations, validating fields, and converting the record to JSON format.
Listen for updates to data records, and respond with three types of record hooks: compute
, computeIfPresent
, and validate
. These hooks are available as methods on the FlatfileRecord
class.
In these examples, we’ll reference the Workbook from the Quickstart
guide.
Record Hooks
FlatfileRecord.compute
Computes a new value for a field based on its original value or other field values on the record. Optionally pass an info message to surface to the user about the transformation. compute
will run even when no value is set for the field (see computeIfPresent
).
Syntax
The name of the field to transform.
The transformation to perform on the field value. Receives the initial value
of the field, as well as the entire record if you want to access other field
values on the record.
(optional) a message to show on the cell after the transformation.
Example
Generate email from first and last name:FlatfileRecord.computeIfPresent
Same as compute
, but only computes a new value if an initial value is provided (not null). Useful for computations that may throw an error on null values.
Syntax
The name of the field to transform.
The transformation to perform on the field value. Receives the initial value
of the field, as well as the entire record if you want to access other field
values on the record.
(optional) a message to show on the cell after the transformation.
Example
Change email to lower case:FlatfileRecord.validate
Sets a field as invalid if its value does not meet a specified condition, and displays an error message to the user.
Syntax
The name of the field to validate.
A function that determines whether a given field value is valid. Receives the
intial value of the field, as well as the entire record if you want to access
other field values on the record.
A message to show on the cell if the field is invalid.
Example
Messages
Attach comments, errors, and warnings to specific fields in each record. These messages provide contextual information or alerts to users who interact with the record, helping them understand any issues or actions required.FlatfileRecord.addInfo()

Syntax
Can be either a string representing a single field or an array of strings
representing multiple fields
The content of the message
Example
FlatfileRecord.addError()

Syntax
Can be either a string representing a single field or an array of strings
representing multiple fields
The content of the message
Example
const email = record.get("email"); const validEmailAddress = /^[^\s@]+@[^\s@]+.[^\s@]+$/;
FlatfileRecord.addWarning()

Syntax
Can be either a string representing a single field or an array of strings
representing multiple fields
The content of the message
Example
const email = record.get("email");
Accessing an API
Accessing an API within arecordHook
or a bulkRecordHook
allows for retrieving additional data or performing external operations to enrich or modify existing data. This approach integrates external data sources or services into the data manipulation workflow, enabling real-time or dynamic information to enhance the data. It is particularly useful when fetching related data, validating information, performing calculations, or any operation that relies on external input before modifying the data.
Using GET
When a record is created or updated, you may need to fetch data from an API. Using a GET
method does just that, then updates the record object with the retrieved data, and handles any errors that may occur during the process.
Example
In this example, an API call is made to retrieve beer data, which is then used to update the record object by setting the “assignedBeer” field with a random name from the beer data. If an error occurs, we update thestatus
field to “Failed” and add an error message. The modified record is then returned from the recordHook
.
Using POST
When a record is created or updated, you may need to send data to an API. Sends the payload data from an Event to a webhook receiver URL using a POST
request, then update the record object based on the success or failure of the request. Last, add messages to the fields accordingly.
Example
In this example, we are making aPOST
request to a webhook endpoint using axios. We pass the payload, method, and record as the request body and handle the response.
If the request is successful, we update the status
field of the record to “Success” and add a comment. If an error occurs, we update the status
field to “Failed” and add an error message. The modified record is then returned from the recordHook
.
getLinks
ThegetLinks
method is a feature of the FlatfileRecord class. When a field in your record is of the Reference Field type and links to another record, getLinks can fetch those linked fields for you.
Usage
When processing a record, you may find references to a related record. To retrieve the fields from the related record, use thegetLinks
method. Provide the field key of the Reference Field type, the part of the record that holds the reference to the other records, like this:
Benefits
UsinggetLinks
provides access to all related information. It’s particularly useful when you want to perform operations similar to VLOOKUPs in spreadsheets, or when you need to compare data across referenced fields.
For instance, you could use getLinks
to fetch all the fields related to a particular record and enrich your data, or compare the related records for validation.
With getLinks
, processing related datasets becomes much more manageable in Flatfile. This method provides you with an effective way to navigate, enrich, and validate your data.
Deleting records
There are primarily two use cases for deleting records:- Deleting a subset of records
- Deleting all records in a sheet
Deleting a subset of records
To delete a subset of records first import the@flatfile/api
package, then use the api.records.delete()
helper method. This method takes in an array of record IDs and deletes them from the sheet.
Example: