Meta Ads

Meta Ads is now live in LDOO. See what it unlocks

Security & data handling

Your data stays yours. Here is exactly how.

This page explains where your data is stored, how it is protected, who can access it, and what LDOO cannot do. No marketing language. Just the facts.

01

Where your data is stored

Everything LDOO stores lives in LDOO’s PostgreSQL database, managed by Supabase, where row-level security walls off every account. Marketing data, conversations, reports, portals, alerts, learned corrections, baselines, and seasonal patterns—all in one place, all under your account.

Marketing data
Stored in LDOO’s PostgreSQL database, scoped to your account. Not copied to any other system, apart from the figures sent to the AI to answer a question. Synced from connected platforms via background jobs.
Conversations
Questions, answers, and metadata stored in your database. Scoped to your account. Not shared, aggregated, or used outside your account.
Reports and portals
Report content and portal layouts stored in your database. Generated PDFs stored in Supabase Storage, scoped to your account.
Query cache
Recent query results cached in Redis for 15 minutes to speed up repeat questions. Cache is automatically cleared when new data syncs.
Alerts
Anomaly and opportunity alerts stored in your database. Generated after each data sync. Scoped to the client and account that owns the data.

LDOO does not replicate your data to a separate data warehouse, analytics service, or third-party storage system. When you delete your account, support can restore it for 30 days; after that its data and files are permanently deleted, and the deletion reaches the database backups within 7 days as they roll over.

02

How your data is encrypted

Credentials are encrypted at rest. Data moves over encrypted connections. Passwords are hashed and not reversible.

OAuth tokens
Access and refresh tokens for all connected platforms (Google, Meta, LinkedIn, X, HubSpot, Shopify, Microsoft) encrypted at rest using AES-256.
Portal passwords
Hashed with bcrypt before storage. Never stored in plaintext. Not retrievable after creation—only resettable.
Data in transit
All communication between your browser, LDOO servers, Supabase, and third-party APIs uses TLS (HTTPS). No unencrypted connections.
Data at rest
The PostgreSQL database is encrypted at rest by Supabase using AES-256. Backups are also encrypted.

AES-256 is the same encryption standard used by banks and government agencies. It is the industry baseline for data at rest. LDOO does not use weaker alternatives.

03

How clients are separated

If you manage multiple clients, each one is isolated from the others at the database level. This is not an application feature—it is a structural guarantee enforced by PostgreSQL.

Database-level enforcement
PostgreSQL Row-Level Security (RLS) filters every query by account_id and client_id. This runs inside the database engine—not in application code.
Cross-client boundary
A question about Client A cannot return data from Client B. Even in cross-client mode (comparing all clients), results are scoped to your account only.
Cross-account boundary
No marketing data is shared between LDOO accounts. Benchmarks compare your clients with each other inside your own account, never with another agency’s data.
Defense in depth
Both the application layer and the database enforce client scoping independently. A bug in one cannot bypass the other.

Row-Level Security (RLS) runs inside the database engine. Every query—whether from the application, the AI pipeline, a background job, or an API call—is filtered before results are returned. This cannot be bypassed by application code.

04

What LDOO can access on each platform

LDOO connects to 13 supported sources across analytics, advertising, CRM, commerce, video, spreadsheets, and behavioral analytics. Every query LDOO sends is a read query. LDOO cannot modify campaigns, budgets, bids, or account settings on any platform.

Google Analytics
Read-only access to properties, metrics, and dimensions via the GA4 Data API.
Google Ads
Reads campaigns, ad groups, keywords, and performance metrics. Google publishes only one Ads API permission, so its consent screen mentions editing and deleting campaigns — that is Google’s wording for the only scope they offer, not what LDOO does. LDOO sends read queries exclusively and has no code path that can change anything in your account.
Meta Ads
Read-only access to campaigns, ad sets, ads, and performance data via the Marketing API.
Search Console
Read-only access to search queries, pages, clicks, impressions, and position data.
Shopify
Read-only access to orders, products, and revenue data.
WooCommerce
Read-only API keys for orders, products, and revenue data.
YouTube Analytics
Read-only access to channel and video performance metrics.
LinkedIn Ads
Read-only access to campaigns, demographics, and B2B performance metrics.
TikTok Ads
Reads campaigns, ad groups, ads, and performance metrics. TikTok grants reporting access together with ad management, so its consent screen mentions managing ads — LDOO sends read requests only and has no code path that changes your campaigns.
X Ads
Read-only access to campaigns, engagement, spend, and conversion metrics.
HubSpot CRM
Read-only access to contacts, companies, deals, and pipeline performance data.
Microsoft Clarity
Read-only access to behavioral signals: rage clicks, dead clicks, scroll depth, session counts.
Google Sheets
Reads the spreadsheets you pick in Google’s file picker, and no other file in your Google account. Google’s per-file permission covers reading and editing the files you pick, so its consent screen mentions editing — LDOO only exports and reads the sheet, and never writes to it or to anything else in your Drive.

Each connection uses standard OAuth—the same authorization flow used by Google, Meta, and Shopify for all third-party apps. You authorize access explicitly, and you can revoke it at any time from within LDOO or from your platform settings. For Google, LDOO appears alongside every other connected app on your Google Account connections page, where removing access takes effect immediately.

05

What the AI sees and does not see

Here is exactly what Anthropic's Claude receives for each answer, what it never sees, and what happens to the payload after the request completes.

What the AI receives
The question you asked, earlier messages in the same conversation, the schema of your data (column names and types), the query results for that question, and what LDOO has learned about the client: its normal ranges, goals, notes from your team, and recent trends. On a question about one client, your other clients appear only as account-wide medians and ranges.
What the AI does not receive
Raw credentials, OAuth tokens, full database access, data from other accounts, or any personally identifiable information beyond what exists in your marketing data.
No model training
Your data is not used to train, fine-tune, or improve AI models. Under Anthropic’s commercial terms, API data is never used for training and is deleted within 30 days, unless flagged for a safety review.
Server-side only
All AI calls run on LDOO’s servers: questions in Supabase Edge Functions, reports in Vercel server functions. The API key is never exposed to the browser. No client-side code can invoke the AI.
Scoped per question
Each question’s context is built for that question and its conversation, inside one account. The AI cannot browse, search, or explore your database. It sees only the data the pipeline provides.
Every report claim checked
A second model reads every claim in a drafted report against a table of the report’s own numbers. A claim the data contradicts or cannot support is corrected or cut before the report reaches you, and every check is logged.

Anthropic's data retention policy: API inputs and outputs are automatically deleted within 30 days. They are not used for training, fine-tuning, or any form of model improvement. This applies to all data LDOO sends.

06

Who can access what

LDOO has three types of users: account owners, team members, and external recipients (clients viewing a portal or report). Each has different access levels.

User authentication
Email/password and Google OAuth via Supabase Auth. Sessions are short-lived, validated server-side on every request, and use secure HTTP-only cookies.
Team permissions
Team members are invited by account owners. Conversations, reports, and client data respect member-level permissions. Activity is logged.
Client portal access
Portals are accessed via a unique share link. No LDOO account required. Optional password protection with bcrypt hashing and 5-attempt lockout. Configurable expiry dates.
Shared report links
Report links can be password-protected and set to expire. Recipients see only the report content. No access to the agency account or LDOO interface.
Revocation
Any portal or shared report link can be revoked instantly. Revocation takes effect immediately—no cache delay, no grace period.
Token refresh and expiry
OAuth tokens are refreshed automatically before they expire. If a refresh fails (access revoked by the platform), the connection is marked expired and you are prompted to reconnect.

Client-facing surfaces—portals and shared reports—are designed so recipients see only what you intend. No LDOO navigation, no other clients, no agency data. Clients do not need an LDOO account. Access is controlled by the link, optional passwords, and expiry settings.

07

Infrastructure and operations

LDOO runs on production-grade infrastructure with automated backups, error tracking, and rate limiting.

Hosting
Application hosted on Vercel. Pages are served from Vercel’s global edge network; server functions run in a single US region.
Database
Supabase-managed PostgreSQL, hosted in Singapore, with automated daily backups and encrypted storage.
Edge Functions
Questions run in isolated Supabase Edge Functions. Each request is sandboxed with no cross-request state sharing.
Background jobs
Syncs, report delivery, alerts, and emails run as scheduled jobs. A failed sync retries once, then again on the next hourly run; a source that keeps failing pauses for four hours instead of hammering the platform. Every job records each run, and a job that falls overdue or errors alerts the LDOO team.
Error tracking
Runtime errors tracked via Sentry with source maps. No customer data is included in error reports.
Rate limiting
API endpoints and AI calls are rate-limited per account via Upstash Redis. Prevents abuse without affecting normal usage.
08

What LDOO will never do

Clear boundaries, stated plainly.

LDOO cannot modify your ad accounts, analytics properties, campaigns, budgets, or bids. Every query LDOO sends is a read query. Where a platform offers a read-only permission, that is the one LDOO requests; where it does not, LDOO still only ever reads.
LDOO does not email anyone outside your team unless you ask it to: report deliveries you schedule, and portals you share (the invite, and a weekly summary where it is turned on). A portal visitor can also ask LDOO to email them a sign-in code. Every weekly portal email carries a link to stop it.
LDOO does not share marketing data between accounts. There is no cross-account benchmarking or pooling of marketing data.
LDOO does not use your data to train, fine-tune, or improve AI models for any purpose.
LDOO does not store marketing data or conversation history outside your database.
LDOO does not access platforms you have not explicitly connected. Each integration requires your manual authorization.
LDOO does not retain query results beyond the 15-minute cache window. Cache is cleared on every new data sync.

If you have questions about data handling, security, or compliance that are not covered here, get in touch. For details on how the AI pipeline works, see How it works.

Read-only access. Encrypted credentials. Your database.

Connect a source in 30 seconds. Your data never leaves your account.