Skip to main content
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. You have a short window before every other vendor floods that account’s inbox. This recipe gets a non-generic, funding-aware first touch out the door fast. Here is the shape of it. The workflow fires on Webhook received from your funding-signal source. A funding-signal source is any tool that tells you when a company raises money. It reads the event with Parse JSON, which turns the raw data into named pieces you can reuse. The expensive step is the Web agent, which is priced by the tokens it uses. So a free Filter sits in front of it. Only raises that match your ideal customer profile (ICP), the kind of company you actually sell to, get researched. After that, the rest of the blocks act on the qualified accounts. Find records pulls the right contacts. Update record saves the angle. Enroll in sequence starts the tailored outbound, and a Slack message tells the account owner to move first.

Prerequisites

  • A workspace plan that includes the new Workflows engine and its agent and AI blocks. Pro is recommended for the volume this recipe assumes. Plan allowances live on Credits & pricing explained.
  • A funding-signal source, such as a data provider or your own enrichment job. It needs to POST a JSON event to an Attio webhook when a company raises a round.
  • The Slack integration connected to your workspace, with the workflow authorized to post to your account-owner channel. See Third-party blocks.
  • An existing sequence, for example Funding congrats: outbound, whose first email opens with a variable for the tailored angle.
  • On the Companies object: a long-text attribute for the angle (funding_angle), two attributes for the round (last_round_stage and last_round_amount), and an owner attribute (owner).
  • A read-only identity for the Web agent, assigned through the Run as permission model. This lets the agent read records and the public web, but it cannot write. See Permissions & workflow access.

How it works

The webhook delivers the raw funding event. The rest of the workflow turns that event into a tailored first touch. It does this without spending a token on a raise you would never sell into. First, Parse JSON turns the payload into named variables. Then a free Filter checks the raised company against your ICP threshold and stops the run when it does not qualify. Only qualified accounts reach the token-priced Web agent. The Filter is the cost guard here. It keeps the agent off the raises you do not want. Once an account passes, the agent reads the company and the round read-only and returns one funding-aware outreach angle. From there, three blocks act on it. Update record saves that angle. Enroll in sequence starts the tailored outbound, and a Slack message tells the owner to get ahead of the competition.
  1. Webhook received fires when a funding-signal source POSTs a round event.
  2. Parse JSON extracts the company, stage, and amount from the payload. Free.
  3. Filter continues only when the company meets the ICP threshold, and stops the run otherwise. Free.
  4. Find records pulls the target contacts at the account. Free.
  5. Web agent researches one funding-aware angle, read-only.
  6. Update record saves the angle and round details to the company.
  7. Enroll in sequence starts the tailored outbound with the angle as the first line.
  8. Slack notifies the account owner.

Build steps

1

Add the webhook trigger

Create a new workflow. Click the Add trigger button and choose Webhook received. Copy the generated endpoint URL into your funding-signal source so it POSTs there on each round. Send one test event so Attio captures a sample payload to map against.
2

Parse the funding event

Add a Parse JSON block immediately after the trigger to turn the webhook body into named variables. This block is free.
3

Gate the agent with an ICP Filter

Add a Filter after Parse JSON. This block is the cost guard. It is free, and it stops every below-threshold run before the Web agent can spend a token. Filter to ICP first rather than research every funding event.
4

Find the contacts at the account

Add a Find records block to pull the people you will actually enroll. This block is free.
5

Research the angle with a read-only Web agent

Add a Web agent after Find records. Set its Run as identity to your read-only research user. The agent can then read the record and the public web, but it cannot write back. Keep the prompt to one tightly scoped output: a funding-aware angle, not generic research.Use a prompt that forces a verifiable, funding-specific opening line:
6

Save the angle

Add an Update record block to write the angle and round details to the company. The Web agent does not save anything on its own.
7

Enroll the contacts with the tailored first line

Add an Enroll in sequence block. Loop over the contacts that Find records returned and enroll each into the funding sequence, passing the angle as the first-line variable.
8

Notify the owner over Slack

Add a Slack block so the account owner knows to move now.
The Web agent is the only token-priced step. So the Filter must sit before it, and it must stop below-ICP runs. Watch for two mistakes: the agent running ahead of the Filter, or the Filter passing everything. Either one makes you research every funding event and burn tokens on raises you would never sell into.

Variable mapping

Credit cost worked example

The Parse JSON, Filter, and Find records blocks are free logic and lookups, so they never consume credits. The Web agent is the token-based cost. Each Update record, Enroll in sequence, and Slack call costs 1 credit. The whole point of the Filter is that the agent runs only on the small slice of raises you want. Assume 300 funding events hit the webhook a month and the ICP Filter passes about 20% of them, so 60 accounts. The fixed-rate floor is roughly 180 credits a month: 60 writes, 60 enroll calls, and 60 Slack messages. The variable ceiling is the Web agent total. Do not assume a fixed number for it. Sample about 10 representative raises, run them, and read the actual per-run credit cost in the run viewer before you scale. Gating with the Filter is what keeps that agent line off all 300 events. Compare the monthly total against your plan’s allowance on Credits & pricing explained.

Test plan

  1. POST a real ICP-fit funding event to the webhook endpoint, for example a $40M Series B at a 200-person EMEA company with a populated domain.
  2. Open the run in run history and confirm Parse JSON extracted company, domain, stage, and amount.
  3. Confirm the Filter passed. Expect a green continue.
  4. Confirm Find records returned the expected contacts at the account, such as Priya Sharma.
  5. Confirm the Web agent returned a funding-aware angle keyed to the round, and that its Run as identity is read-only.
  6. Confirm Update record wrote funding_angle, last_round_stage, and last_round_amount. Confirm Enroll in sequence enrolled the contacts with the angle as the first line. Confirm Slack posted to the owner.
  7. Run a deliberately failing input. POST an event with an empty domain and an amount_usd of 250000. The Filter stops the run before the Web agent. Verify in run history that no agent, enroll, or write block executed and that no tokens were spent.

Failure modes

Variations

Job-change signal instead of funding

Point the Webhook received trigger at a job-change source, and have Parse JSON extract the person’s new title and company. Filter to ICP companies and seniority, then have the Web agent write an angle about the new role rather than the round. Everything downstream stays the same. That is Update record, Enroll in sequence, and Slack. Only the signal and the angle prompt change.

Summarize record for a cheaper tier

For high volume or smaller raises where public-web research is not worth the cost, replace the Web agent with Summarize record. It is still token-based. But it works only from data already in Attio, with no web browsing, so it costs less per run. Keep Parse JSON, the Filter, Find records, and the routing unchanged. Only the research block changes.

See also


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