メインコンテンツへスキップ
商談データを請求書発行システム (Stripe、QuickBooks、Xero など) に自動送信します。 商談が受注になったときに。

ワークフローの構成

  1. トリガー: レコードが更新 (商談オブジェクト)
  2. フィルター: ステージ = Closed Won
  3. レコード検索: 会社の詳細を取得
  4. コード (任意): ペイロードを整形
  5. HTTP リクエスト: 請求書発行システムに送信

ステップ 1: トリガーを設定

  1. 新しいワークフローを作成
  2. Record is Updated トリガーを選択
  3. オブジェクトとして Opportunity を選択

ステップ 2: Closed Won でフィルター

商談が受注になったときのみ続行するように、フィルター アクションを追加:
設定
フィールドステージ
条件等しい
CLOSED_WON (またはあなたのステージ名)
このトリガーは、商談の更新があるたびに発火します。 このフィルターにより、ステージが Closed Won に変わった場合にのみワークフローが続行されます。

ステップ 3: 会社の詳細を取得

商談レコードには、請求書に必要なすべての会社フィールドが含まれていない可能性があります。 レコード検索 アクションを追加:
設定
オブジェクト会社
一致条件ID が {{trigger.object.companyId}} に等しい
これにより、請求先住所、税番号などを含む会社の完全なレコードを取得します。

ステップ 4: ペイロードを整形 (任意)

請求書発行システムが特定のフォーマットを想定している場合は、コード アクションを追加:
export const main = async (params: {
  opportunity: any;
  company: any;
}): Promise<object> => {
  const { opportunity, company } = params;

  return {
    invoice: {
      // Customer info from Company
      customer_name: company.name,
      customer_email: company.email || "",
      billing_address: {
        line1: company.address?.street || "",
        city: company.address?.city || "",
        postal_code: company.address?.postalCode || "",
        country: company.address?.country || ""
      },
      tax_id: company.taxId || null,

      // Invoice details from Opportunity
      amount: opportunity.amount,
      currency: opportunity.currency || "USD",
      description: `Invoice for ${opportunity.name}`,
      due_days: 30,

      // Reference back to Twenty
      metadata: {
        opportunity_id: opportunity.id,
        company_id: company.id
      }
    }
  };
};

ステップ 5: 請求書発行システムに送信

HTTP リクエスト アクションを追加:
設定
メソッドPOST
URL請求書発行 API のエンドポイント
ヘッダーAuthorization: Bearer YOUR_API_KEY
本文{{code.invoice}} またはフィールドを直接マッピング

例: Stripe の請求書

POST https://api.stripe.com/v1/invoices
Headers:
  Authorization: Bearer sk_live_xxx
  Content-Type: application/x-www-form-urlencoded

Body:
  customer: {{company.stripeCustomerId}}
  collection_method: send_invoice
  days_until_due: 30

例: QuickBooks の請求書

POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice
Headers:
  Authorization: Bearer YOUR_ACCESS_TOKEN
  Content-Type: application/json

Body: {{code.invoice}}

ワークフロー全体の概要

手順アクション目的
1トリガー: Record Updated任意の商談が変更されたときに発火
2フィルターステージが Closed Won の場合のみ続行
3レコード検索請求用の会社詳細を取得
4コード請求書発行 API 向けにデータを整形
5HTTPリクエスト外部システムで請求書を作成

ヒント

  • 外部 ID を保存: Update Record アクションを使用して、API から返された請求書 ID を商談に保存
  • エラー処理: HTTP リクエストが失敗した場合に通知を送信する分岐を追加
  • まずテスト: 本番運用前に、請求書発行システムのサンドボックス/テストモードを使用

関連