Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions apps/web/content/docs/calendar/1.gcal.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,22 @@ section: "Calendar"
description: "Connect your Google Calendar to see upcoming meetings in Char."
---

Google Calendar integration is coming soon. Join our [Discord](/discord) to stay updated on the release.
Google Calendar sync is available on Char Pro. You can connect one or more Google accounts and choose which calendars to sync into Char.

In the meantime, you can use [Apple Calendar](/docs/calendar/apple) which syncs with Google Calendar if you add your Google account to macOS Calendar.
## How do I connect Google Calendar?

- In the web app, open **Account** > **Integrations**.
- In the desktop app, use the calendar connection flow and choose **Connect Google Calendar**.
- Complete the Google OAuth flow, then choose the calendars you want Char to sync.

## How often does Char sync with Google Calendar?

Char syncs Google Calendar automatically **every 60 seconds**. You can also refresh calendars manually from the calendar UI after connecting.

## What date range of events does Char sync?

Char syncs events from **7 days ago** to **30 days in the future**. This keeps recent meetings available for context while pulling in upcoming meetings for planning and reminders.

## Can I connect multiple Google accounts?

Yes. Char supports connecting multiple Google Calendar accounts at the same time. Each connected account can sync its own calendars into your timeline.
1 change: 1 addition & 0 deletions apps/web/content/legal/dpa.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ We implement the following technical and organizational measures:
| [PostHog](https://posthog.com/) | For product analytics, feature usage telemetry, and cloud request metadata analytics | USA | SOC 2 Type II, GDPR/CCPA-aligned DPA, strict use‑only data purpose clauses, hardware MFA, public audit transparency |
| [Outlit](https://outlit.ai/) | For website analytics and pageview tracking | USA | Privacy-focused analytics, GDPR-aligned privacy practices, data deletion on request |
| [AWS](https://aws.amazon.com) | For integrating with 3rd party apps like GCal or Outlook | USA | Encryption in transit & at rest, strict access controls, incident response plans, privacy‑focused vendor management, confidentiality contracts, staff training |
| [Nango](https://www.nango.dev/) | For OAuth connection management, credential storage, and sync infrastructure for connected services such as Google Calendar | USA | SOC 2 Type II, GDPR compliant, HIPAA compliant, AES-256-GCM encryption at rest for credentials, TLS 1.2+ in transit, 31-day default retention after deletion |
| [Keygen](https://keygen.sh) | For issuing licenses for Char Pro | USA | Strong MFA, cryptographically signed APIs/licenses, automated vulnerability scanning, penetration testing, GDPR DSR support |
| [Stripe](https://stripe.com) | For payment processing | USA | Vendor security assessments, audit rights, DPA and Data Privacy Framework compliance, data localization options |
| [Linear](https://linear.app) | For collaborating with teammates | USA | SOC 2 Type II, HIPAA (BAA available), GDPR‑compliant DPA, sub‑processor assessments, admin controls, audit logging, secure data deletion/portability |
Expand Down
41 changes: 36 additions & 5 deletions apps/web/content/legal/privacy.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
date: "2026-03-17"
date: "2026-03-24"
title: "Privacy Policy"
summary: "How we collect, use, and protect your personal information"
---
Expand Down Expand Up @@ -35,14 +35,27 @@ When you use our Service, we automatically collect:

Analytics and telemetry events are designed to avoid including raw meeting audio, transcript text, note content, and summary text.

### 3.3 Google Calendar and Other Connected Calendar Accounts

If you connect Google Calendar or another supported calendar provider, we collect and process the data needed to sync calendars and events into Char. For Google Calendar, this may include:

- **Calendar Information:** Calendar IDs, calendar names, colors, access or ownership metadata, primary or secondary calendar status, and source or account identifiers
- **Event Information:** Event IDs, iCal UIDs, titles, descriptions, locations, event URLs, meeting links, start and end times, time zones, recurrence metadata, all-day status, event status metadata, organizer details, and attendee details such as names, email addresses, roles, and RSVP status
- **Connection Information:** Provider connection IDs, connection status, reconnect or error state, and the Google account identity associated with the connection, such as email address or display name

We use this data only to provide and improve the user-facing calendar features you enable in Char, such as syncing selected calendars, showing upcoming meetings, linking notes to calendar events, displaying participants and meeting context, powering reminders, and helping you organize sessions around meetings.

We do not use Google Calendar data for targeted advertising, marketing personalization, sale to data brokers or information resellers, determining creditworthiness, or training generalized artificial intelligence or machine learning models. The use of information received from Google Workspace APIs will adhere to the [Google Workspace API User Data and Developer Policy](https://developers.google.com/workspace/workspace-api-user-data-developer-policy), including the Limited Use requirements.

## 4. How We Use Your Information

We use your information to:

- Provide, maintain, and improve the Service
- Process your transactions and manage your account
- Send you technical notices, updates, and support messages
- **Send you marketing communications**, including newsletters, product announcements, promotional content, and other updates about Char (you may opt out at any time)
- **Send you marketing communications**, including newsletters, product announcements, promotional content, and other updates about Char based on your contact details and marketing preferences (you may opt out at any time)
- If you connect Google Calendar, provide and improve the calendar sync and meeting context features you requested. We do not use Google Calendar data for advertising, marketing personalization, or generalized AI model training.
- Respond to your comments, questions, and requests
- Protect against, identify, and prevent fraud and other illegal activities
- Analyze usage patterns to improve user experience
Expand All @@ -52,19 +65,22 @@ We use your information to:

We implement appropriate technical and organizational security measures to protect your information against unauthorized access, alteration, disclosure, or destruction. Your data is encrypted in transit and at rest.

For connected calendars, synced calendar and event data is primarily stored locally on your device as part of your local Char data. We may store limited connection metadata on our backend, such as integration ID, connection ID, connection status, error state, and timestamps needed to operate the integration securely. We also use an integration provider to manage OAuth connections and credentials. We protect this data in transit using HTTPS/TLS and at rest using encryption and access controls.

However, no method of transmission over the Internet or electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your information, we cannot guarantee its absolute security.

## 6. Data Sharing and Disclosure

### 6.1 We Do Not Sell Your Data

We do not sell, trade, or rent your personal information to third parties.
We do not sell, trade, or rent your personal information to third parties, including Google user data.

### 6.2 Service Providers

We may share your information with third-party service providers who perform services on our behalf, such as:

- **Cloud hosting and infrastructure providers** (e.g., Fly.io, Netlify, Cloudflare, Supabase) for hosting our application and storing your data securely
- **Integration providers** (e.g., Nango) for OAuth connection management, credential handling, and calendar sync infrastructure when you connect Google Calendar or other supported accounts
- **Payment processors** (e.g., Stripe) for processing payments securely
- **Analytics services** (e.g., PostHog, Outlit) for understanding how users interact with our Service
- **Speech-to-text providers** (e.g., Deepgram, AssemblyAI, Soniox) for cloud-based transcription when you enable this feature
Expand All @@ -75,7 +91,18 @@ We may share your information with third-party service providers who perform ser

For a complete list of our sub-processors and their data protection safeguards, please see our [Data Processing Agreement](/legal/dpa).

### 6.3 Legal Requirements
### 6.3 Google User Data Sharing

When you connect Google Calendar, we may share Google user data only:

- With service providers directly involved in authenticating the connection, syncing calendars and events, and delivering the calendar features you enable
- For security purposes, such as investigating abuse, preventing fraud, or fixing integration failures
- To comply with applicable law, regulation, legal process, or enforceable governmental request
- As part of a merger, acquisition, or asset sale, subject to applicable legal requirements and, where required, user consent

We do not sell Google user data or transfer it to third parties for advertising, marketing, or data broker purposes.

### 6.4 Legal Requirements

We may disclose your information if required by law or in response to valid requests by public authorities (e.g., court orders or government agencies).

Expand All @@ -91,7 +118,7 @@ You can update or delete your information through your account settings. You may

### 7.3 Data Retention

We retain your information for as long as your account is active or as needed to provide you services. If you delete your account, we will delete your data within 30 days, except where required to retain it for legal purposes.
We retain your information for as long as your account is active or as needed to provide the Service. If you connect Google Calendar, synced calendar and event data is retained locally on your device until you delete it, disconnect the account, or remove local Char data. On our systems, we retain limited connection metadata while the integration is active and for up to 30 days after disconnection or account deletion, except where a longer period is required by law. If you delete your account, we will delete your cloud-stored data within 30 days, except where required to retain it for legal purposes.

### 7.4 Analytics and Telemetry Controls

Expand All @@ -100,6 +127,10 @@ We retain your information for as long as your account is active or as needed to
- **Global Privacy Control:** We honor Global Privacy Control (GPC) for non-essential website tracking.
- **Cloud feature metadata:** Disabling desktop usage analytics does not disable limited server-side operational and billing telemetry required to provide cloud requests (for example, speech-to-text and AI request metadata, and subscription trial status events).

### 7.5 Connected Account Controls

You can disconnect Google Calendar in your account integrations settings. Disconnecting stops future syncs. Calendar and event data already synced locally to your device remains in your local Char data until you remove it or delete local app data.

## 8. International Data Transfers

Your information may be transferred to and maintained on computers located outside of your jurisdiction where data protection laws may differ. By using the Service, you consent to such transfers.
Expand Down
60 changes: 51 additions & 9 deletions apps/web/src/routes/_view/app/-integrations-connect-flow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export function ConnectFlow() {
}, [status]);

const display = getIntegrationDisplay(search.integration_id);
const showGoogleDisclosure = search.integration_id === "google-calendar";

const handleConnect = async () => {
if (inFlightRef.current) return;
Expand Down Expand Up @@ -104,13 +105,6 @@ export function ConnectFlow() {
connect.setSessionToken(sessionToken);
};

useEffect(() => {
if (search.flow === "desktop") {
void handleConnect();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);

const isLoading = status === "loading";
const isConnecting = status === "connecting";

Expand All @@ -121,10 +115,16 @@ export function ConnectFlow() {
Connect {display.name}
</h1>
<p className="text-neutral-600">
{isConnecting ? display.connectingHint : display.description}
{isConnecting
? display.connectingHint
: showGoogleDisclosure
? "Review the disclosure below, then continue to Google to connect your account."
: display.description}
</p>
</div>

{showGoogleDisclosure && <GoogleCalendarDisclosure />}

{(status === "idle" || isLoading) && (
<IntegrationButton onClick={handleConnect} disabled={isLoading}>
{isLoading && (
Expand All @@ -149,7 +149,11 @@ export function ConnectFlow() {
/>
</svg>
)}
{isLoading ? "Connecting…" : `Connect ${display.name}`}
{isLoading
? "Connecting…"
: showGoogleDisclosure
? "Continue to Google"
: `Connect ${display.name}`}
</IntegrationButton>
)}

Expand All @@ -166,3 +170,41 @@ export function ConnectFlow() {
</IntegrationPageLayout>
);
}

function GoogleCalendarDisclosure() {
return (
<div className="rounded-3xl border border-neutral-200 bg-white/80 p-5 text-left shadow-xs">
<h2 className="text-sm font-medium text-neutral-900">
Before you continue
</h2>
<p className="mt-2 text-sm leading-6 text-neutral-600">
By connecting Google Calendar, Char will access the calendars and event
details you choose to sync, including calendar names, event titles,
descriptions, locations, meeting links, start and end times, organizers,
and attendees.
</p>
<ul className="mt-3 list-disc space-y-2 pl-5 text-sm leading-6 text-neutral-600">
<li>
We use this data to sync meetings into Char, power reminders, show
meeting context, and link notes to calendar events.
</li>
<li>
Synced calendar data is primarily stored locally on your device. We
also store limited connection metadata to keep the integration
working.
</li>
<li>
We do not use Google Calendar data for advertising, marketing
personalization, or generalized AI model training.
</li>
</ul>
<p className="mt-3 text-xs leading-5 text-neutral-500">
Continue only if you want to authorize this connection. See our{" "}
<a href="/legal/privacy" className="underline hover:text-neutral-700">
Privacy Policy
</a>{" "}
for details.
</p>
</div>
);
}
7 changes: 6 additions & 1 deletion apps/web/src/routes/_view/pricing.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,12 @@ const pricingPlans: PricingPlan[] = [
partiallyImplemented: true,
},
{ label: "Advanced Templates", included: true },
{ label: "Integrations", included: true, comingSoon: true },
{
label: "Integrations",
included: true,
tooltip:
"Google Calendar is available now. Additional integrations are in progress.",
},
{ label: "Cloud Services (STT & LLM)", included: true },
{
label: "Cloud Sync",
Expand Down
8 changes: 4 additions & 4 deletions apps/web/src/routes/_view/product/integrations.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const Route = createFileRoute("/_view/product/integrations")({
{
name: "description",
content:
"Connect Char with your favorite tools and automate your meeting workflow. Integrations coming soon.",
"Connect Char with your favorite tools and automate your meeting workflow. Google Calendar is available now, with more integrations coming soon.",
},
{ name: "robots", content: "noindex, nofollow" },
],
Expand Down Expand Up @@ -101,8 +101,8 @@ function Component() {
Integrations & Workflows
</h1>
<p className="mx-auto max-w-3xl text-lg leading-relaxed text-neutral-600 sm:text-xl">
Connect Char with your favorite tools. Automate repetitive tasks
with powerful workflows. No coding required.
Google Calendar is available today on Char Pro. More
integrations and no-code workflows are in progress.
</p>
<div className="mt-8">
<button
Expand All @@ -112,7 +112,7 @@ function Component() {
"rounded-full bg-linear-to-t from-neutral-200 to-neutral-100 text-neutral-900 shadow-xs",
])}
>
Coming Soon
More coming soon
</button>
</div>
</div>
Expand Down