プライバシーポリシー
最終更新: 2026-09-25
日本語のあとに英語版を併記しています(English version)。
1. この文書について
Firesboard(以下「本サービス」)は、個人開発者向けに、プロダクト分析のダッシュボードを 対話で組み立てる SaaS です。本サービスは、利用者が接続したGoogle アナリティクス 4(GA4)のデータを読み取り、 ダッシュボードのカードとして表示します。
この文書は、本サービスがGoogle ユーザーデータをどのように取得・利用・保存・共有するかを説明するものです。
2. 取得する Google ユーザーデータ
本サービスは、利用者が OAuth の同意画面で許可した範囲で、次の情報を Google の API から 取得します。
| 取得するもの | 使う API | 何のために |
|---|---|---|
| Google アナリティクスのアカウント名・プロパティ名・プロパティ ID | accountSummaries.list | 接続するプロパティを利用者に選んでもらうため |
| 日付・ディメンションごとの集計値(イベント数・ユーザー数・収益額など) | GA4 Data API の runReport | ダッシュボードのカードを描くため |
| プロパティに登録済みのカスタムディメンションの一覧(名前・表示名・種類) | customDimensions.list | 利用可能な分析項目を確認するため |
2.1 読み取りのみのアクセス
本サービスは Google アナリティクスの設定や計測データを変更・削除しません。 カスタムディメンションの登録や、利用者のプロパティへのアカウント追加も行いません。
データの連携で要求するスコープは次の 1 本です。
https://www.googleapis.com/auth/analytics.readonly— プロパティの一覧と集計値の読み取り
Google アカウントでのログイン
本サービスへのログインは Google アカウントで行います。ログインのときだけ、 次の 2 つを要求します。
openid—— 利用者を一意に識別する ID(sub)を受け取るためhttps://www.googleapis.com/auth/userinfo.email—— 画面に表示するためのメールアドレス
ログインは上記の分析用の同意とは別のフローです。ログインの同意画面に Google アナリティクスの権限は 1 つも含まれません(逆に、分析用の同意画面にログイン用の 権限は含まれません)。受け取るのは識別子とメールアドレスだけで、 氏名・写真などのプロフィール情報(profile)は要求しません。
3. 取得しないもの
- イベント 1 件ごとの生データ(誰がいつ何をしたか、という単位の記録)
- 利用者のアプリのエンドユーザーの氏名・メールアドレス・電話番号など、個人を識別する情報 —— ここで言う「エンドユーザー」は、利用者が開発したアプリを使っている人の ことです。本サービスの利用者自身のメールアドレスは、ログインのために取得します(下記)。
- Google アカウントの氏名・写真などのプロフィール情報 —— 本サービスは
profileのスコープを要求していません。ただしログインのためにopenidとemailは要求します(上記)。したがって、利用者の識別子とメールアドレスは本サービスに渡ります。 氏名と写真は渡りません。
4. 保存
- アカウント情報(識別子とメールアドレス)は、ログインが成立したときに 本サービスのデータベースに保存します。メールアドレスは画面に表示するためだけに使い、利用者の同定には常に識別子を使います。
- OAuth のトークン(アクセストークン・リフレッシュトークン)は、AES-GCM の封筒暗号化を施したうえで、利用者ごとに独立した Durable Object の SQLite に保存します。 暗号化に使うマスターキーは、アプリケーションの秘密として保存先とは別に管理しています。平文で保存することはありません。
- 保存するデータは、プロパティ ID と、「日付・指標・値」の集計値のみです。
- 上記に加えて、接続の状態を画面に表示するために、接続したプロパティの表示名と、登録済みカスタムディメンションの名前・種類を保存します。
4.1 Google ユーザーデータを守るしくみ
本サービスは、Google ユーザーデータ(OAuth のトークン、Google アナリティクスから取得した 集計値、ログインで取得したメールアドレス)の機密性を守るため、暗号化とアクセスの制御を 次のとおり行っています。
- 通信の暗号化 —— 本サービスの画面は HTTPS で提供します。ログインの cookie には Secure・HttpOnly 属性を付け、暗号化されていない通信では送られず、ページのスクリプト からも読めないようにしています。Google の API・生成 AI など外部サービスとの通信もすべて HTTPS(TLS)で行います。
- 保存時の暗号化 —— OAuth のトークンは、上記のとおり本サービス自身が AES-256-GCM で暗号化して保存します。レコードごとに別の鍵を使い、その鍵をマスターキーから 利用者ごとに派生させた鍵で包みます。別の利用者の領域へ写しても復号できません。これに加えて、 Google ユーザーデータを含む本サービスの保存データはすべて、保存先の Cloudflare (Durable Objects・D1・R2)によって AES-256 で暗号化されています。
- 利用者ごとの分離 —— トークンは利用者ごとに独立した保存領域に置き、 復号はその中でだけ行います。復号したトークンをその外へ渡しません。集計値はアプリごとに 独立した保存領域に置きます。
- アクセスの制御 —— 画面と API へのアクセスのたびに、署名付きのセッション cookie を検証し、サーバに保存したセッションと照合し、要求されたアプリをその利用者が 所有していることを確かめます。確かめられない要求は拒否します。セッションは 30 日で失効し、 ログアウトするとただちに無効になります。
- 最小限の取得 —— Google アナリティクスへのアクセスは読み取り専用の スコープ 1 本だけで、イベント単位の生データやエンドユーザーの個人情報は取得しません (2・3 節)。
5. 第三者への提供
取得した Google ユーザーデータを販売することはありません。
ただし、カードの生成に生成 AI を利用しています。事実は次のとおりです。
- 生成 AI に送るもの —— テーブル名・列名・指標名・列の説明などのスキーマ情報、利用者が入力した要望文、 分析項目を選ぶためのデータの概要(取得できた期間、行数・日数、内訳の種類と値。 国名・OS名などを含みます)
- 生成 AI に送らないもの ——計測値そのもの(日付ごとの数値・行データ)
- 送信先 —— OpenAI / Cloudflare AI Gateway / Langfuse (生成 AI とのやり取りを追跡するための cloud.langfuse.com。送るものは上記と同じです)
- 生成履歴の保存 —— 上記の生成 AI とのやり取り(送ったプロンプトと 返ってきた応答)は、追跡と改善のために Cloudflare R2 にも保存します。保存する内容は 送信先に送るものと同じで、計測値そのものは含みません。
6. Google API のデータの取り扱い
本サービスによる Google API から取得した情報の利用と他者への移転は、Google API Services User Data Policy(Limited Use の要件を含む)に従います。
7. 保持と削除
- 接続画面(
/connect)の連携を解除するボタンを押すと、 暗号化して保存していたOAuth のトークンを削除します。以後、本サービスが 利用者の GA4 を読むことはできなくなります。 - 利用者は Google 側からも、いつでも本サービスへの許可を取り消せます: https://myaccount.google.com/permissions
8. 事業者とお問い合わせ
本サービスの運営者は リアルバインド です。
本ポリシーおよび個人情報の取り扱いに関するお問い合わせは、次の窓口までご連絡ください。
お問い合わせは kei_fkd@realbind-jp.com までご連絡ください。
9. 改定
本ポリシーを改定したときは、この画面の本文を日本語・英語ともに更新し、冒頭の「最終更新」の 日付を改めます。
English
1. About this document
Firesboard ("the Service") is a SaaS product for solo developers that builds product-analytics dashboards through a conversation. The Service reads data from the Google Analytics 4 (GA4) property that the user connects, and renders it as dashboard cards. This document explains how the Service accesses, uses, stores and shares Google user data.
2. Google user data we access
With the permission the user grants on the OAuth consent screen, the Service retrieves the following from Google APIs.
- Google Analytics account names, property names and property IDs (
accountSummaries.list) — so the user can choose which property to connect. - Aggregated values by date and dimension (event counts, user counts, revenue, etc.) via the GA4 Data API
runReport— to render the dashboard cards. - The custom dimensions already registered on the property (name, display name, scope) via
customDimensions.list— to identify available reporting fields.
2.1 Read-only access
The Service does not modify or delete Google Analytics settings or measured data. We do not register custom dimensions or add accounts to the user's property.
For analytics access, we request one scope:
https://www.googleapis.com/auth/analytics.readonly— listing properties and reading aggregated values
Signing in with Google
Signing in to the Service is done with a Google account. Only when signing in, we request openid (to receive the identifier sub that uniquely identifies the user) and https://www.googleapis.com/auth/userinfo.email (the email address, shown on screen). Signing in is a separate flow from the analytics consent above: the sign-in consent screen contains no Google Analytics permission at all, and vice versa. We receive only the identifier and the email address. We do not request profile information such as the user's name or picture (the profile scope).
3. What we do NOT access
- Event-level raw data (records of who did what and when)
- Personally identifying information about the end users of the customer's app, such as names, email addresses or phone numbers. "End users" here means the people who use the app that the customer has built. The customer's own email address is collected for signing in (see below).
- Google account profile information such as the user's name or picture. The Service does not request the
profilescope. It does requestopenidandemailfor signing in (see above), so the user's identifier and email address are disclosed to the Service; the name and picture are not.
4. Storage
- Account information (the identifier and the email address) is stored when a sign-in succeeds. The email address is used only for display; the user is always identified by the identifier.
- OAuth tokens (access and refresh tokens) are protected with AES-GCM envelope encryption and stored in a per-user, isolated Durable Object SQLite database. The master key is held as an application secret, separately from the stored data. Tokens are never stored in plaintext.
- The only measurement data we store is the property ID and aggregated "date / metric / value" rows.
- In addition, so that the connection state can be shown on screen, we store the display name of the connected property and the names and scopes of existing custom dimensions.
4.1 How we protect Google user data
We use encryption and access controls to protect the confidentiality of Google user data (OAuth tokens, aggregated values retrieved from Google Analytics, and the email address obtained at sign-in), as follows.
- Encryption in transit — The Service is served over HTTPS. Sign-in cookies carry the Secure and HttpOnly attributes, so they are never sent over an unencrypted connection and cannot be read by page scripts. All calls to external services, including Google APIs and the generative-AI provider, use HTTPS (TLS).
- Encryption at rest — OAuth tokens are encrypted by the Service itself with AES-256-GCM, as described above: each record has its own key, which is wrapped with a key derived per user from a master key, so a token copied into another user's storage cannot be decrypted. In addition, all data the Service stores, including Google user data, is encrypted at rest with AES-256 by our storage provider, Cloudflare (Durable Objects, D1 and R2).
- Per-user isolation — Tokens are kept in storage isolated per user and are decrypted only inside it; decrypted tokens are never passed outside it. Aggregated values are kept in storage isolated per app.
- Access control — On every request to a page or API, we verify the signed session cookie, check it against the session stored on our server, and confirm that the user owns the requested app. Requests that fail these checks are refused. Sessions expire after 30 days and end immediately on sign-out.
- Data minimization — Google Analytics access uses a single read-only scope; we do not access event-level raw data or personal information about end users (sections 2 and 3).
5. Sharing with third parties
We do not sell Google user data. We do, however, use generative AI to author dashboard cards. Precisely:
- What we send to the AI: schema information (table names, column names, metric names and column descriptions), the request text typed by the user, and a dataset summary used to choose analyses (available date ranges, row and day counts, and dimension categories and values, such as countries and operating systems).
- What we do NOT send: the measured values themselves (daily numbers, row-level data).
- Where it goes: OpenAI / Cloudflare AI Gateway / Langfuse (cloud.langfuse.com, used to trace how generation behaves; it receives the same data as above).
- Storing generation history: The above exchange with the generative AI (the prompt we send and the response we get back) is also stored in Cloudflare R2, for tracing and improvement. It is the same data as what we send to the AI provider; it does not include the measured values themselves.
6. Compliance with Google API Services User Data Policy
The Service's use and transfer of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.
7. Retention and deletion
- Pressing the disconnect button on the connection screen (
/connect) deletes the encrypted OAuth tokens. After that the Service can no longer read the user's GA4 property. - Users can also revoke the Service's access at any time from Google: https://myaccount.google.com/permissions
8. Who operates the Service, and how to contact us
The Service is operated by REALBIND.inc.
For questions about this policy or about how we handle personal data, please contact us:
Please contact us at kei_fkd@realbind-jp.com.
9. Changes
When this policy changes, we update the Japanese and English text on this screen and revise the "last updated" date at the top.