Security & governance

You are handing us access to ad spend. This is what protects it.

No badges and no vague assurances, just the checkable properties of how adsboys is built and delivered. Bring your security team to the call.

Four guarantees

How the platform is built

Isolation by deployment, not by query

Every client runs on a dedicated instance with its own database, application, Meta app and credentials. Cross-client exposure is not prevented by a WHERE clause somebody could forget. The data lives in different places, so an incident affecting one client has no path to another.

Credentials encrypted, and rarely touched

Meta access tokens are AES-256-GCM encrypted at rest with a key unique to your deployment. One module can decrypt them, and that same module is the only one allowed to call Meta, so credentials never spread through the codebase. Nothing logs a token, not even partially. Every database table has row-level security enabled on top of that, which blocks anonymous and API-layer access outright.

Every write is on the record before it happens

Pauses, budget changes, new campaigns and automated rules all write an audit record before the request reaches Meta, then stamp the outcome afterwards. A call that fails still leaves a trace. Months later, 'why did this campaign pause on the 14th' is a query with an answer rather than a reconstruction.

Nothing moves money without a person, except what you authorised

Every create, pause, budget change and delete asks for confirmation, shown next to the exact payload that will hit Meta. Automated rules are the one exception, and they arrive switched off. You preview each one against live data before enabling it, and spend floors, data-coverage checks and cooldowns keep them from acting on noise. No automated action can increase spend. That was a deliberate choice.

Conversation safety

What the AI is structurally unable to do

An AI answering customers in your name is a liability unless something bounds it. Here the bound is code rather than prompt wording. Every generated reply goes through an output filter before it can send. It may contain links you approved and prices that appear word for word in your business profile, and nothing else. A reply carrying an unfamiliar URL or an invented figure is discarded. How confident the model was does not enter into it.

The same discipline governs contact. Automated replies stay inside Meta's messaging windows, a comment permits exactly one private message within seven days, daily caps per person prevent repeat contact, and an opt-out is permanent. Complaints and qualified leads both route to a staffed inbox, where a person takes over with one click.

Before a rule speaks to a real customer you can dry-run it. The full engine runs against a made-up message with every outbound path stubbed, so you read the exact wording first. In that mode the sender is swapped out inside the engine itself rather than by convention, which means a preview cannot reach Meta even if the calling code is wrong.

Access

Permissions you grant, and can revoke

Access is granted asset by asset from your own Meta Business Manager: specific ad accounts, specific Pages, at the permission level you choose. Plenty of clients start read-only, which still gives them full dashboards, AI analysis and reporting while making writes technically impossible, then move to campaign control once the platform has earned it. Meta's servers enforce those limits rather than our application, so they hold regardless of what our code attempts.

Revocation is just as one-sided. Remove the assignment in your Business Settings and access stops immediately, with nothing required from us. Logins to the platform itself are invitation-only from your admin, limited by role, and can carry an expiry date for contractors or reviewers who only need it for a while.

Read more about how agencies run multiple client accounts under this model.

FAQ

What security reviews ask

Where is our data stored, and is it shared with other clients?

Each client gets a dedicated instance with its own database and its own Meta app. There is no shared multi-tenant datastore. Another client's data is not filtered out of your queries, it is in a different database entirely.

How are our Meta access tokens protected?

Tokens are encrypted at rest with AES-256-GCM using a key unique to your deployment, and decrypted inside the single module that makes the API call. Logs reference connection identifiers and never token values.

What permissions does adsboys actually need?

Only what the features you turn on require, and you grant it asset by asset in your own Business Manager. Read-only access to specific ad accounts is a perfectly good starting point. Messaging automation needs Page messaging permissions and nothing beyond them. Meta enforces these limits on its own servers, so the platform cannot exceed what you granted.

Can we revoke access?

At any time, on your own, from your Business Settings. Remove the asset assignment or the system user and access ends immediately. You never have to ask us to hand anything back.

What stops the AI from saying something harmful to a customer?

An output filter runs on every generated reply. Only links from your approved list and prices published word for word in your business profile are allowed through. A reply containing anything else is blocked before it sends. The check lives in code, so it holds no matter how the model was prompted.

Do you hold SOC 2 or ISO 27001?

Not today, and we would rather say so than imply otherwise. What we can evidence is the architecture on this page: deployment isolation, credential encryption, audit-logged writes and confirmation gates. We also run a security review with your team during onboarding.