Privacy-First Architecture

Know what stays here. Know what is shared.

PDF generation and batch storage happen in your browser. Public Sheets import and Gmail delivery share data through the API. This page explains those boundaries.

Built because privacy should be part of the workflow — not an afterthought.

Local Processing

Certificate generation happens directly inside your browser using your own device.

Local CSV Generation

CSV-based generation does not upload your roster. Gmail delivery relays recipient addresses, messages, and generated PDF attachments through the API to Google.

Minimal Trust Required

The product is intentionally engineered to minimize how much user data ever leaves the browser.

This Privacy Policy explains how Certly handles data when you use the application. By using the platform, you agree to the practices described below.

1. Local-First Processing & Data Sovereignty

Certly is maintained under the Luro name and follows a local-first architecture. Certificate templates, participant data, generated PDFs, and workflow progress are processed directly inside your browser whenever possible.

Unlike many traditional SaaS tools, Certly is intentionally designed to reduce dependency on external cloud storage for core certificate generation workflows.

Complete Local Processing

  • Certificate templates are stored locally inside your browser storage (IndexedDB).
  • CSV imports are read locally. Public Google Sheets are fetched through the backend API before the rows are stored in the browser.
  • PDF generation occurs exclusively within your browser using client-side Web Workers and pdf-lib.
  • Generated certificates remain on your device until you manually send or download them.
  • Local browser storage data persists across page reloads. You can clear it manually via browser storage settings or the "Delete data & start fresh" action under Your local data.

What We Do Not Do With Participant Data

  • We do not permanently upload or store participant rosters on Certly servers.
  • We do not retain participant names, emails, or personal information in any permanent database.
  • We do not permanently store generated certificate PDFs.
  • We do not use Workspace API data (Gmail, Google Sheets) for secondary purposes like analytics, marketing, or machine learning.
  • We do not access your Google Sheets or Gmail after the immediate operation completes.

2. Information We Collect

Certly does not intentionally collect or sell participant information.

Some limited technical information may be collected automatically for operational and security purposes, including:

  • Browser type and version
  • Device information
  • Error logs and crash diagnostics
  • Basic anonymous usage analytics

Any monitoring or diagnostics services used by the platform are configured to avoid intentionally storing Personally Identifiable Information (PII) wherever reasonably possible.

3. Browser Storage & Local Data

Certly may store temporary workflow data locally inside your browser using technologies such as IndexedDB or Local Storage.

This may include:

  • Uploaded certificate templates
  • Participant lists
  • Generated certificate references
  • Workflow progress and session recovery data

This local data exists only on your device and can typically be removed by clearing your browser storage.

4. Google Workspace API Usage & Guaranteed Data Handling

Certly uses the following Google APIs to deliver its core functionality.

Gmail API (gmail.send scope)

  • Purpose: Send personalized certificates directly through your Gmail account to event participants.
  • Data Sent to Backend: When you request email delivery, the backend temporarily receives recipient email address, email subject, email body, and the PDF certificate file necessary to compose and send the message via Gmail API on your behalf.
  • Temporary Processing: The backend uses your Gmail OAuth credentials to submit the composed email through Google's Gmail API. This email data is processed only for the duration of the send operation and is not intentionally retained in any permanent Certly database or log file.
  • No Inbox Access: This application requests only the gmail.send scope. Certly never reads, modifies, stores, or deletes any existing emails in your Gmail inbox. It cannot access your Gmail history or account data.
  • After Send: Once the email is transmitted through Gmail, Certly does not retain a copy of the sent message, recipient address, or email content.

Google Sheets Import (Public CSV Export — No OAuth Scope Required)

  • How it works: When you provide a publicly accessible Google Sheets URL, Certly retrieves the sheet's public CSV export through our backend. No Google Sheets OAuth scope or API access is required. The CSV data is returned to your browser for parsing and use in the certificate workflow.
  • Requirement: The sheet must be set to "Anyone with the link can view" by you before import. Certly only accesses publicly shared sheets and never requests private or non-shared sheets.
  • Data Handling: After retrieving the CSV export, the data is passed to your browser for parsing. Imported participant data is stored locally in your browser's IndexedDB and is never permanently retained on Certly servers.
  • No Authentication Required: This feature does not request or use any Google Sheets API scope, Google OAuth token, or access to your Google account.

Recipient Email Sources — No Leads Database or Lead Generation

Certly does NOT provide any of the following:

  • A leads database or shared contact database
  • Lead generation or lead sourcing services
  • Email address suggestions or recipient recommendations
  • Email scraping or automated email discovery services
  • Recipient list sharing or distribution between users

Recipients enter the system entirely from you:

  • CSV files you upload: Stored locally in your browser's IndexedDB, never uploaded to our servers
  • Public Google Sheets you specify: Read through the API when you import or refresh, using a public CSV export (no OAuth required)

Data isolation: All recipient data is scoped to your session and cannot be accessed by other Certly users.

No Email Warming, Automated Sending, or Reputation Services

Certly does NOT provide:

  • Email warming, inbox warming, or sender reputation optimization services
  • Automated email sequences, background email jobs, or scheduled sending
  • Simulated email activity, artificial engagement metrics, or deliverability enhancement
  • Any mechanism for unsolicited commercial email or cold outreach

How email sending works: Delivery starts when you choose to send. Keep the tab open while the queue runs. Certly does not trigger emails from form submissions or schedule background delivery. Queue pacing does not remove Gmail quotas or guarantee that rate-limit errors will be avoided.

AI/ML & Foundational Model Compliance (2026 Mandate)

Critical Guarantee: Data accessed from Google Workspace APIs (Gmail, Google Sheets) will never be used, transferred, or sold to train, improve, or create any foundational, generative, or large language models, or any other machine learning or artificial intelligence systems. We are prohibited from using your data for any AI training purposes.

Google API Services User Data Policy — Limited Use Disclosure

Certly's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.

Specifically, Certly limits its use of Google user data to providing and improving user-facing features that are visible and prominent in the application's interface. We do not use Google user data for serving advertisements, and we do not allow humans to read user data except with affirmative user consent, for security purposes, or to comply with applicable law.

5. Hosting & Infrastructure

Certly may use third-party hosting and infrastructure providers such as Vercel for website delivery, uptime, analytics, and security.

These providers may temporarily process technical request information such as IP addresses, browser metadata, and performance logs as part of normal web infrastructure operations.

However, participant certificate data is not intended to be permanently stored on these infrastructure services.

5.1 Data Protection & Security Measures

Certly implements multiple layers of security to protect your data during the certificate generation and email delivery workflow.

Transport Security

  • Production transport: Use Certly over HTTPS to encrypt communication between your browser, the API, and Google.
  • OAuth tokens in transit: Google OAuth tokens (access and refresh) are transmitted to Google over HTTPS. Session credentials are also carried in the browser's HttpOnly cookie, as described below.

Session & Credential Security

  • HttpOnly session cookies: OAuth credentials are held in Flask's signed, unencrypted session cookie. HttpOnly prevents JavaScript from reading it; SameSite=Lax is set, and Secure is enabled in production. Signing prevents tampering, but does not encrypt the contents.
  • Session-scoped credentials: Google OAuth credentials use a session cookie with a one-hour lifetime, refreshed during use. Logging out clears the Certly session; revoke access in your Google Account to disconnect the app at Google.
  • CSRF protection: All state-changing operations (sending emails, logout) validate a CSRF token on the server in production.
  • OAuth state validation: The OAuth callback verifies a server-generated state parameter to prevent cross-site request forgery during login.

Access Controls

  • Send-only Gmail permission: The Gmail scope is gmail.send. Sign-in also requests basic profile and email identity scopes. The Gmail permission does not grant access to read or delete inbox messages.
  • Not intentionally persisted: OAuth credentials are carried in the signed session cookie, not intentionally written to a permanent Certly database or file.
  • Production hardening: Debug endpoints and verbose error messages are disabled in production. API errors are sanitized before being returned to clients.

5.2 Recipient Consent & Email Preferences

Certly is designed for sending certificates to event participants who have implicitly consented to receive communications from the event organizer.

Consent & Organizer Responsibility

  • Organizer-provided recipients: Recipients are supplied by the organizer from participant data the organizer provides. Certly does not independently verify consent or contact preferences.
  • Your responsibility: The organizer is responsible for ensuring that all use of recipient information and email communications complies with applicable laws and regulations in their jurisdiction, including requirements regarding consent, notification, and opt-out mechanisms.
  • Product context: Certly is designed for organizer-initiated delivery of event-related communications (primarily certificates) to participants whose information the organizer has provided.

Unsubscribe & Preference Management

  • No built-in unsubscribe or preference system: Certly does not provide unsubscribe links, preference management, suppression lists, or recipient opt-out functionality.
  • Recipient contact: Recipients who wish to manage their communication preferences or opt out of future communications should contact the event organizer directly.
  • Product design: Certly is designed for organizer-initiated certificate delivery rather than subscription-based or recurring communications. Compliance with applicable email communication laws and regulations is the organizer's responsibility.

5.3 Data Sharing, Disclosure & Prohibited Uses

Certly does not sell, rent, trade, or otherwise disclose Google user data to any third party except as strictly necessary to provide the service (e.g., transmitting your email through Google's own Gmail API on your behalf).

We explicitly do NOT use Google user data for:

  • Advertising: No targeted, personalized, retargeted, or interest-based advertising of any kind.
  • Data brokering or resale: We never sell or transfer user data to data brokers, information resellers, or any party for commercial gain.
  • Credit or lending decisions: User data is never used to determine creditworthiness or for lending purposes.
  • Unrelated databases: We never combine or build datasets unrelated to Certly's user-facing certificate generation and delivery features.
  • AI/ML model training: Google user data is never used to train, improve, or develop generalized or non-personalized artificial intelligence or machine learning models.
  • Surveillance or tracking: We do not use Google user data for profiling, monitoring, or tracking individuals beyond what is needed to deliver the certificate email they requested.

Summary: Google user data obtained by Certly is used solely to send certificate emails on your behalf. It is not transferred, disclosed, or repurposed for any other objective.

5.5 Analytics & Google Tag Manager

Certly uses Google Tag Manager (GTM) and Google Analytics (GA4) to track anonymous usage metrics and improve the platform.

Critical: Workspace Data Exclusion

GUARANTEED: No data accessed from Google Workspace APIs (Gmail, Google Sheets, participant information, certificate content, or email addresses) is ever sent to Google Analytics, Google Tag Manager, or any third-party analytics service.

Analytics data collected is limited to:

  • Anonymous visitor ID (locally generated, never linked to email or identity)
  • Page path and navigation flow (no personal data)
  • Feature usage (e.g., "template_uploaded", "certificate_generated") with aggregate counts only
  • Browser type and device category (non-identifying)
  • Error events (no PII or sensitive data included)

Participant rosters, certificate content, and email addresses are not included in analytics events. Public Sheets import and Gmail delivery still pass the data needed for those operations through the API.

Data Retention for Analytics

Analytics retention depends on the service and property configuration. This application does not provide a control for deleting an individual visitor's analytics history.

6. Data Retention & Deletion

Certly minimizes data retention wherever possible.

Browser-Side Data

  • Storage mechanism: Participant lists, templates, and certificate references are stored in your browser's IndexedDB and localStorage.
  • Persistence: This data persists across page reloads within the same browser session. It allows you to resume work if the page is accidentally refreshed.
  • Manual deletion: You can clear this data at any time by:
    • Opening Your local data → "Delete data & start fresh", or deleting the current batch from Settings
    • Clearing your browser's site data for the Certly address you are using
    • Using your browser's storage management tools
  • No permanent roster database: Sheets rows pass through the API on import. Gmail delivery processes recipient details and PDFs to send the requested messages.

Backend Data

  • Gmail Send Operations: When you send a certificate email, the backend temporarily receives the recipient address and email content to compose and transmit the message. This data is not intentionally retained in a permanent database after the send operation completes.
  • OAuth Credentials & Session Security: Google OAuth access and refresh tokens are handled by the API in a signed Flask session cookie. The cookie is not encrypted. Its settings include:
    • HttpOnly flag: Page JavaScript cannot read the session cookie
    • Secure flag: Enabled in production so the cookie is sent over HTTPS
    • SameSite="Lax": Limits when the browser sends the cookie with cross-site requests
    • Gmail session lifetime: Configured for one hour; reconnect if the session expires
    • No persistent storage: Tokens are never stored in databases, local storage, or files
  • Analytics Events: Anonymous usage events (feature clicks, certificate counts, errors) are recorded for product improvement. Participant PII is never included. See "Analytics & GTM" section below.

Requesting Data Deletion

If you have questions about data retention or believe any personal information has been retained on Certly servers, you may:

  • Revoke OAuth access: Visit your Google Account Permissions page and disconnect Certly. This immediately invalidates our access to your Gmail account.
  • Clear local data: Clear your browser's site data for the Certly address you are using, or choose Your local data → "Delete data & start fresh".
  • Contact options: Check our Contact page for available channels. The current email and social links are placeholders, not working support channels. There is no guaranteed response time.

7. Data Handling

Certificate rendering runs locally in your browser, and workflow data is stored on your device. If you choose Gmail delivery, the message and certificate attachment are sent through the email-delivery API. Review the sections above for details on storage, permissions, and email delivery.

8. Policy Updates

This Privacy Policy may be updated from time to time to reflect technical improvements, legal requirements, or workflow changes.

Material privacy-related changes will be reflected on this page.

Our Commitment

PDF generation is local. Optional imports and delivery have different data boundaries, which are described on this page.

We keep it simple: generate and send certificates with as little unnecessary data exposure as possible.