Data Privacy & Security

Document version 1.0 — Last updated June 16, 2026

1. Overview

SmartAssistant is a Zoho CRM sidebar extension that provides unified visibility across a contact’s CRM profile, Zoho Books financial records, Zoho Desk support tickets, and an optional AI-generated strategic summary. This document describes how user data is handled throughout the extension’s operation.

2. User Authentication

SmartAssistant uses OAuth 2.0 with PKCE (Proof Key for Code Exchange) — the industry standard for secure, delegated authorization.

2.1 How It Works

  1. An authorized Zoho user navigates to the SmartAssistant login page and clicks Connect Zoho.
  2. The user is redirected to Zoho’s official consent screen at accounts.zoho.com, where they see exactly which permissions (scopes) the extension is requesting.
  3. Upon consent, Zoho issues a short-lived authorization code, which the extension exchanges for an access token and a refresh token.
  4. The access token is used to make API requests on behalf of the user; the refresh token allows the extension to obtain new access tokens without requiring re-authentication.

2.2 Scope of Access

ScopePurpose
ZohoCRM.modules.ALLRead contact and account data from the CRM
ZohoBooks.fullaccess.ALLRead financial data (invoices, payments, overdue amounts) from Zoho Books
Desk.tickets.ALLRead support ticket history from Zoho Desk

Only read operations are performed. The extension never creates, updates, or deletes any data in the user’s Zoho environment with one exception: a single optional utility script (ensure-contact-activities.js) that adds a dummy completed task to contacts with zero activity — this fixes a Zoho CRM UI rendering bug and is run manually by the administrator, never by the automated extension.

2.3 Token Storage

OAuth tokens are stored on the SmartAssistant server in an encrypted token store:

Tokens are never transmitted to third parties, never logged, and never exposed to the browser.

3. Data Flow Architecture

The data flow is strictly request-response with no persistent storage of CRM data.

┌──────────────┐     HTTPS      ┌──────────────────┐     HTTPS      ┌─────────────┐
│  Zoho CRM    │◄──────────────►│  SmartAssistant  │◄──────────────►│  Zoho APIs  │
│  (Widget)    │                │  (Node.js/Express)│               │  (CRM,      │
│              │                │                  │               │   Books,    │
│              │                │                  │               │   Desk)     │
└──────────────┘                └──────────────────┘               └─────────────┘
                                        │
                                        │     HTTPS
                                        ▼
                               ┌──────────────────┐
                               │  DeepSeek AI     │
                               │  (optional)      │
                               └──────────────────┘

3.1 Step-by-Step Data Flow

  1. User opens a contact in Zoho CRM → SmartAssistant widget loads in the sidebar.
  2. Widget sends a request to the SmartAssistant server at https://smartassistant.site/api/summary/summarize with the contact ID, org ID, and user ID.
  3. Server retrieves tokens from the encrypted token store (decrypted in memory only) and uses them to authenticate against Zoho APIs.
  4. Server fetches data simultaneously from Zoho CRM API, Zoho Books API (invoices, payments), and Zoho Desk API (tickets).
  5. Data is assembled into a unified context object and returned to the widget.
  6. Optional AI summary: If DeepSeek AI is configured, the unified context is sent to DeepSeek’s API to generate a strategic summary. The summary is cached in memory (see §3.3).
  7. Widget renders the data in the user’s browser — no data persists beyond the session.

3.2 What Is NOT Stored

3.3 In-Memory Cache

SmartAssistant uses an in-memory TTL cache (MemoryCache) to avoid redundant API calls and AI summary regeneration:

4. No Data Storage at Server

SmartAssistant operates on a zero-retention principle for business data:

Data TypeStored?Details
CRM contact details ✗ Not stored Fetched live from Zoho, returned to widget, discarded
Financial records ✗ Not stored Fetched live from Zoho Books, returned to widget, discarded
Support tickets ✗ Not stored Fetched live from Zoho Desk, returned to widget, discarded
AI-generated summaries Cached (15 min) Cached in memory for 15 minutes, then evicted; never written to disk
OAuth tokens Encrypted Stored encrypted at rest (AES-256-GCM) — required for ongoing API access
Server access logs Rotating logs IP addresses, timestamps, HTTP paths (no payloads or tokens)

4.1 Logging Policy

The server maintains rotating log files for operational and security monitoring:

5. Encryption

5.1 Data in Transit (TLS)

All communication between components uses TLS 1.2 or 1.3:

ConnectionProtocolCertificate
Browser ↔ SmartAssistant serverHTTPS (TLS 1.2+)Let’s Encrypt
Server ↔ Zoho APIsHTTPS (TLS 1.2+)Zoho’s certificates
Server ↔ DeepSeek AIHTTPS (TLS 1.2+)DeepSeek’s certificates

Production certificate is automatically renewed via Let’s Encrypt Certbot.

5.2 Data at Rest (Encrypted Token Store)

OAuth tokens stored on disk are encrypted using:

5.3 No Other Data at Rest

As described in §4, no CRM, financial, or support ticket data is stored on the server. The only persistent data is the encrypted token store.

6. Third-Party Services

6.1 DeepSeek AI (Optional)

SmartAssistant offers an optional AI-powered strategic summary feature:

6.2 Zoho

SmartAssistant communicates with Zoho CRM API, Zoho Books API, Zoho Desk API (all at www.zohoapis.com), and Zoho Accounts (accounts.zoho.com) for OAuth. All data remains within Zoho’s US data center (unless the organization is configured for another region).

6.3 No Other Third Parties

SmartAssistant does not use analytics SDKs, tracking pixels, advertising networks, or any other third-party services beyond those listed above.

7. Data Processing & GDPR Compliance

7.1 Lawful Basis

SmartAssistant processes Zoho CRM data on behalf of the organization’s administrators and users under the legitimate interest of providing business intelligence within the existing CRM workflow. The extension:

7.2 User Rights

Since SmartAssistant does not store any personal data (beyond necessary OAuth tokens), users can exercise their rights by:

RightHow It’s Handled
AccessAll data is displayed in the widget at the moment of access; no stored data to request
RectificationData is read from Zoho CRM directly — edit in Zoho CRM to see changes reflected
ErasureDisconnect SmartAssistant in the settings page; this deletes the encrypted OAuth tokens
Data PortabilityData lives in Zoho CRM — use Zoho’s export features
Restrict processingSimply don’t use the extension, or disconnect via the settings page

7.3 To Remove All Data

Navigate to the SmartAssistant settings page and click Disconnect Zoho. This immediately:

  1. Revokes the OAuth tokens with Zoho (renders them invalid)
  2. Deletes the encrypted token entry from the server’s token store
  3. Waits for the in-memory cache to expire naturally (15 min) or restarts the server

There is no residual user data on the server after disconnection.

8. Security Measures

AreaMeasure
AuthenticationOAuth 2.0 with PKCE — no password collection
TransportTLS 1.2+ (HTTPS) for all communications
Token storageAES-256-GCM encrypted, per-entry IV, authentication tags
Token accessOnly the server process has access to the decryption key
Input validationAll API inputs validated; no raw user input reaches Zoho APIs
CORSWhitelisted domain: https://www.smartassistant.site
HTTP securityStandard security headers applied
Docker isolationServer runs in a Docker container with minimal privileges
Crash handlingGlobal exception handlers prevent information leaks in error messages
LoggingNo sensitive data (tokens, payloads, personal data) written to logs

9. Data Retention

DataRetentionRationale
OAuth refresh tokens Until user disconnects or revokes Required for ongoing API access without re-authentication
AI summary cache (in-memory) 15 minutes Performance optimization; no disk persistence
Access logs ~5 MB rotating files (archived) Operational diagnostics and security monitoring

10. Contact

For privacy-related inquiries or concerns: