NotionのURL短縮統合は2026年6月4日にBetaからLiveに移行しました。Notionをキャンペーンのハブとして使っているなら、Elido は選択したどのデータベースにあるURLも読み取り、自分のドメインにブランド付き短縮リンクを作成してテーブルに書き戻し、リンク先の変更を監視します。OAuthで1クリック、シークレットの貼り付け不要、フィールドマッピングはデータベースごとに設定可能です。
この記事では、OAuthの接続ステップとスコープ、6列構造、競合解決を含む双方向編集フローについて説明します。以前のNotionショートリンクの解説記事を読んだ方向けの深掘りコンテンツです。
ワンクリックOAuth:「接続」を押したときに実際に何が起きるか
かつてのトークン貼り付けフローでは、Notionの内部統合トークンを生成して貼り付け、各データベースを手動で統合と共有する必要がありました。それは過去のことです。新しいフローは3クリックです。ElisidoでConnect、Notionの同意画面でワークスペースとデータベースを選択、完了。OAuthのやり取りはNotion API認証ドキュメントの標準に従い、認証コード交換にはPKCEを使用します。
付与されるスコープは意図的に絞られています。
- read_content - 選択したデータベースのDestination、Tags、Titleプロパティを読み取る。
- insert_content - 外部ソース(Zap、webhook、CSV)からリンクを作成するよう求めた際に新しい行を作成する。
- update_content - Short URL、Clicks、QR、Last Syncedプロパティを書き戻す。
Elido はワークスペース全体の読み取りや、選択しなかったページへのアクセスを要求することは一切ありません。Notionもサーバー側でこれを強制しており、権限外のデータベースへのクエリは403を返します。データベース操作に関するNotion APIリファレンスに、統合が使用するメソッドが記載されています。
同意を完了すると、ブラウザは認証コードを持ってapi.elido.app/v1/oauth/notion/callbackに到達します。api-coreはコードをアクセストークンと交換し、ワークスペースのKMSキー(ADR-0036準拠)でトークンを暗号化してintegration_credentialsに保存します。平文のトークンはディスクにもログにも触れません。また、管理者が誰がどのNotionワークスペースをいつ接続したかを確認できるよう、監査ログにもエントリが記録されます。
接続ボタンは各ワークスペースの統合タブにあります。統合カタログの他のベンダーと同じ場所です。Notion統合ページに同意画面のスクリーンショットがあります。権限はNotionの設定、接続パネルから取り消せます。そこから取り消すとwebhookが発火し、Elido側のトークンが60秒以内に削除されます。
2つのモード:アタッチまたは作成
アタッチモードでは、URLプロパティを持つ既存のデータベースにElisidoを向けます。Elido は必要な列だけを追加し、何も名前変更しません。作成モードでは、選択したページ内に新しい「Elido Links」データベースをElisidoがプロビジョニングします。ほとんどのチームはアタッチモードを選びます。キャンペーンテーブルがすでに何四半期分ものデータとともに存在しているからです。どちらの場合もスキーマは同じです。
フィールドマッピング:6つの列とその設計の意図
統合が使用する列のレイアウトを以下に示します。名前はデフォルト値であり、設定、Notion、フィールドマップからデータベースごとに変更できます。
| 列 | Notionの型 | 方向 | 備考 |
|---|---|---|---|
| Short URL | URL | Elido が書き込む | ユーザー側からは読み取り専用。編集しても効果はない。 |
| Destination | URL | Notion が書き込む | 短縮リンクが指す先のURL。編集可能。 |
| Tags | 複数選択 | 双方向 | 競合時はタグが和集合で結合される。 |
| Clicks | 数値 | Elido が書き込む | 5分ごとにポーリング。読み取り専用。 |
| QR | ファイル | Elido が書き込む | 短縮URLのQRコードの1024px PNG。 |
| Last Synced | 日付 | Elido が書き込む | 最後の同期のUTCタイムスタンプ。 |
いくつかの設計判断について補足します。
Clicksは意図的にリアルタイムではありません。 Notionにはストリーミングのプリミティブがなく、クリックごとにエンドポイントを叩くとレート制限を使い切ってしまいます。5分間隔は、ほとんどのオペレーションチームが必要とする鮮度に合っています。リアルタイムが必要な場合は、リンククリックイベントのwebhookを発火させ、自分のダッシュボードに転送してください。Notionはキャンペーンビュー、webhookはデータの流れです。
QRはURLではなくFilesプロパティです。 Notionはテーブルで外部画像URLをレンダリングしませんが、添付ファイルはサムネイルとして表示されます。Elido は最初の同期時にPNGをアップロードし、短縮URLが変わった場合のみ再アップロードします。QRコード機能ページとGS1 QRガイドを参照してください。
Tagsは和集合による双方向同期です。 両側が書き込む唯一の列です。Notionで行に「launch-2026」タグを付け、ElsidoにZapからの「winter-promo」があれば、次の同期で両方のタグが両側に存在します。削除も伝播します。監査ログはすべての変更を記録します。
UTMパラメーターについては、UTMテンプレートガイドでフォルダーにテンプレートを紐付けることで、すべてのリンクが正しいutm_sourceを継承します。Destinationの列はクリーンなままで、Elido はクリック解決時にスマートリンクルールを通じてパラメーターを付加します。
双方向編集フロー:NotionとElisidoの意見が異なるときに誰が勝つか
これは同期ツールにサイレント上書きの歴史があるため、チームが最も気にする部分です。契約内容を説明します。
api-core内のワーカーは、最後のlast_edited_timeウォーターマーク以降の変更を求めて、5分ごとに接続された各データベースをポーリングします。プロパティが変更されると、フィールドマップを読み込んでオーナーシップを判断します。ルールは固定です。
- Notionが所有: Destination、Tags(書き込み側)、Title。
- Elido が所有: Short URL、Clicks、QR、Last Synced。
- 共有: Tags(読み取り側。両側がマージされたセットを確認できる)。
Notion所有フィールドがNotion側で変更された場合、Elido は内部状態を更新してintegration.notion.syncイベントを発行します。Elido所有フィールドが変更された場合(クリック数の更新)、Elido は次回の同期で書き戻します。
興味深いケースは競合です。14:02:10にNotionでDestinationを変更し、14:02:30に同じ5分ウィンドウ内にZapがElisidoに新しいDestinationを書き込んだとします。DestinationはNotionが所有しているのでNotionが勝ちます。Elido はZapの書き込みを破棄し、行にコメント(「14:02:30にDestinationで競合が発生、Notionの値を保持、監査ログを参照」)を投稿し、webhook経由でサブスクライブ可能な競合イベントを発行します。Zapが受け取り、再試行するかアラートを送るかを判断します。
どこにもサイレント上書きはありません。すべての書き込みが記録されます。すべての競合は行コメントを受け取ります。永続的な記録のために、ClickHouseエクスポートガイド経由でデータウェアハウスに監査ストリームを送るか、GraphQL APIを直接使用してください。
リンク先の変更を伝播させてはいけない場合
Destinationを下書きとして編集したいことがあります。2つのパターンが助けになります。
ステータスプロパティをガードとして使う。 Draft、Live、Pausedの値を持つ「Sync」という選択を追加します。統合はSync = Liveの行のみを同期します。Draftで作業してLiveに切り替えると、次のティックで拾われます。ほとんどのマーケティングチームがこの方法を使うようになります。
データベース全体を一時停止する。 設定、Notion、データベースごとに一時停止。移行や一括編集中に便利です。
セットアップ手順:ゼロから最初の同期済み行まで4分
- Notionを接続する。 ワークスペース設定、統合、Notion、Connect。ワークスペースを選択し、データベースにチェックを入れ、Allowをクリック。
- データベースを選ぶ。 設定、Notion、「データベースを追加」。ドロップダウンに権限を与えたすべてのデータベースが表示されます。1つ選択。
- フィールドをマッピングする。 Destination、Titleなどを確認。プロパティがない?Elido が作成を提案します。
- ドメインを選ぶ。 短縮リンクにブランド付きドメインを選択します。まだカスタムドメインがない場合はデフォルトを選び、後でワンクリックで移行できます。
- 保存してバックフィルする。 Elido はすべての行を読み取り、Destinationはあるが Short URLがない行に短縮リンクを生成して書き戻します。既存の Short URLはそのまま残されます。
実際の所要時間は200行で約4分です。大きなバックフィルは無料ワークスペースのNotionの1秒あたり3リクエスト上限に達します。5,000行のデータベースは約30分でバックフィルされます。ワーカーはレート制限を受けても自動でバッチ処理を再開します。
これを使うべき場面 vs. Zapier vs. API直接利用
3つのパスがあり、互いに排他的ではありません。
ネイティブ統合は、Notionが作業の場であれば正しいデフォルトの選択です。OAuth、競合解決、監査ログ、フィールドマッピング、コード不要。
Zapは多段階ワークフロー(「行が追加されかつSlackのリアクションが付いたらリンクを作成する」)に適しています。1対1の行からリンクへのマッピングなら、ネイティブ統合のほうが速くてコストも低いです。Zapier自動化の記事を参照してください。
REST APIは、Elido上にカスタムワークフローを構築している場合に適しています。プロダクト統合を構築する開発者にとって、services/api-core/internal/integrations/notion/以下のソースコードは1回のセッションで読める十分な小ささです。
BitlyやRebrandlyとの比較:執筆時点でどちらもネイティブのNotion統合を持っていません。両方ともZapierまたはカスタムスクリプトが必要です。差分についてはvs Bitlyページを、無制限のNotionデータベースを含むプランについては料金ページを参照してください。
トラブルシューティング:Betaで発生した4つの問題
8週間のBeta期間中に4つのカテゴリの問題が発生しました。いずれもコードで対応済みですが、何を探すべきかを知っておくと便利です。
ワークスペースの名前変更後に「データベースが見つかりません」。 Notion管理者がワークスペースの名前を変更すると、ワークスペースIDは安定していますが、こちら側のキャッシュされたメタデータが最大1時間古くなります。回避策:設定、Notionで「強制再同期」をクリックします。本番環境のキャッシュTTLは15分に設定されているため、これは主にBetaの特性です。
大規模バックフィル中のレート制限。 Notionの統合ごとの制限は1秒あたり3リクエストです。5,000行のデータベースは初回バックフィル時にこれに激しく当たります。ワーカーは指数バックオフ(250ms、500ms、1s、2s、上限8s)を適用して再開します。アクティビティログに「Throttled by Notion, resuming」と表示されますが、これは正常です。
プロパティタイプの不一致。 Betaで最も多かったバグです。ユーザーがDestinationに「URL」ではなく「テキスト」型のNotion列を選択していました。フィールドマップのバリデーターは保存時にこれをフラグとして立て、処理を拒否するようになりました。「DestinationはURLプロパティである必要があります」と表示された場合は、まずNotionで列の型を変更してください。
複数ワークスペースに所属するユーザーがデータベースを共有している場合。 同じ人物が2つのNotionワークスペースのメンバーで、どちらもElisidoに接続したい場合、各ワークスペースに固有のOAuth権限が必要です。トークンはワークスペースごとであり、ユーザーごとではありません。接続フローはこれを正しく処理します。Connectを2回クリックすることを想定してください。
このリストにない問題については、お問い合わせページから統合チームに直接連絡できます。一般的なサポートよりも早く対応できます。
次のロードマップ
ロードマップに2つの続きがあります。フォームの送信でトラッキング付きリンクを作成する「Notionフォームから短縮リンクへ」レシピ。そして、行をデータベース間で移動したときにリンクが追従できるようにするWorkspaceプロパティの双方向同期。両方ともQ3を目標としており、changelogに記載します。
効果を測定するには、短縮リンク分析入門で本当に重要な指標と、Notionダッシュボードの行が正しい問いに答えるための設定方法を確認してください。
よくある質問
Notion統合が要求するスコープは何ですか?
ElidoはOAuthの同意ステップで選択したページまたはデータベースに対して、insert_content、update_content、read_contentを要求します。これは新しい行を追加し、短縮URLとクリック数を書き戻し、リンク先の変更を読み取るのに十分です。Elidoはワークスペース全体へのアクセスを要求することはなく、権限はNotionの同意UIでチェックした範囲に限定されます。
Notion内でリンク先URLを編集し、Elido側に反映させることはできますか?
はい。フィールドウォッチャーが5分ごとにDestinationプロパティの変更をポーリングします。URLが変わると、Elido はapi-coreのリンクターゲットを更新し、監査ログに新しい行を書き込み、下流のシステムに通知するためwebhookを発火します。短縮URL自体は変わらないため、既存のQRコードや印刷済み資材は引き続き機能します。
両側が同時に編集した場合の競合解決はどのように機能しますか?
NotionはDestination、Tags、Titleの信頼できる情報源です。ElsidoはShort URL、Clicks、QR、Last Syncedの信頼できる情報源です。同期ウィンドウ中にプロパティが競合した場合、そのフィールドを所有している側が勝ち、負けた側には何が起きたかを説明するコメントが行に追加されます。サイレントな上書きは発生しません。
無料のNotionプランでも統合は機能しますか?
はい。ただし2つの注意点があります。Notionの無料ワークスペースにはAPIレート制限として1秒あたり3リクエストがあるため、非常に大きなデータベース(5,000行以上)は100行ずつバッチ処理され、少しのバックオフを挟みながら同期されます。また、統合には最初の1回だけNotionワークスペースの管理者がOAuth権限を承認する必要があります。それ以降は、データベースの編集権限を持つ誰でも手動での再同期をトリガーできます。
統合を切断するとどうなりますか?
OAuthトークンが失効し、api-core内の暗号化されたコピーは60秒以内に削除されます。既存の行はデータベースに短縮URLとともに残りますが、ClicksとLast Syncedの更新は停止します。後で再接続すると、切断中に蓄積されたクリック数をバックフィルしながら、中断した箇所から再開します。
Elidoを試す
URLを貼り付けて短縮リンクを取得
登録不要。リンクは30日間有効。永久に保存するには登録してください。
Free、登録不要 · 1日あたり2件