SpendlyBack to app

Privacy Policy

Version 1.0Last updated 19 August 2026Applies to the Spendly application
1. Scope2. Our two roles3. What we collect4. What we deliberately do not collect5. Why we process it, and on what legal basis6. Cookies7. Who else processes this data8. International transfers9. How long we keep it10. How we protect it11. Report links sent to clients12. Your rights13. Advertiser data and our clients14. Children15. Changes to this policy16. Contact and complaints

1. Scope

Spendly is an internal tool used by Milhas e Meridianos Lda. (“we”, “us”, “the agency”) to monitor and control paid advertising budgets on behalf of our clients. This policy explains what data the application handles, why, and for how long.

Spendly is not a public product. It has no sign-up, and accounts are created only for members of our team. Clients and members of the public do not have logins. If you received a link to a performance report, section 11 is the part that concerns you.

2. Our two roles

Data protection law treats these differently, and Spendly holds both kinds of data:

DataOur roleWhat that means
Our team members’ own data — name, work email, role, activity in the appControllerWe decide why and how it is processed, and we answer directly to the people concerned.
Advertising data belonging to our clients — their campaigns, spend and conversion countsProcessorWe handle it on our clients’ instructions, under our services agreement with them. The client remains the controller.

3. What we collect

3.1 Account and identity

Spendly does not manage passwords. Sign-in is delegated to Milhas ID, our shared internal identity service, which is also used by our other internal tools. From it, Spendly receives and stores a user identifier, name and work email address.

Spendly stores no password, password hash or reset token. It additionally holds, for each team member: their role (admin, member or viewer), which clients they are allowed to see, notification preferences, language and timezone, and the time of their last sign-in.

3.2 Advertising data from connected platforms

When an administrator connects an advertising platform (currently Google Ads and Meta), Spendly reads, on a schedule:

  • Ad account details — name, identifier, currency, timezone and status;
  • Campaign structure — names, status, type, and configured daily or lifetime budgets;
  • Daily performance figures per campaign — cost, impressions, clicks, and counts and values of conversions;
  • Delivery and policy issues — for example a disapproved ad, a campaign limited by budget, or a failed payment on an account.

This data is aggregated at campaign level. Spendly does not request, and the platforms do not return to it, any information identifying the individual people who saw or clicked an advertisement.

3.3 Platform connection credentials

To read the above, Spendly stores authorisation tokens issued by each advertising platform. These are encrypted at rest, are never written to logs, and are never returned by the application’s own interfaces. Spendly requests read-only access; it does not hold permission to modify or create campaigns.

3.4 Information our team enters

Users create budgets, clients, alert settings and reports. They may also enter figures by hand that no connector provides — for example sales, orders and sessions from an online store — and write comments on reports. Comments are free text and may contain whatever the author types, so we ask the team to keep them to commentary about performance.

3.5 Operational records

  • Audit log — who changed what and when, for actions such as editing a budget, changing a role, connecting or removing a data source, and sharing a report.
  • Alerts — records of pacing and delivery alerts raised, and who acknowledged them.
  • Report shares — which report was shared, by whom, when, over which channel, and whether comments were included.
  • Technical logs — standard application and error logs kept by our hosting provider, which may include IP addresses.

4. What we deliberately do not collect

Stated plainly, because the absence is a design decision rather than an oversight:

  • No passwords. Credentials never reach Spendly.
  • No analytics or tracking. There is no analytics script, no advertising pixel, no session recording and no heat-mapping in the application.
  • No profiling of consumers. Spendly holds campaign-level aggregates, not data about the individuals who were shown an advertisement.
  • No selling or sharing for advertising. We do not sell data, rent it, or make it available for anyone else’s marketing.
  • No automated decisions with legal effect. Spendly raises alerts for people to act on. Automatic pausing of campaigns is switched off; where it runs, it only records what it would have done, and a person decides.
  • No special category data. Spendly is not designed to hold health, biometric, political or similar data, and should not be used to.

5. Why we process it, and on what legal basis

PurposeDataLegal basis (GDPR Art. 6)
Give our team access to the tool and the right level of permissionAccount and identity (3.1)Legitimate interests — running our business securely; and performance of the employment or contractor relationship
Monitor budget pacing and produce client reportingAdvertising data (3.2), manual entries (3.4)Performance of our contract with the client, whose instructions we act on as processor
Keep the connection to each advertising platform workingCredentials (3.3)Performance of our contract with the client
Notify the responsible person when spend drifts off target or delivery breaksAccount data, advertising dataLegitimate interests — preventing overspend and under-delivery of client budgets
Keep an audit trail and secure the systemOperational records (3.5)Legitimate interests — accountability and security; and legal obligation where records must be kept

Where we rely on legitimate interests, we have considered the effect on the people concerned. The processing is limited to work activity in a workplace tool, and is what a member of the team would reasonably expect.

6. Cookies

Spendly sets one cookie: a session cookie that keeps you signed in. It is marked HttpOnly, Secure and SameSite=Lax, and lasts up to seven days, renewing while you are active. Signing out clears it.

This cookie is strictly necessary for the application to function, so no consent banner is shown. There are no analytics, advertising or third-party cookies to consent to. The one exception to third-party requests is that the application loads its typefaces from Google Fonts, which means your browser contacts Google’s servers when a page loads.

7. Who else processes this data

We use a small number of providers. Each is bound by a data processing agreement.

ProviderPurposeData involvedLocation
OVH Groupe SAApplication and database hostingAll stored dataGermany (EU)
Google LLC — Google Ads APISource of advertising performance dataCampaign and spend data from the client’s own accountUnited States
Meta Platforms Ireland Ltd. — Marketing APISource of advertising performance dataCampaign and spend data from the client’s own accountIreland (EU), with onward transfer to the United States
Google LLC — Google WorkspaceAlert and invitation emailName, email address, alert contentsUnited States
Slack (optional)Alert delivery, where a workspace is connectedAlert contents and the recipient’s Slack identityUnited States
Milhas ID (internal)Authentication for our own teamName, email address, credentialsHosted with our own infrastructure

We will also disclose data where we are legally required to, or to establish or defend legal claims. We do not otherwise share it with anyone.

8. International transfers

Spendly’s own data stays in the European Union. The application and its database are hosted by OVH in Germany, so no transfer safeguard is needed for the data we store ourselves.

Transfers arise only where we read from, or send through, providers established in the United States — Google (Google Ads and Google Workspace), Meta, and Slack where it is connected. Those transfers rely on the EU–US Data Privacy Framework where the provider is certified under it, and on the European Commission’s Standard Contractual Clauses otherwise.

In the case of advertising data, the data already sits in the client’s own Google or Meta account before Spendly reads it; connecting Spendly does not move it anywhere new.

9. How long we keep it

DataKept forWhy that period
Daily advertising spend and performance48 monthsThree full years of year-on-year report comparison, plus a margin
Audit log24 monthsAccountability for changes made in the system
Alerts12 monthsReviewing whether alerting is accurate
Report runs and their share history24 monthsKnowing what was actually sent to a client
Team member accountDeleted or anonymised within 90 days of the person leavingTheir name stays on historical audit entries where accountability requires it
Platform credentialsDeleted immediately when a connection is removed, and revoked at the platformThey are no longer needed and are the most sensitive item held
Backups30 daysRecovery. Deleted data disappears from backups as they roll over

When a client relationship ends, we delete or return their advertising data in accordance with our services agreement with them.

10. How we protect it

  • No credentials of our own to lose. Sign-in is delegated, so Spendly stores no passwords.
  • Platform tokens are encrypted at rest using envelope encryption, are never logged, and are never exposed through the application’s interfaces.
  • Read-only access to advertising platforms. We do not hold write permission on client ad accounts.
  • Access is granted per person. Having an identity in our internal directory is not enough; an administrator must add someone to Spendly, and non-administrators can be restricted to named clients. Permissions are re-checked on every request, so removing access takes effect immediately.
  • Every change is recorded in an audit log with the person responsible.
  • Transport is encrypted with TLS, and the application sets a strict content security policy.
  • Backups are taken daily and restores are tested.

No system is perfectly secure. If a breach affects personal data, we will notify the competent supervisory authority within 72 hours where the law requires it, and inform affected people and clients without undue delay.

11. Report links sent to clients

Spendly can produce a link to a read-only performance report. If you have received one, the following applies:

  • The link contains an unguessable token. Anyone holding the link can open the report, so please treat it as confidential.
  • Links expire and can be revoked at any time by the person who created them.
  • We record when a shared report is opened, so we know what was received.
  • Shared reports are marked so that search engines do not index them.
  • A report contains advertising performance figures for your account. It contains no personal data about consumers.
  • Reports are never sent automatically. A person at the agency reviews each one and chooses to send it.

12. Your rights

Under the GDPR you may ask us to:

  • Access the personal data we hold about you, and receive a copy;
  • Correct it if it is inaccurate or incomplete;
  • Erase it, where we have no overriding reason to keep it;
  • Restrict or object to processing based on our legitimate interests;
  • Receive it in a portable format, where the processing is automated and based on consent or contract;
  • Withdraw consent, where processing relies on consent — this does not affect what happened beforehand.

Write to david@milhasemeridianos.pt. We will respond within one month, and will tell you if we need longer because the request is complex. We may ask you to confirm your identity first.

If your request concerns advertising data we hold for a client, we will pass it to that client, who is the controller for it, and support them in responding.

13. Advertiser data and our clients

For campaign, spend and conversion data belonging to a client, we act on that client’s instructions as their processor. In that capacity we:

  • process the data only to provide budget monitoring and reporting;
  • keep it confidential, and limit access to team members who need it;
  • apply the security measures in section 10;
  • engage only the sub-processors listed in section 7, and notify the client before adding another;
  • help the client meet their own obligations, including responding to individuals’ requests;
  • delete or return the data when the engagement ends.

The full terms are set out in the data processing agreement within our services agreement.

14. Children

Spendly is a workplace tool for our staff. It is not directed at children and we do not knowingly process children’s data through it.

15. Changes to this policy

We will update this policy when the application changes in a way that affects it. The version number and date at the top always reflect the current text. Where a change materially affects our team or our clients, we will tell them directly rather than relying on this page alone.

16. Contact and complaints

Controller: Milhas e Meridianos Lda.
Rua Alfredo Keil 1, 3.º Direito, 2675-210 Odivelas, Portugal
VAT / NIPC 517294168

Privacy contact: david@milhasemeridianos.pt

If you are unhappy with how we have handled your data, you may complain to the Portuguese supervisory authority, the Comissão Nacional de Proteção de Dados (CNPD), or to the authority where you live or work. We would appreciate the chance to resolve the matter with you first.

Back to SpendlyVersion 1.0 · 19 August 2026