DOCUMENT: DATA PROTECTION & SECURITY ARCHITECTUREVERSION: 1.0LAST UPDATED: 2026-07-08CLASSIFICATION: PUBLIC

Data Protection & Security Architecture

Technical specification of data access scope, encryption implementation, network egress, authorization model, and infrastructure for Workflow Archaeologist. Intended for security review, vendor risk assessment, and technical due diligence.

1. Scope of access2. OAuth 2.0 authorization3. Network egress inventory4. Encryption specification5. Authorization & tenant isolation6. Infrastructure7. Application-layer controls8. Data retention & deletion9. Compliance10. Verification
SECTION 1

Scope of access

The application requests nine OAuth scopes from HubSpot's OAuth 2.0 authorization server. All nine are read scopes. No write, create, delete, or send scope is requested at any point in the authorization flow.

ScopeGrantsConsumed by
automationRead workflow definitions, action sequences, enrollment criteriaWorkflow graph ingestion
crm.schemas.contacts.readRead contact object property schemaProperty-reference resolution
crm.schemas.companies.readRead company object property schemaProperty-reference resolution
crm.schemas.deals.readRead deal object property schemaProperty-reference resolution
formsRead form definitionsOrphaned-reference detection
contentRead marketing email/page asset metadataSend-action and content-reference validation
crm.objects.owners.readRead HubSpot user/owner recordsAction attribution
crm.lists.readRead list definitions and membership countsList-reference validation
crm.objects.contacts.readRead contact recordsAggregate reach-ratio computation only; no individual contact record is persisted to the database

Scopes explicitly not requested: automation.write, crm.objects.contacts.write, content.write, forms.write, any e-commerce, tickets, conversations, or settings scope, and no scope covering billing or account administration.

SECTION 2

OAuth 2.0 authorization flow

Standard authorization-code grant. Implementation specifics:

SECTION 3

Network egress inventory

Complete enumeration of non-idempotent (non-GET) HTTP calls this application issues to HubSpot's API surface:

POST /oauth/v1/token — authorization code exchange, token refresh DELETE /oauth/v1/refresh-tokens/{token} — token revocation on disconnect No other POST, PATCH, PUT, or DELETE request to api.hubapi.com exists in the application's source. Every data-read operation is a GET.

All outbound HubSpot API calls are rate-limit aware: responses are checked for HTTP 429, Retry-After is honored when present, requests are retried up to a fixed budget, and the call fails closed (throws) rather than silently proceeding after the retry budget is exhausted.

SECTION 4

Encryption specification

PropertyValue
CipherAES-256-CBC
Key length256-bit (32 bytes)
IV128-bit (16 bytes), cryptographically random, generated per encryption operation
Ciphertext format{iv_hex}:{ciphertext_base64}
Key storageApplication environment configuration — not co-located with the database
Key rotation dependencyDecryption is attempted lazily at call time; a missing or malformed key throws rather than degrading silently

Both the OAuth access token and refresh token are encrypted independently before the write to the portals table. No plaintext token value is written to persistent storage at any point. A distinct random IV per encryption call means identical plaintext tokens encrypt to distinct ciphertext on each write.

Transport encryption: TLS 1.2+ for all connections — browser-to-application, application-to-HubSpot, application-to-database.

SECTION 5

Authorization & tenant isolation

Multi-tenancy is enforced at the database layer via PostgreSQL row-level security (RLS), not exclusively in application code. Every table storing portal, dig, graph, or finding data carries an RLS policy scoping rows to the requesting user's workspace membership. A query issued under one workspace's session cannot return rows belonging to another workspace, independent of application-layer logic correctness.

Role model

RoleReadTrigger digs / triage findingsConnect/disconnect portalsManage team
Owner
Member
Viewer
SECTION 6

Infrastructure

Third-party subprocessors with access to infrastructure or data, disclosed for vendor-risk and subprocessor-registry purposes:

ComponentProvider
Application hosting / computeVercel
DatabaseSupabase (managed PostgreSQL)
AuthenticationSupabase Auth
Background job orchestrationInngest

Standard security headers, including a Content-Security-Policy restricting cross-origin framing, are enforced at the application layer on every response.

SECTION 7

Application-layer controls

SECTION 8

Data retention & deletion

SECTION 9

Compliance

Campaign Creators, the organization operating Workflow Archaeologist, holds SOC 2 Type II certification covering its organizational security controls.

Scope note: SOC 2 Type II audits define a specific system boundary. This certification has not been independently confirmed by this document to include Workflow Archaeologist as a named system within that boundary. For procurement requiring a specific audit-boundary confirmation, request documentation directly — see Section 10.

SECTION 10

Verification

For security review, source-level walkthrough under NDA, SOC 2 documentation, or completion of a vendor security questionnaire, contact: security@campaigncreators.com.