Skip to content

This Privacy Policy explains how Spooled Cloud collects, uses, stores, and protects your information when you use our job queue and background job services (the "Service"). Spooled Cloud is operated by YS Progress Inc., a corporation registered in Ontario, Canada ("we", "our", or "us"). We are committed to protecting your privacy and handling your data responsibly.

1. Information We Collect

The categories below describe data the Service actually stores or processes. We do not use password authentication; accounts use email one-time codes and API keys.

Account information

When you create or manage an organization, we store:

Data Purpose
Email address (billing email) Account login codes, notifications, billing contact, and support
Organization name and slug Tenant identity and dashboard/API routing
Plan tier and optional custom limits Enforce plan quotas and retention
Organization settings (JSON) Product configuration for your tenant (for example webhook tokens)

Authentication (no passwords): We do not collect or store account passwords. Sign-in uses a short-lived email one-time code (OTP). API access uses API keys that we store only as bcrypt hashes (the raw key is shown once at creation). After a successful login we issue JWT access and refresh tokens for the dashboard session.

Billing information

Data Where it lives
Payment method and card details Processed and stored by Stripe; we do not store full card numbers
Billing address and tax details Collected and stored by Stripe as required for invoicing
Stripe customer and subscription IDs, status, period end Stored on your organization record to sync plan status
Transaction and invoice history Maintained by Stripe for paid accounts

Job and queue data

When you use the Service to process jobs, we store:

Data Notes
Job payloads and results Stored as plain JSONB in PostgreSQL (not encrypted at the application layer)
Job metadata Status, timestamps, retry counts, queue name, priority, errors, worker lease fields
Idempotency keys Used to prevent duplicate processing within an organization
Webhook / delivery payloads Inbound or outgoing webhook delivery records as plain JSONB
Dead-letter records Including a copy of the original payload for failed jobs that enter the DLQ
Schedules, workflows, queue config, workers Configuration and operational state for your queues

Job payloads are stored in PostgreSQL on infrastructure we operate. They are not encrypted at rest by the application; protect sensitive content in payloads yourself (for example by encrypting before enqueue) if required by your threat model.

Operational and security data

Data How it is used
Application and error logs Debugging, security investigation, and service reliability (structured logging / tracing)
Performance metrics Aggregated latency, throughput, job and worker counters (Prometheus-style operational metrics)
IP addresses (limited) Used for rate limiting on sensitive auth endpoints; for some email-check requests the client IP is written into a short-lived rate-limit marker row
User-Agent (ephemeral) May be hashed in-memory as a rate-limit fallback when no API key or IP is available; not stored as a dedicated profile field
Email login codes 6-digit OTP values with expiry and attempt counters for passwordless login

We do not maintain a general-purpose “API access log” table of every request with a fixed multi-month retention window in the application database. Edge providers (for example Cloudflare) may process connection metadata as part of network protection.

2. How We Use Information

We use the information we collect to:

  • Provide the Service: Process jobs, manage queues, deliver webhooks, and provide real-time updates
  • Authenticate users and API clients: Email OTP, JWT sessions, and API-key verification
  • Process payments: Manage subscriptions and billing via Stripe
  • Maintain security: Rate limiting, abuse prevention, and operational monitoring
  • Improve reliability: Metrics and logs used to operate and debug the Service
  • Communicate: Service announcements, security alerts, and support replies
  • Comply with law: Meet legal obligations and respond to lawful requests

3. Data Sharing

We do not sell your personal information. We share data only in these circumstances:

Service providers

We work with trusted third parties who help us operate the Service:

Provider Role Typical data involved
Cloudflare Network, TLS termination, DDoS protection, CDN, and website hosting Connection metadata, website traffic
Stripe Payment processing for paid plans Billing contact, payment method, invoices
Transactional email provider Delivery of login codes and service email (provider configurable: e.g. Resend, SendGrid, Postmark, or SMTP) Email address and message content

These providers are expected to use data only to provide their services to us. We operate our own application, PostgreSQL, and Redis infrastructure rather than a managed cloud database product.

We may disclose information when required by:

  • Valid court orders or subpoenas
  • Law enforcement requests (with proper legal process)
  • Government regulatory requirements

We will notify you of such requests unless legally prohibited from doing so.

Business transfers

In the event of a merger, acquisition, or sale of assets, your information may be transferred. We will notify you and provide options before your data is transferred to a new entity.

4. Data Retention

Retention depends on the data type and, for job data, your plan. Where the application does not implement an automatic purge, data can remain until you or an administrator delete it.

Job data by plan

Automatic cleanup deletes completed and cancelled jobs after the plan’s job retention window. It does not automatically purge failed or dead-letter jobs on that schedule (unless a job has an explicit expires_at that has passed, or you call the dead-letter purge API).

Plan Completed / cancelled jobs Job history / webhook deliveries
Free 3 days 1 day
Starter 14 days 7 days
Pro 30 days 30 days
Enterprise 90 days 90 days

Workflows in completed, failed, or cancelled status are cleaned on the same job-retention windows. Custom per-organization limit overrides may change these windows when configured.

The second column is applied by a per-organization retention sweep, which deletes job history and outgoing webhook delivery records once they are older than that window. Independently of retention, only the most recent 100 deliveries per webhook are readable through the API.

Other data

Data type Retention
Failed / dead-letter jobs and DLQ original payloads Not removed by the timed completed/cancelled cleanup. Removed when you purge the dead-letter queue, when a job’s expires_at has passed (for eligible statuses), or when the organization is hard-deleted
Account / organization records Kept while the account is active. Self-service organization deletion permanently deletes the organization and cascaded related data immediately (subject to pre-delete checks for active jobs, workers, and schedules). Admin soft-delete marks the plan as deleted and revokes API keys but leaves rows in place until an admin hard-delete is performed; there is no automatic “delete after 30 days” job
Email one-time login codes Valid for a short window (about 10 minutes) for authentication, with attempt limits. Once expired, the code records are deleted by the same per-organization retention sweep described above, on the plan’s history-retention window
API key material Bcrypt hashes stored until the key is revoked/deleted or the organization is hard-deleted
Billing records (Stripe) Retained by Stripe under their policies and applicable financial record rules
Application logs and metrics Operational retention; not a fixed multi-year legal archive defined in application code

You can request earlier deletion of personal data by contacting us at privacy@spooled.cloud.

5. Data Security

We implement the following measures reflected in the product:

  • Encryption in transit: TLS for API traffic (REST, gRPC, WebSocket), typically terminated at the Cloudflare edge in production
  • No application-layer encryption at rest for job payloads: payloads and results are plain JSONB in PostgreSQL
  • Access controls: organization-scoped API keys with optional per-queue least-privilege scoping
  • Key management: API keys hashed with bcrypt before storage
  • Data isolation: queries scoped to your organization
  • Monitoring: operational metrics, logging, and alerting

For more details, see our Security page.

6. Your Rights

Depending on your location, you may have the right to:

  • Access: Request a copy of your personal data
  • Correction: Request correction of inaccurate data
  • Deletion: Request deletion of your data (subject to legal retention requirements and technical deletion paths described above)
  • Export: Receive job and account data available through our API
  • Objection: Object to certain processing activities
  • Restriction: Request limitation of processing in certain circumstances
  • Withdraw consent: Where processing is based on consent (for example optional marketing analytics cookies)

To exercise these rights, contact us at privacy@spooled.cloud. We will respond within 30 days.

7. Cookies and Tracking

We use two categories of cookies and similar technologies:

  • Essential cookies: Authentication (keeping you logged into the dashboard), session state, and security. These are strictly necessary for the Service to function and cannot be disabled.
  • Analytics cookies (optional): Google Analytics 4 and Meta Pixel on this marketing website, used to understand how the site is used. Choosing "Essential only" in the consent prompt stops them and is remembered on this browser; you can clear your site data at any time to be asked again.

When analytics runs. On this marketing site, analytics starts on page load and continues until you decline — it does not wait for you to accept. Declining stops collection and prevents it from starting on later visits. If your browser sends a Global Privacy Control signal, we treat that as a decline and never start analytics, with no prompt shown. The Spooled dashboard and API carry no analytics or marketing tags at all.

We do not sell personal information. The analytics described here apply to this marketing site only, and are not a substitute for authenticated product telemetry.

8. Sub-processors and Data Transfers

We operate our own application, database (PostgreSQL), and queue (Redis) infrastructure. A small number of third-party sub-processors help us run the service, and your data may be processed in the regions where they operate:

Sub-processor Purpose
Cloudflare Network, TLS, DDoS protection, CDN, and website hosting
Stripe Payment processing for paid plans (billing data)
Transactional email provider Login codes and transactional email (email address and message content)

9. GDPR Compliance (For EU Users)

For users in the European Economic Area:

  • Legal bases: We process data based on contract performance, legitimate interests, and consent
  • Data controller: YS Progress Inc. (Ontario, Canada) is the data controller for account data
  • Data processor: We act as a data processor for job payloads you submit
  • Contact: For GDPR requests, email privacy@spooled.cloud
  • Supervisory authority: You have the right to lodge a complaint with your local data protection authority

10. CCPA Compliance (For California Users)

For California residents:

  • Right to know: You can request what personal information we collect and how we use it
  • Right to delete: You can request deletion of your personal information
  • Right to opt-out: We do not sell personal information
  • Non-discrimination: We will not discriminate against you for exercising your rights

11. PIPEDA (Canada)

YS Progress Inc. is an Ontario corporation, so our handling of personal information is subject to Canada's Personal Information Protection and Electronic Documents Act (PIPEDA):

  • Consent: We collect personal information only for the purposes described in this policy, and you may withdraw consent by closing your account
  • Access: You can request the personal information we hold about you and ask for corrections
  • Cross-border storage: Data may be stored or processed outside Canada by the sub-processors listed above, where it is subject to the laws of those jurisdictions
  • Complaints: Write to privacy@spooled.cloud. You may also complain to the Office of the Privacy Commissioner of Canada

12. Children's Privacy

The Service is not intended for children under 16. We do not knowingly collect personal information from children under 16. If you believe we have collected information from a child, please contact us at privacy@spooled.cloud.

13. Changes to This Policy

We may update this Privacy Policy periodically. We will notify you of material changes via:

  • Email to your registered address
  • Notice in the dashboard
  • Update to the "Last updated" date

Continued use of the Service after changes constitutes acceptance of the updated policy.

14. Contact Us

For privacy and security-related inquiries:

Email: privacy@spooled.cloud

We aim to respond to all privacy inquiries within 30 days.