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.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Meta (Facebook & Instagram) | Campaign management and performance reporting | Only if connected | Depends on the provider |
| Google Ads | Campaign management and performance reporting | Only if connected | Depends on the provider |
| TikTok Ads | Campaign management and performance reporting | Only if connected | Depends on the provider |
| LinkedIn Ads | Campaign management and performance reporting | Only if connected | Depends on the provider |
| Snapchat Ads | Campaign management and performance reporting | Only if connected | Depends on the provider |
| Pinterest Ads | Campaign management and performance reporting | Only if connected | Depends on the provider |
| X (Twitter) Ads | Campaign management and performance reporting | Only if connected | Depends on the provider |
Work trackers
Connected by you. AdHub mirrors briefs and tasks outward only — it never reads your board back into AdHub.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Notion | A copy of the brief title, description, deal lines and task list | Only if connected | Depends on the provider |
| Asana | A copy of the brief title, description, deal lines and task list | Only if connected | Depends on the provider |
| Monday.com | A copy of the brief title, description, deal lines and task list | Only if connected | Depends on the provider |
| ClickUp | A copy of the brief title, description, deal lines and task list | Only if connected | Depends on the provider |
| Trello | A copy of the brief title, description, deal lines and task list | Only if connected | Depends on the provider |
| Jira | A copy of the brief title, description, deal lines and task list | Only if connected | Depends 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.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Google Drive | Creative files archived out of AdHub's own storage | Only if connected | Depends on the provider |
| OneDrive | Creative files archived out of AdHub's own storage | Only if connected | Depends on the provider |
| Dropbox | Creative files archived out of AdHub's own storage | Only if connected | Depends on the provider |
| Box | Creative files archived out of AdHub's own storage | Only if connected | Depends on the provider |
| Amazon S3 | Creative files archived out of AdHub's own storage | Only if connected | Depends 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.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Google Analytics 4 | Aggregate sessions, conversions and revenue by campaign | Only if connected | Depends 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.]
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| 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 feature | USA |
| 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 feature | USA |
| 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 on | USA |
| 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 on | USA |
Chat alerts
Set up by you under Settings. Warning and critical alerts are posted to the webhook you enter.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Slack | Alert titles and text: campaign, client and ad account names, spend and budget figures | Only if connected | Depends on the provider |
| Microsoft Teams | Alert titles and text: campaign, client and ad account names, spend and budget figures | Only if connected | Depends 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 figures | Only if connected | Depends 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.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Figma | Opening a design you linked from a creative version, under that service's own terms | Only if connected | Depends on the provider |
| Canva | Opening a design you linked from a creative version, under that service's own terms | Only if connected | Depends on the provider |
Signing in
Only if you choose to sign in with Google rather than with a password.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Google sign-in | Google confirms who you are and sends us your name, email address and profile picture | Only if you sign in with Google | USA |
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.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Carbon Ads (BuySellAds) | Serving an ad: your browser loads Carbon's script, which sees your IP address and the page | Only after you accept advertising cookies | USA |
| Google AdSense | Serving a non-personalised ad: your browser loads Google's script, which sees your IP address and the page | Only on the public tool pages; ads are never personalised | USA |
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.
| Recipient | What goes to them | When | Where |
|---|---|---|---|
| Stripe | Subscription billing. Card details go to Stripe directly and are never stored by AdHub. | Always | USA |
| Resend / your own SMTP server | Transactional email: invitations, alerts and scheduled reports | Always | USA (Resend) |
| Our hosting and database provider | Running the service and storing your account data, including backups | Always | [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.
| Right | What it means |
|---|---|
| Access | Ask what personal information we hold about you and be given a record of it. |
| Correction | Have information that is inaccurate, misleading or out of date corrected. |
| Deletion | Have 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. |
| Objection | Object to processing carried out on the basis of our legitimate interests. |
| Direct marketing | We 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. |
| Complaint | Complain 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.
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/