ooligo
n8n-flow

Turn website de-anonymization signals into ICP-filtered warm outreach with n8n

Difficulty
中級
Setup time
1-2 hours
For
revops · sdr
RevOps

Stack

WarmlyRB2B のアウトゴーイング Webhook 経由で個人レベルのサイト訪問者を捕捉し、特定された各人物を設定可能な ICP ルーブリックに対してスコアリングし、条件に合わない全員を除外し、週単位のウィンドウ内で重複を排除し、Salesforce で既存コンタクトと踏み込むべきでない進行中の動きの有無を確認し、生き残った人物をアカウントオーナーまたはテリトリー SDR プールにルーティングし、その人物が閲覧した具体的なページに紐づけたウォームなファーストタッチを Claude にドラフトさせ、そのコンテキストを (ドラフトを含めて) Slack 通知と Salesforce の Lead または Task として届ける n8n フローです。apps/web/public/artifacts/visitor-deanon-to-outreach-n8n/ にあるバンドルには、完全な n8n エクスポートに加え、インポート、環境変数、認証情報のセットアップ、ICP ルーブリック、ブランチごとの検証を網羅した _README.md が同梱されています。

この構成を使うべきとき

匿名化解除ツールが既に匿名トラフィックを実名の人物に解決しているものの、生のフィードが実用に耐えないときに使ってください。RB2B は特定された全米国内訪問者を ICP フィルターなしで Slack チャンネルにプッシュします。1 週間もすれば、特定される人物のほとんどが求職者、学生、競合、そしてバイヤーから 3 階層離れた人々であるため、担当者はそれを読むのをやめます。Warmly 自身の Autopilot は訪問に基づいて動けますが、年額 $30,000 のティアで提供される有料のブラックボックスであり、CRM のオープンな商談を見ずにドラフトします。両方に共通する症状は同じです。ICP に完全に合致する特定済み訪問者が、ノイズと同じ扱いを受けているため、重要な人物に対して誰も素早く動けないのです。

このフローは匿名化解除ツールと担当者の間に位置します。役職の職能、シニオリティ、企業規模帯、国の許可リスト、ページ意図という ICP ルーブリックを、オペレーションチームが読めて変更できる 1 つの Code ノードで適用するため、担当者に届くのはウォームなタッチに値する訪問者だけになります。匿名化解除は 人物 とその 閲覧したページ を与えてくれるので、Claude のドラフトは汎用的な業界の課題ではなく「価格ページをご覧になっていましたね」と参照できます。その具体性こそが、コールドリストではなくサイト訪問に基づいて動くことの本質です。

Warmly と RB2B の 両方 を運用している場合、あるいは一方を他方に置き換える予定がある場合にも正しいパターンです。Normalize Visitor Payload ノードが両方の Webhook 形状と汎用フォールバックを処理するため、下流のルーティング、フィルタリング、ドラフト作成のロジックはどのベンダーが発火したかを気にしません。

この構成を使うべきでないとき

匿名化解除ツールがアウトゴーイング Webhook を送信するよう設定されていない場合は見送ってください。Warmly (Settings → Webhooks) と RB2B (Integrations → Webhook / Zapier) はどちらもリアルタイムの個人レベル Webhook をサポートしていますが、それらを有効にしていなければ取り込むものが何もなく、アカウントレベルの意図データで機能するポーリングのフォールバックは個人レベルの特定には存在しません。

特定ボリュームが少なく、ICP のヒット率が既に高い場合は見送ってください。RB2B の Standard ティアは月におよそ 250 人の特定済み訪問者を解決します。トラフィックが厳密にターゲティングされているためそのほとんどが既に ICP 内であるなら、ICP フィルターと CRM サプレッションレイヤーは不要なインフラを追加するだけです。RB2B が提供する Slack プッシュで十分です。

特定された訪問者をコールドシーケンスに自動登録するために使ってはいけません。ドラフトをそのまま Instantly や Smartlead に配線するのは些細なことですが、それこそが送信ドメインをフラグ付けされる原因となるアグレッシブな手です。サイト訪問は何の同意でもありません。ドラフトするが送信しない設計は、特定と送信の間に人間を残します。これはアカウントレベルの意図よりも個人レベルの匿名化解除にとってより重要です。なぜなら、マッチはフォーム入力ではなく確率的なアイデンティティだからです。RB2B 自身の精度は米国 ICP トラフィックでおよそ 50〜70% であり、Warmly のアカウントレベル解決は訪問者の約 15〜25% に着地します。

最後に、これはコンプライアンス制御ではありません。ICP ゲートで国の許可リストにアウトリーチを制限することはできますが、Warmly/RB2B で スニペット を米国トラフィックに制限すること、特定された人物をサプレッションリストに通すこと、CA/VA/CO/CT の取り扱いを弁護士とレビューすることは、すべて n8n の外で行われます。

セットアップ

  1. バンドルをインポートする。 apps/web/public/artifacts/visitor-deanon-to-outreach-n8n/visitor-deanon-to-outreach-n8n.jsonWorkflows → Import from File から n8n にドロップします。エントリーポイントは 1 つ。Warmly と RB2B の両方がポストする /webhook/visitor-deanon の Webhook です。

  2. 環境変数を設定する。 このフローは ICP のしきい値 (ICP_MIN_EMPLOYEESICP_MAX_EMPLOYEESICP_COUNTRY_ALLOWLISTICP_TITLE_ALLOWLISTICP_TITLE_DENYLIST)、Salesforce のインスタンスとトークン、3 つの SDR プールのメールと Slack ハンドルに環境変数を使います。完全なリストと各値の入手先は _README.md にあります。すべての変数にコード内フォールバックがあるため、欠落があってもフローが例外を投げることはありません。ただしデフォルトは意図的に汎用的なので、本番稼働前に設定してください。

  3. 認証情報を配線する。 3 つの認証情報が必要です。

    • PLACEHOLDER_ANTHROPIC_CRED_IDx-api-key に Anthropic キーを設定した HTTP Header Auth
    • PLACEHOLDER_SLACK_CRED_IDAuthorization: Bearer xoxb-… を設定した HTTP Header Auth
    • PLACEHOLDER_SALESFORCE_CRED_IDAuthorization: Bearer <sfdc_token> を設定した HTTP Header Auth (本番環境では Connected App の OAuth 認証情報)
  4. Webhook を n8n に向ける。 Warmly では https://<your-n8n-host>/webhook/visitor-deanon の URL を Settings → Webhooks の下に追加します。RB2B では Webhook インテグレーション (または同じ URL に転送する Zapier の「Catch Hook」) を使います。どちらのベンダーの認証情報も n8n には保存されません。彼らがあなたにプッシュするのです。

  5. ICP ルーブリックをチューニングする。 ICP Fit Gate を開いてスコアリングブロックを読みます。役職の職能、シニオリティ、企業規模帯、国、ページ意図に対してポイントを付与し、ICP_FIT_THRESHOLD (デフォルト 3) 以上の人物を全員通過させます。有効化する前に、あなたのフィット定義に合わせてポイントの重みとしきい値を調整してください。

  6. すべてのパスを検証する。 _README.md の検証を実行します。明確に ICP 内のペイロードをポスト (通過してドラフトするはず)、明確に ICP 外のペイロードをポスト (ゲートで除外されるはず)、同じ ICP 内のペイロードを 2 回ポスト (2 回目は dedup で除外されるはず)。dedup テストは Execute Workflow ボタンではなくライブの Webhook に対して実行してください。静的データは本番実行時のみ永続化されます。

フローの動作

Webhook — Visitor Deanon Ingest は POST リクエストを受け付け、Respond 202 Accepted 経由で即座に 202 を返すため、ベンダーの Webhook 呼び出し元が LLM 呼び出しでブロックされることはありません。Normalize Visitor Payload は Code ノードで、ペイロードの形状からソースを検出します。RB2B (その Business Email / Captured URL フィールドで識別)、Warmly (コンタクトと企業のネスト構造で識別)、そして汎用フォールバックです。それぞれを一貫したフィールドを持つ 1 つの内部レコードにマッピングします。firstNamelastNametitlecompanydomainemaillinkedinUrlemployeeCountindustrycountrypageViewedreferrer です。pageViewed フィールドは RB2B の Captured URL と Warmly のシグナルリファラーから来ます。これがドラフトをコールドではなくウォームにするものです。

ICP Fit Gate は、このフローを単なる意図ルーターと区別するノードです。人物をルーブリックに対してスコアリングします。役職の職能を許可リスト (revops、sales、marketing、growth、founder、product) と拒否リスト (student、intern、seeking、agency recruiter) に対して照合、シニオリティ (C-level、VP、Head、Director は高スコア)、ICP_MIN_EMPLOYEESICP_MAX_EMPLOYEES の間の企業規模帯、ICP_COUNTRY_ALLOWLIST に対する国、そしてページ意図 (/pricing/demo/product の閲覧はポイントを追加)。合計が ICP_FIT_THRESHOLD を下回る場合、ノードは空の配列を返し、実行は静かに停止します。その人物は担当者に届きません。fitScore と理由がレコードに添付されるため、通過した訪問者の Slack カードには なぜ 適格なのかが表示され、誤設定されたルーブリックも監査可能になります。

Dedup Gate (Static Data) は n8n のワークフロー静的データ ($getWorkflowStaticData('global')) を使って、人物ごと・週ごとのキー (dedup_<email-or-linkedin>_<ISO-week>) を保持します。週単位はウォームアウトリーチにとって正しいウィンドウです。5 日間で 3 回サイトを訪れた人物には、担当者のタッチを 3 回ではなく 1 回生成すべきです。そのオブジェクトは Code ノードから実行をまたいだ状態を永続化する唯一の正しい方法であり (n8n の公開 REST API には静的データのリソースがありません)、ノードはあらゆる下流呼び出しの前にキーを刻印するため、同じ人物に対する 2 つの同時特定が両方とも通過することはできず、また以前の週のキューを刈り込むことでストアを小さく保ちます。

Salesforce — Contact Lookup は人物のメールに一致する Contact をクエリし、Contact Id、Account Id、Owner (Id、Name、Email、Slack_Handle__c)、そして 2 つのサプレッションシグナル、すなわちアカウントにオープンな Opportunity があるかと、コンタクトが既にアクティブなシーケンスに入っているか (Current_Sequence__c フィールド経由) を返します。次に Routing & Suppression Logic が判断します。コンタクトが存在し、いずれかのサプレッションシグナルが設定されている場合 (オープンな商談、アクティブなシーケンス、既存顧客のアカウントタイプ)、ノードは空の配列を返します。ウォームな匿名化解除タッチはライブの動きを踏んでしまうため、除外してログに記録します。そうでなく、コンタクトが存在する場合、スパイクはアカウントオーナーにルーティングされ、フローは既存コンタクトに Task を作成します。コンタクトが存在しない場合 (匿名化解除の一般的なケース。そもそも狙いは CRM にまだいない人物を浮上させることだからです)、テリトリー SDR プール (国別に AMER/EMEA/ROW) にルーティングし、フローは Lead を作成します。ノードは createSObjectTask または Lead に設定します。

Claude — Draft Warm First Touchclaude-haiku-4-5、8 秒のタイムアウト、neverError: true で Anthropic API にポストします。システムプロンプトは埋め草 (「I noticed」「reach out」「touch base」「circle back」) を禁止し、閲覧された具体的なページとその人物の役職に冒頭文を紐づけるよう Claude に指示します。「価格ページをご覧になっていましたね」は実行可能で、「ぜひつながりましょう」はそうではないからです。Parse Draft (with fallback) はタイムアウトや不正な JSON を処理し、draftSource: template-fallback とタグ付けされたテンプレートベースのドラフトを生成します。どちらのパスも draftSubjectdraftBodydraftTalkingPoint を生み出します。Slack — Notify Assignee#visitor-deanon に Block Kit カードをポストし、人物の名前、役職、企業、LinkedIn URL、閲覧したページ、fitScore と理由、そして「送信前に編集」とラベル付けされたドラフトを表示します。Salesforce — Create Record/sobjects/{{ createSObject }} に POST します。新規の人物には Lead、そうでなければ WhatId 経由で既存コンタクトにリンクされた Task で、OwnerId は実在する Salesforce User Id のみに設定され (メールは決して使わない。MALFORMED_ID を返すため)、プールにルーティングする場合は省略されます。

コストの実際

ICP ゲートを通過した特定済み訪問者 1 人あたり、claude-haiku-4-5 はおよそ 500 入力トークンを受け取り、3 フィールドのドラフトのために約 150 出力トークンを生成します。Haiku 4.5 の価格 (入力 ~$0.80/M、出力 ~$4/M) では、ドラフト 1 件あたり約 $0.0007 です。コスト抑制は ICP ゲートが担います。RB2B の Pro ティアが月に約 1,000 人の特定済み訪問者を浮上させ、ルーブリックが 30% を通過させるなら、月に約 300 回ドラフトすることになります。Claude の支出は月 $0.25 未満です。dedup ウィンドウにより、リピート訪問者は訪問ごとではなく週に 1 回課金されます。

自動化ではなく匿名化解除ツールが本当のコスト項目です。RB2B は月 $159 (~250 人の特定済み訪問者) から月 $499 (~1,000 人) まで。Warmly の有料プランは年額 $15,000 から始まり、フルの Autopilot スイートは年額 $30,000 です。n8n のセルフホストは無料。n8n Cloud Starter は月 $20 で 5,000 回の実行をカバーし、各約 9 ノードのドラフト済み訪問者 ~300 人を余裕で処理します。Salesforce API の使用は通過する訪問者 1 人あたりクエリ 1 回と作成 1 回。1 日 15,000 回以上の Enterprise 上限に対して月に数百コールです。Slack ボットと n8n の Webhook エンドポイントは無料です。

障害モード

  • ICP ルーブリックが静かに全員を除外する。 厳しすぎるしきい値や、バイヤーが実際に役職をどう書くかを見逃した役職許可リスト (例: 拒否リストの部分文字列としての「RevOps」が誤って「Revenue Operations」を捕捉する) は、すべての訪問者がゲートで落ち、#visitor-deanon チャンネルが静まり返ることを意味します。これは実際には「フィルターの誤設定」なのに「トラフィックなし」のように読めてしまいます。ガード: ICP Fit GatefitScore とルールごとの理由を すべての レコードに添付し、_README.md の検証には既知の ICP 内ペイロードをポストして通過を確認することが含まれます。最初の 1 週間は通過率を監視してください。実トラフィックでほぼゼロなら、ルーブリックを緩めてください。

  • dedup 静的データは本番実行時のみ永続化される。 Dedup Gate (Static Data)$getWorkflowStaticData('global') を読み書きしますが、n8n がこれを保存するのは実行が本番でトリガーされたときだけで、手動の Execute Workflow 実行では決して保存されません。Execute Workflow を 2 回クリックして dedup をテストすると、実際には機能しているのにゲートが壊れているように見えます。ガード: ワークフローを有効化し、ライブの Webhook URL に 2 回 POST してください。2 回目の POST は dedup で除外されるはずです。ノードは実行のたびに前週のキーを刈り込むため、ストアは自己クリーニングされます。

  • ドラフトが間違った人物に宛てられる。 個人レベルの匿名化解除は確率的で (RB2B の特定は米国 ICP トラフィックで約 50〜70% の精度)、そのためドラフトが実際の訪問者ではない名前に挨拶する可能性があります。ガード: フローは決して送信しません。Slack カードは LinkedIn URL を先頭に表示するため、SDR は編集・送信の前にワンクリックでアイデンティティを検証でき、ドラフトはシステムプロンプトと Slack メッセージの両方で出発点であるとラベル付けされています。

  • Salesforce の Bearer トークンローテーションがルックアップを停止させる。 SFDC_ACCESS_TOKEN の生の Bearer トークンはローテーションします (永続セッションポリシーのない組織では約 2 時間ごと)。期限切れになると、Salesforce — Contact Lookup は静かに 401 を返し (neverError: true のため)、すべての訪問者が新規に見えて Lead としてプールにルーティングされ、サプレッションを静かにバイパスします。ガード: 既存コンタクトが訪問しているとわかっているのに Task 作成がゼロで Lead 作成ばかりの連続がないか監視してください。本番環境では、生のトークンを OAuth 2.0 クライアントクレデンシャルフローを使う Connected App に置き換えてください。_README.md がこれを網羅しています。

代替案との比較

Warmly Autopilot との比較。 Warmly 自身のエージェントは訪問から適格化して予約できます。既に年額 $30,000 のティアに支払っており、サプレッションのソースオブトゥルースとして Salesforce を運用していないなら、それで十分かもしれません。ICP ロジックとサプレッションルールをオペレーションチームが読めて監査できるようにしたい場合、Warmly と並行または代わりに RB2B を運用している場合、あるいはタッチを自律的な送信ではなく担当者が編集するドラフトにしたい場合には、適切なツールではありません。このフローはその 3 つすべてを n8n のコストで提供し、両方のベンダーにまたがって機能します。

RB2B → Slack → 手動トリアージ との比較。 RB2B のネイティブな Slack プッシュが現状維持です。特定された全員、ICP フィルターなし、CRM の認識なし。無料ティアに優しく低ボリュームでは問題ありませんが、月 1,000 件の特定になるとチャンネルは担当者が無視するノイズになり、商談中のコンタクトに ping を送ることへのガードがありません。このフローはまず ICP にフィルターし、アクティブな動きをサプレスするため、Slack に届くものは読む価値があります。

Zapier による Instantly/Smartlead への自動登録 との比較。 ワンクリックの手は RB2B/Warmly → Zapier → コールドシーケンサーです。最速で送信でき、最もリスクが高い手です。確率的なアイデンティティへの人間のチェックなし、オープンな商談に対するサプレッションなし、そして新たに匿名化解除された人物へのコールド送信は送信ドメインを焼く最速の方法です。このフローはその速度を、担当者を介したドラフトと CRM を認識したサプレッションと引き換えにします。

匿名化解除フィード上の Clay テーブル との比較。 Clay は匿名化解除フィードを取り込み、エンリッチし、数式カラムで ICP ルーブリックを適用し、シーケンサーにプッシュできます。バッチのプロスペクティング実行には強くフィットします。イベント駆動ではないため、訪問とタッチの間には常にバッチの遅延があります。週次のエンリッチメントとプロスペクティングのレイヤーには Clay を使い、リアルタイムで訪問がまだウォームなうちの応答にはこのフローを使ってください。

Files in this artifact

Download all (.zip)