Privacy policy

In effect from 21 October 2026

How Tomorrow Labs handles personal information in AdHub: what we collect, why we hold it, who else sees it, and what you can make us do about it.

1.Who we are

AdHub is an advertising management platform operated by Tomorrow Labs, a business established in the Republic of South Africa. This policy applies to the AdHub console, the client portal, the free tools at /tools, and the emails and reports we send as part of the service.

It is written to meet the Protection of Personal Information Act 4 of 2013 (POPIA). Where this policy uses the words responsible party and operator, they carry POPIA’s meaning — roughly what other laws call a controller and a processor.

2.Whose data, and who answers for it

AdHub holds two different kinds of personal information and our responsibility is not the same for both. Blurring them would send people to the wrong party with their questions, so we set them out separately.

We are the responsible party for the account information, billing records and security logs of the people who sign in to AdHub. If that is you — you sign in to AdHub — everything in this policy applies to you directly, and you can exercise your rights against us.

We are an operator for everything an agency loads into AdHub about its own clients — briefs, contact details, campaign records and creative files. There, the agency is the responsible party and we act on its instructions. If you are a client of an agency that uses AdHub and you want your information corrected or removed, ask the agency: they decide, and we carry it out. We will not act on such a request behind our customer’s back, and we will tell you to go to them rather than leave you waiting.

3.What we collect and why

We collect what the service needs to work, and we have tried to make this table specific enough to be checkable rather than broad enough to cover anything.

Category
Account information
Examples
Name, work email address, password hash, agency and role, two-factor secret if you enable it
Why
To create your account, sign you in and decide what you may change
Kept for
For as long as the account exists, then 90 days
Category
Billing records
Examples
Your plan, the subscription's status as Stripe reports it, Stripe's customer and subscription references, and the ids of the billing events Stripe sends us. Card details go to Stripe and never reach AdHub
Why
To give you the plan you pay for, and to keep paid features on while a failed payment is retried
Kept for
  • Plan and subscription references for as long as the account exists, then 90 days
  • Billing event ids 90 days after they arrive
Category
Customer content
Examples
Briefs, deals, tasks, creative files, comments, QA checks and client records you enter
Why
It is the service — this is the material AdHub exists to hold and organise
Kept for
Until you delete it, or 90 days after the account closes. A Meta MCP run you delete is kept 30 days as a record of what it did in Meta
Category
Connected platform data
Examples
Campaign names, budgets, spend, impressions, clicks and conversions pulled from platforms you connect, the reports built from them, and competitor ads read from public ad libraries
Why
Reporting, budget monitoring and the automation rules you configure
Kept for
  • Rolling 25 months, counted from the date the figures are for (reports from the end of the period they cover
  • Competitor ads from when they were last seen running), matching the reporting windows the platforms themselves keep
Category
Access tokens
Examples
OAuth access and refresh tokens for the platforms, trackers and storage you connect
Why
To keep a connection working without asking you to re-authorise daily
Kept for
Until you disconnect the integration, which deletes them
Category
Technical and security logs
Examples
IP address, browser user agent, sign-in times, and an audit record of changes made in the console
Why
Security, abuse prevention, and answering "who changed this budget?"
Kept for
  • Security log (sign-ins, failed sign-ins, password and two-factor changes, with IP address and browser): 12 months
  • Notifications 12 months
  • Delivery records 90 days
  • Consent choices 24 months
  • Meta data-deletion requests 12 months
  • Rate-limit counters 2 days
  • Audit records for the life of the account
Category
Free tool usage
Examples
The UTM links, briefs and pacing figures you type into the tools at /tools
Why
To return a result. Without an account these stay in your own browser and never reach us
Kept for
Not stored server-side unless you are signed in

We do not collect special personal information as POPIA defines it — health, biometrics, religious or political belief, race, trade union membership or criminal behaviour — and we ask you not to load it into free-text fields such as brief descriptions or task notes.

We do not sell personal information, and we do not share it with third parties for their own marketing.

4.Our grounds for processing

  • Performance of a contract — running your account, holding your briefs and campaigns, taking payment. Without this we cannot provide the service at all.
  • Legitimate interests — security logging, abuse prevention, and the audit record of who changed what. We have weighed these against your interests and consider a tamper-evident record of budget changes to be squarely in the interests of everyone using the account.
  • Consent — connecting a third-party platform, and advertising cookies on the free tools. Both are opt-in and both can be withdrawn: disconnect the integration in your settings, which deletes the stored tokens, or change your choice under “Cookie settings”.
  • Legal obligation — tax and company records we are required to keep.

5.Who else receives it

Most of the list below is under your control. AdHub talks to an advertising platform, a work tracker or a storage provider only once someone in your account connects it — an account that connects nothing has a much shorter list than this page might otherwise suggest. The providers every account uses are also kept on a separate sub-processors page, which we update before any change takes effect.

Advertising platforms

Connected by you, per platform. AdHub reads campaign, spend and performance data, and writes the campaign changes you make in the console.

RecipientWhat goes to themWhenWhere
Meta (Facebook & Instagram)Campaign management and performance reportingOnly if connectedDepends on the provider
Google AdsCampaign management and performance reportingOnly if connectedDepends on the provider
TikTok AdsCampaign management and performance reportingOnly if connectedDepends on the provider
LinkedIn AdsCampaign management and performance reportingOnly if connectedDepends on the provider
Snapchat AdsCampaign management and performance reportingOnly if connectedDepends on the provider
Pinterest AdsCampaign management and performance reportingOnly if connectedDepends on the provider
X (Twitter) AdsCampaign management and performance reportingOnly if connectedDepends on the provider

Work trackers

Connected by you. AdHub mirrors briefs and tasks outward only — it never reads your board back into AdHub.

RecipientWhat goes to themWhenWhere
NotionA copy of the brief title, description, deal lines and task listOnly if connectedDepends on the provider
AsanaA copy of the brief title, description, deal lines and task listOnly if connectedDepends on the provider
Monday.comA copy of the brief title, description, deal lines and task listOnly if connectedDepends on the provider
ClickUpA copy of the brief title, description, deal lines and task listOnly if connectedDepends on the provider
TrelloA copy of the brief title, description, deal lines and task listOnly if connectedDepends on the provider
JiraA copy of the brief title, description, deal lines and task listOnly if connectedDepends on the provider

Archive and storage targets

Connected by you. Uploaded creative files are moved to your own storage when your account approaches its quota.

RecipientWhat goes to themWhenWhere
Google DriveCreative files archived out of AdHub's own storageOnly if connectedDepends on the provider
OneDriveCreative files archived out of AdHub's own storageOnly if connectedDepends on the provider
DropboxCreative files archived out of AdHub's own storageOnly if connectedDepends on the provider
BoxCreative files archived out of AdHub's own storageOnly if connectedDepends on the provider
Amazon S3Creative files archived out of AdHub's own storageOnly if connectedDepends on the provider

Analytics

Connected by you, and read-only. AdHub pulls aggregate figures by day and campaign tag; it does not read individual visitor records.

RecipientWhat goes to themWhenWhere
Google Analytics 4Aggregate sessions, conversions and revenue by campaignOnly if connectedDepends on the provider

AI features

Used only when someone in your account uses the feature. Anthropic acts as our sub-processor. [Placeholder wording, for counsel to confirm.]

RecipientWhat goes to themWhenWhere
Anthropic PBC (Brief assistant)The brief you ask it to turn into a campaign plan and ad copy. Anthropic does not train its models on this data and deletes it within 30 days, except where it must keep it longer to enforce its usage policy or by law.Only when you use the featureUSA
Anthropic PBC (Competitor angles)The text of competitors' public ads it is asked to summarise. Anthropic does not train its models on this data and deletes it within 30 days, except where it must keep it longer to enforce its usage policy or by law.Only when you use the featureUSA
Anthropic PBC (Meta MCP)Your prompt, the Meta ad-account data the tools return, and Claude's reply. Anthropic does not train its models on this data and deletes it within 30 days, except where it must keep it longer to enforce its usage policy or by law.Only once an owner or admin turns Meta MCP onUSA
Meta Platforms (hosted Ads MCP server)With Meta MCP on, the tools Claude calls run on Meta's own MCP server (https://mcp.facebook.com/ads) with the connection's Meta access token, and read or create paused objects in the ad account you choose.Only once an owner or admin turns Meta MCP onUSA

Chat alerts

Set up by you under Settings. Warning and critical alerts are posted to the webhook you enter.

RecipientWhat goes to themWhenWhere
SlackAlert titles and text: campaign, client and ad account names, spend and budget figuresOnly if connectedDepends on the provider
Microsoft TeamsAlert titles and text: campaign, client and ad account names, spend and budget figuresOnly if connectedDepends on the provider
Your WhatsApp bridge provider (for example Twilio or CallMeBot)Alert titles and text: campaign, client and ad account names, spend and budget figuresOnly if connectedDepends on the provider

Design links

Added by you to creative versions. AdHub stores the link and sends nothing to these services; whoever opens the link is taken to them.

RecipientWhat goes to themWhenWhere
FigmaOpening a design you linked from a creative version, under that service's own termsOnly if connectedDepends on the provider
CanvaOpening a design you linked from a creative version, under that service's own termsOnly if connectedDepends on the provider

Signing in

Only if you choose to sign in with Google rather than with a password.

RecipientWhat goes to themWhenWhere
Google sign-inGoogle confirms who you are and sends us your name, email address and profile pictureOnly if you sign in with GoogleUSA

Advertising on the public tool pages

Only on the free tools at /tools, never inside the console, and only after you accept advertising cookies in the banner.

RecipientWhat goes to themWhenWhere
Carbon Ads (BuySellAds)Serving an ad: your browser loads Carbon's script, which sees your IP address and the pageOnly after you accept advertising cookiesUSA
Google AdSenseServing a non-personalised ad: your browser loads Google's script, which sees your IP address and the pageOnly on the public tool pages; ads are never personalisedUSA

Service providers we use ourselves

These operate for every account and are not optional. Each is bound by contract to process personal information only on our instructions.

RecipientWhat goes to themWhenWhere
StripeSubscription billing. Card details go to Stripe directly and are never stored by AdHub.AlwaysUSA
Resend / your own SMTP serverTransactional email: invitations, alerts and scheduled reportsAlwaysUSA (Resend)
Our hosting and database providerRunning the service and storing your account data, including backupsAlways[Placeholder: hosting region to be confirmed]

Meta MCP and Anthropic

Meta MCP is off until an owner or admin of an account turns it on, after reading a notice in the product. Once it is on, the prompt someone types, the Meta ad-account data the tools return and Claude’s reply are sent to Anthropic PBC in the USA as our sub-processor. Anthropic does not train its models on this data and deletes it within 30 days, except where it must keep it longer to enforce its usage policy or by law.

[Placeholder wording, for counsel to confirm.]

We will also disclose personal information where the law requires it, or to establish or defend a legal claim. If we are compelled to hand over your data we will tell you, unless we are legally barred from doing so.

6.Where it is processed

Your account data is stored on servers operated by our hosting provider, named with its region on the sub-processors page. Several of the recipients listed above operate outside the Republic of South Africa, most of them in the USA: the “Where” column in clause 5 says which. This is unavoidable for a product built on the advertising platforms’ own APIs, since those platforms are not hosted locally.

Section 72 of POPIA allows personal information to be sent outside South Africa only where one of its grounds applies. We rely mainly on the first: the recipient is bound by a law, binding corporate rules or an agreement that gives an adequate level of protection, with principles substantially similar to POPIA’s, including for any onward transfer. We do not transfer personal information to a provider that will not accept such terms. Where a transfer happens because you chose it, such as connecting a platform or turning on Meta MCP, it is also necessary to give you the service you asked for.

[Placeholder wording, for counsel to confirm the s72 grounds relied on.]

7.How it is protected

  • Traffic between you and the service is encrypted in transit (TLS).
  • Passwords are stored as salted hashes. We cannot read your password, and neither can anyone who obtains the database.
  • OAuth tokens for your connected platforms are encrypted at rest with a key held in the deployment environment, not in the database. A stolen database backup does not hand anyone your ad accounts.
  • Two-factor authentication is available on every account and we recommend enabling it, particularly for owner and admin roles.
  • Every account is scoped to its agency at the query level, and client users are additionally scoped to their own client record.
  • Changes to budgets, campaign status and account settings are written to an audit log.

No system is perfectly secure, and we will not claim otherwise. If a breach affects your personal information we will notify you and the Information Regulator as section 22 of POPIA requires, in writing and as soon as reasonably possible after establishing the scope. We report to the Regulator through its eServices portal, the channel it requires for these notifications.

8.How long we keep it

Retention periods are listed per category in clause 3. In general: we keep customer content until you delete it or for 90 days after an account closes, whichever comes first; figures from connected platforms for 25 months, counted from the date they are for rather than the date we fetched them; security logs for 12 months; and financial records for the period our tax obligations require. A job runs every night and deletes what has passed its period, so these are limits we enforce, not just intentions.

The one exception is a legal hold. If we must keep a workspace’s information as evidence — for a dispute, an investigation or a request we are bound to answer — we restrict it rather than delete it, as section 14(6) of POPIA allows: nothing of that workspace’s is deleted by the nightly job, and a closed workspace is not purged, until the hold is lifted. We lift it as soon as the reason for it has passed.

Deleting an integration deletes its stored tokens immediately. Deleting a brief, campaign or client removes it from the service. Deleted data stays in our encrypted backups for up to 35 days, then is gone. We do not restore it from a backup except to recover the service after a fault, and if we ever do, we delete it again.

9.Your rights

If we are the responsible party for your information — see clause 2 — you have the following rights, and exercising them costs nothing and will not affect your account.

RightWhat it means
AccessAsk what personal information we hold about you and be given a record of it.
CorrectionHave information that is inaccurate, misleading or out of date corrected.
DeletionHave information deleted where we no longer have grounds to keep it. Records we must keep for tax or legal reasons are the exception, and we will say so.
ObjectionObject to processing carried out on the basis of our legitimate interests.
Direct marketingWe do not send marketing email. If we ever do, we will ask first, and you can say no at any time. Service and security emails are not marketing.
ComplaintComplain to the Information Regulator. You do not have to come to us first, though it is usually faster.

Write to privacy@tomorrowlabs.co.za. We will respond within 30 days. We may ask you to confirm your identity first — not as an obstacle, but because handing someone else’s data to whoever asks for it is the failure this whole policy exists to prevent.

10.Children

AdHub is a business tool and is not directed at children. We do not knowingly collect personal information from anyone under 18. If you believe a child’s information has reached us, tell us and we will delete it.

11.Cookies and the free tools

The console sets a session cookie when you sign in, and a small number of preference cookies. These are strictly necessary — the service cannot keep you signed in without them — so they are not subject to an opt-in banner.

The free tools at /tools work without an account. When you are not signed in, what you type into them stays in your own browser’s storage and is never sent to us. Signing in is what moves that history onto our servers, and it is entirely your choice.

The public tool pages show one ad, served either by Carbon Ads (run by BuySellAds) or by Google AdSense. Advertising never appears inside the console.

  • On your first visit to a public page we ask whether you agree to advertising cookies. You can change your choice at any time with the “Cookie settings” link in the footer.
  • Carbon Ads loads only after you accept. Until then its script is not fetched at all, so Carbon receives nothing from your visit. Once loaded, it sees your IP address and the page you are on.
  • Google AdSense ads are always non-personalised, whatever you choose. Until you accept, we also tell Google (through its Consent Mode) not to use cookies for ad storage; if you accept, Google may use cookies to measure ads and limit how often you see them, but not to personalise them.
  • We record each choice so we can show what was agreed: a random identifier kept in your browser, the choice, the version of the question and the time. We do not record your IP address or browser details with it.

You can read how Google uses information from sites that use its services at policies.google.com/technologies/partner-sites, and manage personalised advertising from Google at myadcenter.google.com.

12.Changes to this policy

When we change this policy we change the effective date at the top. For a change that materially reduces your rights or widens what we do with your information, we will tell account owners by email at least 14 days before it takes effect, rather than relying on you to re-read the page.

13.Contacting us and the Regulator

Questions, requests and complaints: privacy@tomorrowlabs.co.za.

You have the right to complain to the supervisory authority, and you do not have to raise it with us first:

Information Regulator (South Africa)

enquiries@inforegulator.org.za · https://inforegulator.org.za/

Privacy policy — AdHub