# Attio Workflows Handbook > The open-source, definitive guide to Attio's new Workflows engine — every trigger and block documented, every credit cost explained, and follow-along GTM builds. ## Docs - [Learn Attio workflows](https://80x.mintlify.app/learn.md): New to Attio workflows? Learn starts you at your first build, then walks you through four guided paths in order, from logic-only alerts to AI agents. - [Build your first workflow](https://80x.mintlify.app/learn/build-your-first-workflow.md): Build, test, and publish a deal-stage Slack alert in about ten minutes. Learn the canvas, variables, and publishing model as you go. - [Capture and qualify](https://80x.mintlify.app/learn/capture-and-qualify.md): Capture and qualify makes inbound and webhook leads arrive enriched, scored on fit and intent, and tagged for routing. - [Route and sequence](https://80x.mintlify.app/learn/route-and-sequence.md): Route and sequence moves a qualified lead to the right owner, enrolls it in a sequence, and exits the instant the lead replies. - [Keep the pipeline honest](https://80x.mintlify.app/learn/keep-the-pipeline-honest.md): Pipeline hygiene runs on a schedule that flags and tasks drifted records, never auto-closes, and stays cheap because it writes only on the true branch. - [Let AI own a stage](https://80x.mintlify.app/learn/let-ai-own-a-stage.md): An AI agent owns one stage of your funnel, reads but never writes, runs only on records that pass a free filter, and you prove its cost on a sample first. - [Guides](https://80x.mintlify.app/guides.md): Guides are complete, follow-along Attio workflow builds, each with the exact trigger, blocks, credit math, and a test plan you can run. - [Webhook lead intake with safe upsert](https://80x.mintlify.app/guides/capture-and-qualify/webhook-lead-intake.md): A webhook front door parses inbound JSON, dedupes on email or domain, and upserts a lead without creating a duplicate. - [Cheapest-first enrichment waterfall](https://80x.mintlify.app/guides/capture-and-qualify/enrichment-waterfall.md): Enrich a new company through ordered providers, stop on the first hit, and write into dedicated source fields so you never pay twice. - [Score leads into explainable bands](https://80x.mintlify.app/guides/capture-and-qualify/signal-scoring.md): A visible Formula combines fit, intent, and engagement into one lead score, writes it back to Attio, and routes each band to the right action. - [Inbound routing by territory and seniority](https://80x.mintlify.app/guides/route-and-sequence/territory-routing.md): Route every inbound demo request to the right rep in seconds, matched on region and seniority. Then set the owner, a first-touch task, and a Slack alert. - [Round-robin lead routing](https://80x.mintlify.app/guides/route-and-sequence/round-robin-routing.md): Round-robin routing assigns each new qualified lead to the next rep in a fair rotation, sets the owner, and books a first-touch task. - [Enroll and auto-exit sequences](https://80x.mintlify.app/guides/route-and-sequence/sequence-enrollment.md): Enroll a lead in a sequence the moment they qualify, then exit them the moment they reply or book, so a rep and an automated touch never collide. - [Slack deal alerts on stage change](https://80x.mintlify.app/guides/route-and-sequence/slack-deal-alerts.md): Post a Slack alert to your revenue team the moment a deal changes stage, without firing on every minor CRM edit. - [Stale-deal sweep](https://80x.mintlify.app/guides/pipeline-hygiene/stale-deal-sweep.md): A weekly sweep finds open deals that have gone quiet, flags any past a stage-specific age threshold, and tasks the owner to act. - [Dedupe on create](https://80x.mintlify.app/guides/pipeline-hygiene/dedupe-on-create.md): Catch duplicate companies and people the instant a record is created by matching on a reliable key and flagging collisions for human review. - [Hand off closed-won deals to Customer Success](https://80x.mintlify.app/guides/pipeline-hygiene/closed-won-handoff.md): When a deal reaches Closed won, this workflow summarizes it, creates an onboarding record and task, lists it, and pings Customer Success (CS) in Slack. - [Daily renewal watch at 90, 60, and 30 days](https://80x.mintlify.app/guides/pipeline-hygiene/renewal-watch.md): A daily renewal watch flags every account approaching renewal at 90, 60, and 30 days so no contract slips past its owner. - [Daily pipeline digest to Slack](https://80x.mintlify.app/guides/pipeline-hygiene/pipeline-digest.md): A daily pipeline digest posts new and stalled deals, plus the new pipeline total, to your sales channel every weekday morning for zero AI credits. - [AI ICP-fit research and routing](https://80x.mintlify.app/guides/signals-and-ai/inbound-lead-research.md): High-intent inbound leads get researched, scored against your ideal customer profile, and routed to a rep only when they clear the bar. - [Funding-signal outbound that beats competitors to a fresh raise](https://80x.mintlify.app/guides/signals-and-ai/funding-signal-outbound.md): When a target account raises a round, parse the signal, gate a read-only Web agent behind an ICP Filter, research an angle, and enroll contacts. - [AI agents playbook](https://80x.mintlify.app/guides/signals-and-ai/ai-agents-playbook.md): AI agent blocks make judgment calls inside a workflow. Use them only where plain logic blocks cannot decide, and watch their token cost. - [HTTP and JSON patterns](https://80x.mintlify.app/guides/platform-patterns/http-json-patterns.md): HTTP and JSON blocks let an Attio workflow exchange data with any external system without leaving the workflow editor. - [App SDK custom blocks](https://80x.mintlify.app/guides/platform-patterns/app-sdk-custom-blocks.md): App SDK custom blocks package a repeatable integration as a first-class workflow block instead of a hand-wired Send HTTP request call. - [Migrate legacy workflows](https://80x.mintlify.app/guides/migrating-from-legacy.md): Migrating a legacy Attio workflow means rebuilding it in the new engine, testing it against real trigger data, and cutting over without duplicating writes. - [Block changes reference](https://80x.mintlify.app/guides/migrating-from-legacy/block-changes.md): Legacy workflow blocks map to renamed or reworked blocks in the new builder, so a migrated workflow can look correct yet behave differently. - [Pricing changes](https://80x.mintlify.app/guides/migrating-from-legacy/pricing-changes.md): The new Workflows engine reprices credits so logic and lookups are free and only writes, external calls, and AI cost anything. - [Block reference overview](https://80x.mintlify.app/reference.md): Attio Workflows has 11 triggers and 33 steps. Each block has its own reference page with inputs, outputs, credit cost, and a worked example. - [Credits & pricing explained](https://80x.mintlify.app/reference/credits-and-pricing.md): Workflows consume workspace credits, and one rule explains the whole model: writes, external calls, and AI cost credits. - [Record created](https://80x.mintlify.app/reference/triggers/record-created.md): The Record created trigger (Records) starts a workflow whenever a new record appears in an object, however it was created. - [Record updated](https://80x.mintlify.app/reference/triggers/record-updated.md): The Record updated trigger fires when an object attribute changes on an existing record in the selected object. - [Attribute value changed](https://80x.mintlify.app/reference/triggers/attribute-value-changed.md): The Attribute value changed trigger (Triggers) starts a workflow when an attribute is set or changed, including values set at record or list-entry creation. - [Record added to list](https://80x.mintlify.app/reference/triggers/record-added-to-list.md): The Record added to list trigger (List triggers) starts a workflow whenever a record joins the selected list. - [Record command](https://80x.mintlify.app/reference/triggers/record-command.md): The Record command trigger (Triggers) adds a Run workflow button to a record so a person can run the workflow on demand, on one record or a batch. - [List entry updated](https://80x.mintlify.app/reference/triggers/list-entry-updated.md): The List entry updated trigger fires when a list attribute changes on an entry in a specific list. - [List entry command](https://80x.mintlify.app/reference/triggers/list-entry-command.md): The List entry command trigger adds a Run workflow button to a list so a person can run the workflow on selected entries. - [Task created](https://80x.mintlify.app/reference/triggers/task-created.md): The Task created trigger starts a workflow whenever a new task is created anywhere in the workspace. - [Recurring schedule](https://80x.mintlify.app/reference/triggers/recurring-schedule.md): The Recurring schedule trigger (scheduled) starts a workflow on a daily, weekly, monthly, or cron-based schedule in a fixed timezone. - [Webhook received](https://80x.mintlify.app/reference/triggers/webhook-received.md): The Webhook received trigger (external) starts a workflow when an external system sends JSON to the workflow's webhook URL. - [Manual run](https://80x.mintlify.app/reference/triggers/manual-run.md): The Manual run trigger (manual) starts a workflow on demand from the workflow editor, with no record or list entry in context. - [Create record](https://80x.mintlify.app/reference/records/create-record.md): The Create record block (Records) creates a new record in an Attio object such as a company, person, or deal. - [Create or update record](https://80x.mintlify.app/reference/records/create-or-update-record.md): The Create or update record block (Records) matches on a unique attribute, updates the record if found, or creates one if not. - [Update record](https://80x.mintlify.app/reference/records/update-record.md): The Update record block writes new attribute values to a record that already exists in an Attio object. - [Find records](https://80x.mintlify.app/reference/records/find-records.md): The Find records block (Records) looks up records in an object that match filter conditions, so later steps can read or act on them. - [Add record to list](https://80x.mintlify.app/reference/lists/add-record-to-list.md): The Add record to list block (Lists) adds a record to a selected Attio list and optionally sets the new list entry's attributes. - [Update list entry](https://80x.mintlify.app/reference/lists/update-list-entry.md): The Update list entry block writes new values to the list attributes of an existing entry, not the parent record. - [Find list entries](https://80x.mintlify.app/reference/lists/find-list-entries.md): The Find list entries block (List lookup step) returns the entries in a selected list that match your filter conditions. - [Delete list entry](https://80x.mintlify.app/reference/lists/delete-list-entry.md): The Delete list entry block (Lists) removes one entry from an Attio list while leaving its underlying record untouched. - [Create task](https://80x.mintlify.app/reference/tasks/create-task.md): The Create task block creates a new Attio task, optionally linked to records and assigned to teammates. - [Complete task](https://80x.mintlify.app/reference/tasks/complete-task.md): The Complete task block (Task step) marks an existing Attio task as complete. - [Enroll in sequence](https://80x.mintlify.app/reference/sequences/enroll-in-sequence.md): The Enroll in sequence block (Sequence step) adds a person record as a recipient in an Attio email sequence. - [Exit from sequence](https://80x.mintlify.app/reference/sequences/exit-from-sequence.md): The Exit from sequence block (Sequences) stops all future emails for a person already enrolled in an Attio sequence. - [Classify record](https://80x.mintlify.app/reference/ai/classify-record.md): The Classify record block (AI step) assigns one or more tags to a record from a fixed list of options you provide. - [Classify text](https://80x.mintlify.app/reference/ai/classify-text.md): The Classify text block (AI) uses AI to sort a text input into one or more tags you define. - [Summarize record](https://80x.mintlify.app/reference/ai/summarize-record.md): The Summarize record block (AI step) uses AI to write a text summary of a record from its attributes. - [Web agent](https://80x.mintlify.app/reference/agents/web-agent.md): The Web agent block (Agents) researches a record across the web with AI and returns answers you can use later in the workflow. - [Custom agent](https://80x.mintlify.app/reference/agents/custom-agent.md): The Custom agent block (Agents) runs a configurable AI agent inside a workflow, with optional read-only Attio data, web access, and app tools. - [If](https://80x.mintlify.app/reference/conditions/if.md): The If block (Conditions) routes a workflow down one of two paths based on whether its conditions are true. - [Switch](https://80x.mintlify.app/reference/conditions/switch.md): The Switch block (Condition step) routes a workflow into multiple named case paths by evaluating ordered conditions and running the first case that matches. - [Filter](https://80x.mintlify.app/reference/conditions/filter.md): The Filter block continues a workflow only when its conditions are true, and stops the run otherwise. - [Formula](https://80x.mintlify.app/reference/calculations/formula.md): The Formula block (Calculations) evaluates a math expression over number or currency variables and returns one numeric result. - [Aggregate values](https://80x.mintlify.app/reference/calculations/aggregate-values.md): The Aggregate values block (Calculations) reduces a list of numeric or currency values to a single sum, average, minimum, or maximum. - [Adjust time](https://80x.mintlify.app/reference/calculations/adjust-time.md): The Adjust time block (Calculations) shifts a timestamp forward or backward by a configured offset and unit. - [Random number](https://80x.mintlify.app/reference/calculations/random-number.md): The Random number block (Calculations) returns a random number between a minimum and a maximum value each time a workflow runs. - [Execute code](https://80x.mintlify.app/reference/calculations/execute-code.md): The Execute code block runs custom JavaScript inside a workflow and exposes the value it returns to later blocks. - [Delay](https://80x.mintlify.app/reference/delays/delay.md): The Delay block pauses a workflow run for a fixed, relative duration before the next block runs. - [Delay until](https://80x.mintlify.app/reference/delays/delay-until.md): The Delay until block pauses a workflow run until a specific date and time, then resumes the remaining blocks. - [Loop](https://80x.mintlify.app/reference/utilities/loop.md): The Loop block (utilities) repeats its nested blocks once for each item in an iterable list. - [Parse JSON](https://80x.mintlify.app/reference/utilities/parse-json.md): The Parse JSON block converts a JSON string into typed variables that later workflow blocks can read. - [Send HTTP request](https://80x.mintlify.app/reference/utilities/send-http-request.md): The Send HTTP request block (Utilities) calls an external URL from a workflow and returns the response. - [Round robin](https://80x.mintlify.app/reference/workspace/round-robin.md): The Round robin block picks one workspace member from a configured set, cycling through the set across workflow runs. - [Broadcast message](https://80x.mintlify.app/reference/workspace/broadcast-message.md): The Broadcast message block shows an in-app popup notification to selected workspace users. - [Celebration](https://80x.mintlify.app/reference/workspace/celebration.md): The Celebration block plays an in-app animation for selected workspace users to mark a meaningful moment. - [Third-party blocks](https://80x.mintlify.app/reference/integrations.md): Third-party blocks come from connected apps and let workflows receive events from external systems or push actions out to them. - [Variables and expressions reference](https://80x.mintlify.app/reference/variable-syntax.md): Variables pass a block's output into a later block's input, resolved fresh on every run from the trigger and the blocks that ran before. - [Glossary](https://80x.mintlify.app/reference/glossary.md): The glossary defines the Attio Workflows engine terms and go-to-market vocabulary this handbook uses, from fit and intent to Run as. - [How the engine works](https://80x.mintlify.app/explanation.md): Reference pages tell you what a block does; these pages explain why the Attio Workflows engine behaves the way it does. - [What are Attio Workflows?](https://80x.mintlify.app/explanation/what-are-workflows.md): An Attio workflow is an event-driven automation inside your CRM. A trigger starts a run, and a chain of blocks does the work. - [What's new in the 2026 Workflows engine](https://80x.mintlify.app/explanation/whats-new.md): The 2026 Workflows engine rebuilt Attio's automation around AI agent steps, native JavaScript, and a credit model where most blocks are free. - [Choosing the right trigger](https://80x.mintlify.app/explanation/triggers.md): A trigger is the event that starts a workflow, and choosing the wrong one is the most common way an automation fails silently. - [Variables & data passing](https://80x.mintlify.app/explanation/variables.md): Data moves through an Attio workflow as variables. A block produces outputs during a run, and later blocks read them as inputs. - [Conditions & filters](https://80x.mintlify.app/explanation/conditions-and-filters.md): Conditions are the attribute-operator-value tests that drive every decision in an Attio workflow, shared by the Filter, If, and Switch blocks. - [Records vs list entries](https://80x.mintlify.app/explanation/records-vs-list-entries.md): A record is the entity itself. A list entry is that record's membership in one list, and workflow blocks treat the two as different, typed inputs. - [Runs, debugging & publishing](https://80x.mintlify.app/explanation/runs-and-debugging.md): A run is one execution of a published workflow. The run viewer records every input, output, and error so you can operate workflows like production software. - [Loops & processing many records](https://80x.mintlify.app/explanation/loops.md): A loop is how a workflow acts on every item in a multi-valued result instead of silently stopping at the first one. - [Infinite loops and safety](https://80x.mintlify.app/explanation/infinite-loops-and-safety.md): An infinite loop happens when a workflow writes data that re-triggers itself, duplicating writes and burning credits on every pass. - [Permissions & workflow access](https://80x.mintlify.app/explanation/permissions-and-access.md): Three separate permission systems decide whether a workflow can run. They cover its data access, who can edit it, and what its agents may read. - [Workflow governance](https://80x.mintlify.app/explanation/workflow-governance.md): Workflow governance is the set of naming, ownership, access, and review practices that keep production Attio workflows safe to operate. - [AI-search optimization](https://80x.mintlify.app/explanation/ai-search-optimization.md): AI-search optimization is the set of structural choices that let AI assistants find, cite, and reuse this handbook's Attio Workflows guidance. - [Troubleshooting](https://80x.mintlify.app/troubleshooting.md): Troubleshooting a failing Attio workflow starts in the run viewer, not in the block editor. - [Production runbook](https://80x.mintlify.app/troubleshooting/runbook.md): A production runbook gives you the ordered first moves for failed, runaway, or unsafe Attio workflow behavior in production. - [Common errors](https://80x.mintlify.app/troubleshooting/common-errors.md): Most Attio workflow failures fall into a handful of patterns you can diagnose by symptom and fix in the run viewer. - [Go Pro](https://80x.mintlify.app/pro.md): Paid Attio Workflows audits, migrations, and builds turn this handbook into production automation in your own workspace. - [About & contributing](https://80x.mintlify.app/about.md): The Attio Workflows Handbook is a community-maintained, source-backed guide for people building go-to-market systems in Attio. - [Privacy policy](https://80x.mintlify.app/privacy.md): This site collects analytics, server logs, and an optional mailing list address. You can exercise your data-protection rights by emailing dan@80x.ai. This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.