Privacy Policy
Last updated:
ClientReportly collects only the data needed to run your account, takes payments through Paddle, and handles your clients' data only on your instructions.
Version: 2026-11-05. This is the same version identifier the Service records when you accept our Terms of Service, and it is shared by the Terms, this policy and our Data Processing Agreement.
1.1 Who we are
ClientReportly (clientreportly.com) is operated by Ömer Aydoğdu, a sole proprietorship in Türkiye, Yenikent Mahallesi, Nefise Sokak No:19, Odunpazarı/Eskişehir, Türkiye ("we", "us"). Contact: support@clientreportly.com.
We act in two roles:
- Controller for the data of people who use ClientReportly as an agency or as a team member ("Agency Users").
- Processor for the data that agencies put into ClientReportly about their own clients ("Client Data"). The agency decides why and how that data is used. We process it on the agency's instructions under our Data Processing Agreement.
1.2 What we collect
| Group | Data |
|---|---|
| GroupAgency Users | DataEmail address; agency name; password (stored only as a bcrypt hash) or, if you sign in with Google, your Google account ID and email; role (owner or member); language; branding (logo, colour, custom domain); team invitations; account security counters (failed sign-ins, temporary lock); the version of our Terms and the time you accepted them (new accounts only); subscription identifiers and status (Paddle customer and subscription IDs, plan, trial and billing dates). |
| GroupPayments | DataCard number, billing address and tax details are entered directly into Paddle's checkout. We never receive or store them. |
| GroupTechnical | DataIP address, kept only in memory for about 60 seconds to limit request rates, never stored. Error reports (technical details, request path, browser user agent) sent to Sentry when something fails. Security audit entries: which action happened, when, and the internal identifiers of the agency and of the user who caused it. They contain no names, addresses, IP addresses, credentials or content. |
| GroupClient Data (we are processor) | DataClient name, email and company; project names and descriptions; report content; files; approval notes and responses; activity entries; the portal link and an optional PIN (stored as a hash); and, for the agency's own use, how many times a project's portal link has been opened and when it was last opened. That is a count and a time only: no IP address, browser or device information is recorded for it, and it uses no cookie or local storage — the count is kept on our servers. |
| GroupConnected project tools (optional) | DataIf an Agency User connects a project management tool (today Trello, Asana or Notion): the access token and, where the provider issues one, the refresh token, both stored encrypted with AES-256-GCM, together with the token's expiry, the permissions granted and the connection's status; the connected account's provider ID and display name (from Trello also its username and full name; from Asana we ask for the display name only and not the email address; from Notion the connection's own bot ID and the name of the workspace you authorised it in, and nothing about the person who authorised it); the names and provider IDs of the workspace, board or project and of the lists or sections mapped to a stage; and, for the tasks in those lists or sections, their titles, which list or section they are in and, where the provider has such a field, whether they are marked complete. |
What we ask a connected tool for is read-only and smaller than what the tool holds: we do not request task descriptions or notes, comments, attachments, assignees or followers, custom fields, due dates, tags or links to the task, and the permissions we ask for do not let us change anything in your tool. Fields we did not ask for can still arrive inside a provider's answer; they pass through memory and are written nowhere — not to our database, not to our logs and not to our error-tracking service.
What we keep is smaller still: for each of the three stages, the number of tasks and a limited number of task titles (today at most 50), together with the board's name, the names of the lists or sections you mapped and the time we last read them. We keep that summary so the progress figure can be shown in the client portal and in your reports without calling your tool each time a page is opened. Task titles are part of what your own clients see: the portal shows a few of them per stage and the PDF report prints them in its completed list (see 1.5 and Annex I of the Data Processing Agreement).
Where an Agency User connects Notion, the same list reads in Notion's own words: the name and provider ID of each database you shared with us; the ID of the property you chose to track progress and the names of that property's options, which become the stages; and, for the rows that property places in a mapped stage, their titles and which of those options they carry. If you also set a project filter, so that one database can serve more than one project, we keep the ID of the filter property, its type and the value you filter on: an option ID for a select, status or multi-select column, or, for a title or text column, the text you typed, which can be the name of a client or of a project.
Where Notion is the connected tool, which pages and databases we can see at all is your own choice in Notion's permission screen: a database you did not share there is not visible to us, and we cannot widen that choice from the product — sharing one more means running the authorization again. The connection carries no write permission, so nothing in your workspace can be changed through it. We also ask Notion for its "No user information" capability: a person's name or email address is not part of what Notion answers with, and we request neither the "created by" and "last edited by" of a row, nor the content of a page (the blocks inside it), nor its comments.
1.3 Why we use it
| Purpose | Data | Legal basis (GDPR) |
|---|---|---|
| PurposeCreate and run your account, sign you in, keep it secure | DataAccount data, security counters | Legal basis (GDPR)Contract, Art. 6(1)(b) |
| PurposeRun subscriptions, trials and billing support | DataSubscription identifiers | Legal basis (GDPR)Contract, Art. 6(1)(b) |
| PurposeProvide the client portal, reports and email notifications for an agency | DataClient Data | Legal basis (GDPR)We act as processor; the agency's own legal basis applies |
| PurposeProtect the service, prevent abuse, find and fix errors | DataTransient IP, audit entries, error reports | Legal basis (GDPR)Legitimate interests, Art. 6(1)(f) |
| PurposeKeep a record that you accepted our Terms | DataAcceptance time and version | Legal basis (GDPR)Legitimate interests, Art. 6(1)(f) |
| PurposeMeasure and improve our public website | DataPage path and title, referrer, the approximate location Google derives from the IP address, and the cookie identifier described in 1.10 | Legal basis (GDPR)Consent, Art. 6(1)(a) |
| PurposeMeet legal obligations | DataRecords the law requires | Legal basis (GDPR)Legal obligation, Art. 6(1)(c) |
We use no advertising trackers. We do not sell personal data or use it for targeted advertising. We do not profile people and take no automated decisions with legal effect. We do not use your data, or anything we read from a project management tool you connect, to train, develop or fine-tune machine-learning models, and we do not use it to build features for other customers. We send transactional emails only (verification, password reset, invitations, notifications). We send no marketing email.
We use one analytics service, Google Analytics, on our public pages, and only if you accept it. Section 1.10 says what it sets, what we send to it and how to withdraw your consent.
To improve the service and measure how setup is going, we record your account's product milestones (for example, the date you added your first client or created your first report) on our own servers only, to produce aggregate statistics. These records are not sent to any third-party analytics service, are not used for marketing, and are deleted together with your account.
Where an agency connects Notion, Notion's own developer terms, in the version last updated on 2 April 2026, bind us to the same narrow use: what we read from a workspace may be used only to make that integration work — showing and refreshing a project's progress in the portal and in reports — and not for analytics, product metrics, logs, error reports or the training of machine-learning models. Those terms also require the terms of service and privacy policy of this product to stay reachable from inside it, which is what these pages are.
1.4 Agencies and their clients
If you are a client of an agency that uses ClientReportly, the agency is responsible for your data and for telling you how it is used. Contact the agency first to access, correct or delete it. We help the agency answer your request.
Agencies must have a lawful basis for the data they enter, must inform their own clients, and must not upload special categories of personal data (such as health data) unless the law allows it and they take responsibility for it.
A white-label portal may not show our name. This policy and the Data Processing Agreement still apply to the processing we do for the agency.
1.5 Who receives data
| Recipient | Purpose | Data | Location |
|---|---|---|---|
| RecipientContabo GmbH | PurposeServers (hosting) | DataAll data | LocationLauterbourg, France (EU) |
| RecipientResend | PurposeEmail delivery | DataRecipient address and message content, including verification and portal links | LocationEU (Ireland) |
| RecipientSentry | PurposeError monitoring | DataTechnical error details | LocationEU (Germany) |
| RecipientCloudflare | PurposeDNS; encrypted backup storage (R2) | DataDNS queries; encrypted database and file backups. We hold the key, Cloudflare cannot read them. | LocationDNS worldwide; the backup storage region is selected by Cloudflare |
| RecipientPaddle | PurposeIndependent seller and payment provider (Merchant of Record): payment, tax, invoicing | DataName, email and billing details entered at checkout | LocationUnder Paddle's own terms and privacy notice |
| RecipientGoogle | PurposeOptional sign-in | DataGoogle account ID and email | LocationUnited States |
| RecipientGoogle (Analytics) | PurposeWebsite analytics on our public pages, only if you accept it | DataThe data listed in 1.3 and 1.10 | LocationUnited States |
| RecipientTrello (Atlassian) | PurposeOptional integration, under the agency's own account | DataData listed in 1.2 | LocationUnited States |
| RecipientAsana (Asana, Inc.) | PurposeOptional integration, under the agency's own account | DataData listed in 1.2 | LocationUnited States |
| RecipientNotion (Notion Labs, Inc.) | PurposeOptional integration, under the agency's own account | DataData listed in 1.2 | LocationUnited States |
We have written data processing terms with our service providers. Paddle acts as an independent seller and payment provider under its own terms, and Google sign-in and any project management tool an agency connects (today Trello, Asana or Notion) are used at the agency's own choice and under the agency's own account with that provider; none of them is a sub-processor for Client Data. A provider is named here once it is available in the product. We share data with authorities only when the law requires it.
Google Analytics is used on our own public pages only. It is not a sub-processor for Client Data, it is never loaded in a client portal or on an agency's own domain, and nothing an agency enters in the product is sent to it.
1.6 International transfers
Our servers are in the EU (France). We operate from Türkiye and can reach the data from there. Where needed we rely on adequacy decisions, on the EU-US Data Privacy Framework for certified US providers, or on standard contractual clauses. For data subjects in Türkiye, the information required by Article 9 of the Turkish Personal Data Protection Law (6698) is in our Turkish KVKK notice (Aydınlatma Metni), at https://clientreportly.com/kvkk-aydinlatma. We have written data processing terms with our service providers. Backups are encrypted before they leave our servers.
1.7 How long we keep it
| Data | Retention |
|---|---|
| DataAccount and agency data | RetentionKept for as long as the account exists. A deletion request closes the account immediately; permanent destruction happens 14 days after the account owner confirms the request by email, and it can be cancelled during those 14 days. A request that is never confirmed expires after 7 days and the account is reopened. Ending a subscription does not by itself trigger deletion: you can delete your account and your data whenever you want. |
| DataClient Data | RetentionClients, projects, reports, generated PDFs and files deleted by the agency are permanently destroyed within 30 days. If the agency deletes its whole account, the 14-day process described above applies. |
| DataSign-in, verification and invitation tokens | RetentionStored as hashes; removed 30 days after expiry or use. Revoked refresh-token records are kept until 30 days after their own expiry so that reuse can be detected. |
| DataSecurity audit log | Retention365 days. When an agency is deleted, the identifiers in its entries are removed (anonymised), so that no entry can be linked to a person. |
| DataBackups | RetentionDaily database and file backups, encrypted before upload, stored off the server, automatically deleted after 30 days; restore has been tested. Deleted data can remain in backups for at most 30 days and is not used for anything else. |
| DataConnected project tools | RetentionThe cached stage summary (task counts and titles) is kept with the board mapping. Removing a connection deletes the tokens we stored and every board mapping of that agency together with its cached summary, and we try to unregister the change-notification subscriptions we created at the tool; with Notion there is no such subscription of our own to unregister, because a Notion subscription is created once for the whole integration rather than per connection, and a Notion mapping also holds the project filter you set, which is deleted with the mapping. Where the provider offers a way to end the authorization itself, we try that too: Asana and Notion do, and Trello's API has no equivalent, so a Trello permission stays in your Trello account until you remove it there. Two things this does not undo: PDF reports generated earlier still contain the titles printed into them, and deleted data can remain in backups for at most 30 days as described above. Ending or downgrading a subscription does not remove a connection; syncing stops, and the mapping and the last summary stay as they are. |
| DataInvoices | RetentionKept by Paddle as tax law requires |
| DataTerms acceptance record | RetentionAs long as the account exists |
| DataWebsite analytics | RetentionGoogle keeps it for 14 months. Your consent choice stays in your own browser for 12 months, and you can clear it sooner from the cookie preferences button in the footer. |
| DataSupport emails | Retention12 months |
1.8 Security
We encrypt data in transit (HTTPS with HSTS). We hash passwords and tokens, encrypt integration tokens, separate each agency's data from every other agency's, limit request rates, lock accounts after repeated failed sign-ins, strip secrets from error reports, and keep encrypted backups off our servers. No system is perfectly secure. If a personal data breach affects you, we notify you and the authorities as the law requires. We notify agencies without undue delay when their Client Data is affected.
1.9 Your rights
Wherever you live, you can ask us to access, correct, delete, restrict or export your personal data, to object to its use, and to withdraw consent where we rely on it. Email support@clientreportly.com. We handle these requests by email, by hand, and answer within 30 days. We may need to verify your identity first.
You can complain to a data protection authority: in Türkiye the Personal Data Protection Board (KVKK), in the EU the authority of your country, in the UK the Information Commissioner's Office.
1.10 Cookies and local storage
We use only what the service needs, plus analytics cookies if you accept them. On our public pages we show a consent banner: analytics stays off until you accept, nothing is loaded if you reject, and you can change your choice at any time from the cookie preferences button in the footer. We use no advertising cookies.
| Item | Where | Purpose | Lifetime |
|---|---|---|---|
| ItemRefresh token cookie (httpOnly) | WhereCookie | PurposeKeeps you signed in | LifetimeSet by the server (7 days) |
| Itemclientreportly.language | WhereLocal storage | PurposeRemembers your language | LifetimeUntil you clear it |
| Itemclientreportly.session | WhereLocal storage | PurposeRemembers that you signed in on this browser, so public pages do not ask the server for a session you do not have. It holds no token and no account details. | LifetimeRemoved when you sign out |
| Itemclientreportly.pending-plan | WhereLocal storage | PurposeRemembers the plan you chose while you verify your email | LifetimeRemoved after use |
| Itemportal_session_ plus the portal link token | WhereSession storage | PurposeClient portal session, one entry per portal you open | LifetimeUntil the tab closes (2 hours at most) |
| Itemclientreportly.consent | WhereLocal storage | PurposeRemembers whether you accepted or rejected analytics cookies, when you chose, and which version of this policy was published at the time. It holds no token and no account details. | Lifetime12 months, then we ask again |
| Item_ga, and _ga_ plus the measurement ID | WhereCookie | PurposeGoogle Analytics: tells one visit apart from another on our public pages. Set only after you accept, and removed when you withdraw. | Lifetime2 years |
The pricing and plan pages load Paddle's script, and the sign-in and registration pages load Google's sign-in script when it is enabled. Those providers can set their own cookies under their own policies.
Google Analytics loads only after you accept, and only on our own public pages: the home, pricing and about pages, these legal pages, the blog, and the sign-in and registration pages. It is never loaded in a client portal, in the agency app, in the admin area, on an agency's own domain, or on a page whose address carries a token, such as an email verification, password reset or invitation link.
What we send is the page path, its title and the referring address, never the query string that can follow a path. We send no account identifier and no User-ID, and nothing from the checkout, including anything our payment provider returns, reaches it. Google Signals and advertising personalisation are turned off for our property, so this data is not used for advertising, and we send no events to it from our servers.
1.11 Children
ClientReportly is a business service for adults. We do not knowingly collect data from anyone under 18.
1.12 Changes
We update this policy when our practices change. We post the new date here and tell account owners by email or in the app at least 14 days before material changes take effect.
1.13 Contact
support@clientreportly.com. Ömer Aydoğdu, Yenikent Mahallesi, Nefise Sokak No:19, Odunpazarı/Eskişehir, Türkiye.