Skip to main content
The Record created trigger (Records) starts a workflow whenever a new record appears in an object, however it was created. It fires the same way no matter how the record was made: manual entry, a CSV import, an API call, a form integration, or Attio’s own email-sync auto-creation. A single import can fire it thousands of times. Treat it as your raw intake signal. Filter that signal down before any block writes data or calls AI.

Inputs

Outputs

To use these outputs in later blocks, reference the created record as {{ steps.record_created.record }}, the actor as {{ steps.record_created.actor }}, and the creation time as {{ steps.record_created.timestamp }}.

Behavior

The trigger runs once for every record that enters the selected object. It does not remove duplicates, and it does not group records into batches. The source does not matter. Each of these creates one run: a record typed into the grid, a record upserted through the API, a record captured by a connected form, or a record auto-created from an inbound email. (Upsert means insert the record if it is new, or update it if a match already exists.) A CSV import is the case to watch. Importing a 5,000-row file fires the trigger 5,000 times. That queues 5,000 independent runs of the whole workflow. If those runs write data or call AI, the import becomes a large, mostly unintended bill. The record handed to the trigger reflects its state at the instant of creation. That state is often nearly empty. The important attributes usually fill in a moment later, through enrichment, a second API call, or a later edit. (Enrichment means filling in details like company size or industry from an outside data source.) So when your logic depends on a specific value being present, the creation event may arrive too early to act on it. Use the Filter block to drop runs that lack the data you need. Do this before any paid block executes.

Gotchas

  • An import fires the trigger once per row. Bulk imports treat every row as a separate creation, so a 5,000-row CSV queues 5,000 runs. Add a Filter immediately after the trigger. Avoid pointing AI blocks at this trigger on a busy object.
  • Email sync creates records too. On workspaces with email auto-creation enabled, People and Companies records appear constantly with thin data. Filter on the attributes you actually need before any block acts on the record.
  • The record is often empty at creation. Attributes frequently land a moment later through enrichment or a follow-up write, so a value you expect may be missing. When a rule depends on a specific attribute, trigger on Attribute value changed for that attribute instead. That trigger fires even when the value is set during creation.

Examples

Routing inbound leads without a webhook

Use Record created on People as a webhook-free intake for inbound leads. From there you can enrich the company, add the lead to a list, and assign an owner. A new People record for jane@acme.com is enriched against acme.com, added to the Inbound list, and assigned to the next owner in rotation, all without a webhook. The full build is in Round-robin lead routing.

Guarding against a noisy import

Use a Filter as the first block to keep an import from triggering expensive work on thousands of thin records.
A 5,000-row import still fires the trigger 5,000 times. But only the rows that carry a domain pass the filter. So the Find records and AI blocks downstream never run on the thin rows that make up most of the bulk load.

Source

Attio Workflows block library. Last reviewed against the Attio Help Center, June 2026.

See also