Privacy Policy
This Privacy Policy explains how Better Giving, Inc. ("we", "us") handles personal data in the Better Giving Connector (the "Connector"), available at https://app.connect.better.giving. The Connector lets a nonprofit manage its Better Giving account from your AI assistant. You connect by signing in at better.giving and pressing Allow. Connections made earlier to another Better Giving site keep working until you disconnect them.
1. Who we are and how to contact us
Better Giving, Inc., 18 Cottekill Rd, Rosendale, NY 12472. Contact: support@better.giving.
Our role.
- For the operator's account and connection data (Section 2.1), we are the controller.
- For data about a nonprofit's donors, supporters and campaigns that passes through the Connector (Section 2.2), the nonprofit operator is the controller and we act only as its processor / service provider, processing it solely on the operator's instructions to carry out the requested action. Donors who want to exercise rights over their data should contact the nonprofit that holds it.
2. Data we process
2.1 Data we store
| Category | Examples | Source |
|---|---|---|
| Operator account identifier | A random ID and a placeholder email address at @connection.invalid. The stored account name is the constant "Better Giving connection". No name or email address is collected. | Created when you connect a site |
| Connected site details | Site origin (URL) and organization name | Set by the Connector (better.giving) and your Better Giving account, when you connect |
| Site connection key | Credential that lets the Connector act on your site. Encrypted at rest with AES-256-GCM, under a key held in our hosting provider's production environment, separate from the database. | Your Better Giving site |
| OAuth client records | Client ID, name, redirect URLs, optional contacts, logo, policy URLs, and metadata supplied by the app developer, and an encrypted client secret. Contacts may include the developer's email. | Your AI assistant |
| Rate-limit counters | A counter whose key is the client IP address and the endpoint. An IPv6 address is stored as its /64. When a client IP address is not available, that endpoint has one shared counter. | The request |
| Sessions and tokens | A session record for each connection. Access tokens and refresh tokens are stored as one-way (SHA-256) hashes, not the tokens themselves. To handle a retried refresh, the latest token response is also kept encrypted. It can be used only for 30 seconds, and the daily sweep deletes it within a day after that. | Generated when you connect |
2.2 Data relayed to your site
When you ask your AI assistant to do something, tool requests and results (for example campaigns, forms, donation records, and donor names, email addresses and donation amounts) travel between your AI assistant and your Better Giving account. The Connector relays this data to complete the request. Tool requests and results are held in memory only while a request runs. They are not written to our database or logs.
2.3 Logs
- Application logs: the tool name, the outcome, and how long the call took; the connect step and its outcome; how many connections a sweep removed and how long that took; and, for an error, where it happened and the error's name. They do not include tool arguments, tool results, tokens, or keys.
- Hosting request logs: Our hosting provider keeps request logs, including the request path, the approximate region from your IP address, and your browser or client type.
- Logs are kept for a limited period set by our hosting provider, then deleted. We don't send these logs to any other service.
2.4 What we do not collect
We do not collect payment card data, and the Connector does not move money. We do not knowingly collect government identifiers or health information. We do not read your chat history; we only receive what your AI assistant sends to a tool.
3. Why we use it (purposes)
- To authenticate you and keep you signed in.
- To relay your requests to your Better Giving site and return the results.
- To detect abuse and diagnose errors (logs).
We do not sell or share personal data for advertising, we do not use it for profiling or automated decisions with legal or similar effects, and we do not use it to train AI models.
We do not sell personal information, and we do not share it for cross-context behavioral advertising, as those terms are used in the California Consumer Privacy Act.
California residents may request to know, delete, or correct personal information and will not be discriminated against for exercising these rights. Contact support@better.giving.
4. Who receives it (recipients)
| Recipient | Role | Location |
|---|---|---|
| Vercel Inc. | Hosting and request logs | United States (iad1) |
| Turso / ChiselStrike | Database | AWS us-east-1, United States |
| Cloudflare | DNS only (no access to Connector data) | No Connector data |
| Your Better Giving account | Destination of your requests | better.giving |
| Your AI assistant | The assistant you chose to connect | Governed by its provider's privacy policy |
Your Better Giving site receives the connection key with each request. It also receives tool requests, and disconnect and revoke calls.
When we act as processor for a nonprofit (Section 2.2), Vercel Inc. is our sub-processor for hosting; that data is held in memory only while a request runs. Nonprofits can request our data processing agreement and current sub-processor list at support@better.giving.
We do not use analytics or telemetry. The Connector's code is open source.
We may also disclose data where required by law or to protect rights and safety, and to a successor in a merger or acquisition, subject to this policy.
5. How long we keep it (retention)
- Connection key: the Connector stores its own encrypted copy of each connection key. It deletes that copy when you disconnect, when your AI assistant revokes the refresh token, when the refresh token expires, or when the session ends. It asks your site to revoke the key, and still deletes its copy if that request fails.
- Better Giving revokes a connection key after 90 days without use. Revoked keys can no longer be used and are deleted 30 days after they're revoked.
- Access and refresh tokens are stored as one-way (SHA-256) hashes, not the tokens themselves. To handle a retried refresh, the latest token response is also kept encrypted. It can be used only for 30 seconds, and the daily sweep deletes it within a day after that. A refresh token expires after 90 days without use. An assistant that keeps refreshing receives a new token and the 90 days start again. An access token expires after 1 hour.
- A server-side session record for each connection, with no IP address or browser details. The session token is stored as the token itself. A session lasts up to 1 year. When the year ends, the connection ends even if a refresh token has time left.
- OAuth client registrations store a client ID, a name, redirect URLs, optional contacts, a logo, policy URLs, and metadata supplied by the app developer, and an encrypted client secret. Contacts may include the developer's email. They are kept while the app remains registered; contact us to have one removed.
- A consent record of which app was authorized, and which scopes, is deleted with the connection.
- Authorization codes are single-use, stored as one-way (SHA-256) hashes, not the codes themselves, and expire within minutes. The row holds the authorization request details, not the code, until the code is used or it expires.
- A rate-limit counter whose key is the client IP address and the endpoint. An IPv6 address is stored as its /64. When a client IP address is not available, that endpoint has one shared counter. A counter is deleted when its last request is more than 1 day old.
- A sign-in that is not finished is deleted by the daily sweep once it is more than 1 hour old.
- Logs: logs are kept for a limited period set by our hosting provider, then deleted. We don't send these logs to any other service.
6. Your controls and rights
- Disconnect the Connector in your AI assistant, or revoke its refresh token. This deletes the encrypted connection key and the OAuth tokens stored here, and asks that account to revoke the key.
- Read-only access: an AI assistant can ask for read-only access. A read-only connection can view your Better Giving account and site but not change anything.
- Request deletion or access by emailing support@better.giving. We respond within 30 days (or as required by law).
- If we receive a request about donor data, we will forward it to the relevant nonprofit.
- Depending on where you live, you may have rights to access, correct, delete, or port your data, object to or restrict processing, and complain to your local data protection authority.
7. Security
Connection keys are encrypted at rest with AES-256-GCM, under a key held in our hosting provider's production environment, separate from the database. Traffic uses HTTPS. Logs do not include keys or request content. No system is perfectly secure. Report vulnerabilities to security@better.giving.
8. International transfers
We process data in the United States. Where EU or UK law requires it, we rely on the European Commission's Standard Contractual Clauses and the UK Addendum.
9. GDPR
If you are in the European Economic Area or the United Kingdom, you can ask for access to, correction of, or deletion of the operator account and connection data we store, and you can object to or ask us to restrict that processing, or ask for a copy of it. Email support@better.giving. You can also complain to your local data protection authority. We process that account and connection data to provide the Connector (GDPR Article 6(1)(b)) and we process security logs to protect the service (Article 6(1)(f)). Donor data that passes through the Connector is controlled by the nonprofit.
10. Children
The Connector is for nonprofit operators who are at least 18. It is not directed to children, and we do not knowingly collect their data.
11. Changes
We will post updates on this page and change the "Last updated" date. For material changes, we will post a notice on this page and, where we have a contact address for your organization through your Better Giving account, notify that address, at least 30 days before the change takes effect. Earlier versions are listed in the changelog below.
12. Contact
Better Giving, Inc. · 18 Cottekill Rd, Rosendale, NY 12472 · support@better.giving
13. Changelog
- Version 1.3, effective 2026-10-28: deletes revoked connection keys 30 days after they're revoked.
- Version 1.2, effective 2026-10-28: new connections always go through better.giving; removes the option to connect your own site's address.
- Version 1.1, effective 2026-10-27: adds read-only access.
- Version 1.0, effective 2026-10-25: first published version.