Privacy Policy

Version 1.7 (beta) · Effective 6 November 2026 · Last updated 6 November 2026

This policy explains how personal data is processed when you visit pactkeeper.app, join the waitlist, or use the PactKeeper app (beta) in Discord or in your browser at activity.pactkeeper.app, including the Compliance Check. It also explains how we process data about you if another user names you as a party to a Deal (section 9). This policy is available in English and Ukrainian; if they differ, the English version prevails.

1. Controller

Samuil Macharashvili
c/o Autorenglück #26651
Albert-Einstein-Str. 47
02977 Hoyerswerda, Germany
E-mail: [email protected]

PactKeeper is currently operated by a private individual. No data protection officer has been appointed because the legal requirements for appointing one are not met. If the service is transferred to a company, we will inform you in advance (see section 14).

2. Overview

Purpose Data Legal basis (GDPR)
Delivering the website IP address, browser data, time of access Art. 6(1)(f) — secure, functioning website
Bot protection on forms Technical browser and device signals Art. 6(1)(f); § 25(2) no. 2 TDDDG
Contact requests E-mail address, message content Art. 6(1)(b) if related to a contract, otherwise Art. 6(1)(f)
Waitlist / updates E-mail address, consent records Art. 6(1)(a); consent and opt-out records: Art. 6(1)(c) with Art. 7(1), Art. 6(1)(f)
Analytics and advertising Cookie IDs, usage data, IP address Art. 6(1)(a); § 25(1) TDDDG — only with consent
Signing in to the app in the browser and keeping you signed in ID, username, display name and avatar from the sign-in provider you choose (Discord, GitHub or Google); session cookie Art. 6(1)(b); § 25(2) no. 2 TDDDG for the cookies
Providing the app (in Discord and in the browser) and creating Deals Account data from Discord, GitHub or Google, Deal data, signature data Art. 6(1)(b)
Carrying out Compliance Checks Uploaded files with aggregated campaign data, Compliance Reports Art. 6(1)(b)
Recording the hash of the agreed text of Deals with escrow; demo wallet, escrow and test payments (beta: Solana devnet only) Hash of the agreed text (Deals with escrow), wallet address and encrypted key of your demo wallet, balance, escrow deposits, payouts and refunds, transaction IDs Art. 6(1)(b)
Service notices (e.g. changes to the Terms, these Rules or this policy) Discord user ID Art. 6(1)(b); Art. 6(1)(c) where notice is required by law
Data about counterparties named in a Deal Name or Discord ID, role in the Deal, Deal terms Art. 6(1)(b) or (f) — see section 9
Security and prevention of misuse Logs, Discord IDs Art. 6(1)(f) — legitimate interest in a secure service
Legal obligations (e.g. tax and commercial records) As required by law Art. 6(1)(c)
Transfer to a company operator All data needed to continue the service Art. 6(1)(f) — see section 14

3. Website and server logs

Our website is hosted on Cloudflare Pages; DNS and content delivery are also provided by Cloudflare, Inc. (USA). When you open the site, the following is processed automatically: IP address, date and time, page requested, referrer, browser and operating system. This is necessary to deliver the site and protect it against attacks. Logs are kept for 30 days and then deleted, unless they are needed to investigate a specific security incident.

4. Contact, bot protection and links

E-mails to our addresses are forwarded via Cloudflare Email Routing; we send e-mails from our addresses via Brevo. Our contact form is protected by Cloudflare Turnstile, which evaluates technical browser and device signals to distinguish people from bots. It does not set advertising or tracking cookies. Accessing these signals is strictly necessary to provide the form you requested securely (§ 25(2) no. 2 TDDDG).

Our website links to our profiles on X, Telegram and GitHub. These are plain links; no data is sent to these services until you click them.

5. Waitlist and updates

You can join the waitlist with your e-mail address only. We use Brevo (Sendinblue SAS, France) and a double opt-in: you are added only after you click the confirmation link. We store the time of sign-up and confirmation and your IP address at that time, to be able to prove your consent. The confirmation e-mail is sent via Brevo; Brevo counts opens and link clicks of this e-mail only anonymously, without linking them to your address. In news e-mails we turn off open and click tracking.

You can unsubscribe at any time via the link in each e-mail or by writing to us. After you unsubscribe, we keep your e-mail address on a block list solely to make sure you are not contacted again. Retention: until you unsubscribe; the block list entry is kept for as long as we send updates.

6. Cookies, analytics and advertising

We use non-essential cookies and similar technologies only with your consent, which you give in our own consent banner. You can withdraw or change your consent at any time via "Cookie settings" in the footer. Withdrawal does not affect the lawfulness of processing before it.

Strictly necessary cookie. We store your choice in the cookie pk_consent for 12 months (consent version, your choices for analytics and marketing, and the time of your choice); it is valid for pactkeeper.app and its subdomains, so the app at activity.pactkeeper.app respects the same choice. This cookie is strictly necessary to respect your choice and requires no consent (§ 25(2) no. 2 TDDDG; Art. 6(1)(c) with Art. 7(1) GDPR). Your language and theme settings are stored only in your browser (localStorage) and are not sent to us. On the waitlist confirmation page, your browser also keeps, for the current tab only (sessionStorage), the confirmation status and whether the "Lead" event has already been sent.

Strictly necessary cookies in the app. If you use the app in your browser (activity.pactkeeper.app), we set two cookies that are needed to sign you in: pk_session keeps you signed in for 30 days (a random session key; we store only a hash of it, together with the sign-in method you used and a link to your avatar) and is deleted when you sign out; pk_oauth exists for at most 10 minutes during sign-in and protects it against forged requests (a random value, the chosen sign-in method and the page to return to); it is deleted as soon as the sign-in is completed. Both cookies are HttpOnly, are sent only over HTTPS and are not used for analytics or advertising. They are strictly necessary to provide the service you requested and require no consent (§ 25(2) no. 2 TDDDG; Art. 6(1)(b) GDPR). The app stores your language, theme and whether your balance is hidden only in your browser (localStorage). The app loads no analytics or advertising tools; for the server-side sign-up event, see "Sign-up in the app" below.

The banner has two categories, "Analytics" and "Marketing", both switched off by default. Google tools are loaded only if you allow both categories; the Meta Pixel is loaded only if you allow "Marketing". With your consent we use:

  • Google tag (gtag.js), Google Analytics 4 and Google Ads (Google Ireland Ltd., Ireland; Google LLC, USA). We use Google Consent Mode v2 in basic mode: until you consent, Google tags are not loaded and no data is sent to Google. Storage period: up to 2 years (Google Analytics), up to 90 days (Google Ads).
  • Meta Pixel (Meta Platforms Ireland Ltd., Ireland; Meta Platforms Inc., USA), to measure the effectiveness of our ads, including whether a visit led to a confirmed waitlist sign-up ("Lead" event). Storage period: up to 90 days.

Joint controllership with Meta. For collecting data via the Meta Pixel on our website and transmitting it to Meta, we and Meta Platforms Ireland Ltd. are joint controllers (Art. 26 GDPR). We have agreed with Meta on the allocation of responsibilities (Meta Controller Addendum). We are responsible for obtaining your consent and for informing you; Meta is responsible for its further processing and for handling rights requests concerning it. You can exercise your rights against either of us. Meta's further processing is governed by its own privacy policy.

Cookie Provider Purpose Category Storage period
pk_consent PactKeeper Stores your cookie choice Strictly necessary 12 months
pk_session PactKeeper (app) Keeps you signed in to the app in the browser Strictly necessary 30 days or until you sign out
pk_oauth PactKeeper (app) Protects the sign-in against forged requests Strictly necessary up to 10 minutes; deleted after sign-in
_ga Google Distinguishes visitors (Google Analytics) Analytics and Marketing up to 2 years
_ga_<ID> Google Keeps the session state (Google Analytics) Analytics and Marketing up to 2 years
_gcl_au Google Measures Google Ads conversions Analytics and Marketing 90 days
_fbp Meta Recognises the browser to measure our ads Marketing 90 days
_fbc Meta Stores the ad click ID if you came from a Meta ad Marketing 90 days

Events. With your consent, we also send Google and Meta which of our buttons you click (for example "Join the beta on Discord" or a link to X) and, after you confirm the waitlist, a "Lead" event. These events contain no e-mail address or other contact details. We do not use remarketing and do not pass contact data to Google or Meta (no enhanced conversions, no advanced matching). Google Analytics data is kept for 14 months.

Meta Conversions API. If you have allowed "Marketing" and then confirm your waitlist sign-up, our server also sends Meta one "Lead" event via the Meta Conversions API. It contains the event name and time, an event ID, the page address, your IP address, your browser's user agent and, if present, the Meta cookies _fbp and _fbc. We do not send your e-mail address or any other contact details. The shared event ID lets Meta count the sign-up only once, even if your browser sends the same event. Without "Marketing" consent, nothing is sent. Legal basis: your consent (Art. 6(1)(a) GDPR).

Sign-up in the app (server-side). If you have allowed both "Analytics" and "Marketing" on our website and then create a new PactKeeper account by signing in to the app in your browser (activity.pactkeeper.app), our server sends one sign-up event per account: to Google Analytics 4 via the Measurement Protocol, a "sign_up" event with the sign-in method used (Discord, GitHub or Google) and the identifier from your Google Analytics cookie _ga (only if this cookie exists); and to Meta via the Conversions API, a "CompleteRegistration" event with the event time, an event ID derived from a one-way hash of your account ID, the app address, your IP address, your browser's user agent and, if present, the Meta cookies _fbp and _fbc. We do not send your name, username, e-mail address, account ID or any other contact details. Signing in again later or linking another sign-in method sends nothing. Without both consents, nothing is sent; you can withdraw your consent at any time in the cookie settings, with effect for the future. Legal basis: your consent (§ 25(1) TDDDG; Art. 6(1)(a) GDPR).

7. PactKeeper app in Discord and in the browser

When you open PactKeeper in Discord, we receive from Discord via Discord OAuth (scope "identify"): your user ID, username, display name and avatar. We also receive the ID of the server where you use the app. We do not receive your e-mail address.

Sign-in in the browser. You can also use the app in your browser at activity.pactkeeper.app and sign in with Discord, GitHub or Google. You are redirected to the provider you choose, sign in there and confirm access; the provider then sends us: Discord (scope "identify") — user ID, username, display name and avatar; GitHub (no additional permissions) — user ID, login, name and avatar from your public profile; Google (scopes "openid" and "profile") — account ID, name and profile picture. We do not request or receive your e-mail address, your password or access to your repositories, contacts or other data. We store the provider and your ID with that provider to recognise you the next time you sign in. In "Profile → Sign-in methods" you can link several methods to one account. The provider shows its own sign-in and account selection page and processes data there as an independent controller under its own privacy policy.

Avatars. Your avatar is loaded directly from the servers of the sign-in provider (Discord, GitHub or Google). When the app shows an avatar, the browser of the person viewing it connects to that provider, which receives the viewer's IP address.

Invite links. When you create a Deal, you receive a one-time invite link (activity.pactkeeper.app/join/…). Whoever opens it and signs in becomes the other party to the Deal. Send it only to the intended person. The link works once and only while the Deal awaits signing (72 hours).

We also process the data you enter in a Deal: parties, terms, the selected Standard and Clauses, the chosen confirmation method, timeline, evidence you add and signature status. This data is stored on a server of Unesty Company in Frankfurt am Main, Germany.

Contract text. We do not receive the files you sign. We store the Deal data from which the agreed contract text is generated (the parties' names or company details as they entered them, the Deal terms and stages), so that both parties can download the same text again at any time. This data is kept for the periods in section 12. Each party is responsible for keeping its own signed copy; in a dispute, a party provides its copy and we compare it with the hash of the agreed text.

Service notices. We notify you about your Deals and about changes to the Terms of Use, the Pact Protection Rules and this policy by a direct message from the PactKeeper app in Discord; if a direct message cannot be delivered (for example, because you have disabled direct messages), by a notice in the app the next time you open it. We also publish the changes in the announcements channel on the PactKeeper Discord server and on pactkeeper.app. Other project news is published only in the announcements channel.

Blockchain hash. In Deals with escrow, the hash of the agreed text is recorded on the Solana blockchain when the escrow is set up; during the beta, only on the Solana devnet test network. In Deals without escrow, the hash is stored only in PactKeeper. The content of the Deal cannot be reconstructed from the hash, and the hash contains no names or other Deal data in readable form. Blockchain entries cannot be changed or deleted, so the hash remains after the Deal data has been deleted; without the Deal data, it can no longer be linked to you.

Demo wallet, escrow and test payments. During the beta, payments are possible only on the Solana devnet test network, using test tokens (tPACT) with no value. For this, PactKeeper creates a demo wallet for you and manages it for you: we store its address and its private key in encrypted form, record the starting balance and top-ups, and send transactions from it on your instructions (for example, a deposit into the escrow of a Deal). Payouts and refunds from escrow follow the confirmation rules of the Deal (section 8). We process the wallet address, balance, deposits, payouts, refunds and transaction IDs to show them in the Deal and in your wallet. The demo wallet cannot be used outside PactKeeper and its test tokens cannot be withdrawn or exchanged. Before payments with real value are introduced, we will update this policy (section 17).

Discord is an independent controller; your use of Discord itself is governed by Discord's privacy policy.

Is providing data required? Without the account data from your sign-in provider (Discord, GitHub or Google) and the Deal terms, a Deal cannot be created or carried out.

Evidence. Add only what is needed to prove performance. Do not add health data, ID documents or other sensitive data unless strictly necessary, and black out data about uninvolved persons where possible.

8. Compliance Check

The Compliance Check compares the data you upload with the selected Standard and Clauses and produces a Compliance Report. During the beta, data is provided only by uploading a file (CSV or Excel) exported from your advertising account; there are no direct connections to Reportator, Google, Meta or other services.

Aggregated data only. The Compliance Check is designed for aggregated campaign data (for example, budget, impressions, clicks, conversions per campaign). Please do not upload personal data of your customers. Files that appear to contain such data may be rejected or deleted.

Deletion of files. Uploaded files are deleted immediately after the Compliance Report is created. The Compliance Report is kept as part of the Deal.

Confirmation of performance. When creating a Deal, the parties choose how performance is confirmed: by a data service (during the beta, only the Compliance Check), by mutual confirmation of both parties ("Complete deal"), or by both. Each party may object within the period set in the Deal (by default 72 hours). If the parties chose confirmation by a data service only, the Compliance Report confirms performance and no party objects within that period, the Deal is deemed performed. In all other cases, if no party confirms or objects within that period, the Deal is marked as disputed.

No solely automated decisions. The Compliance Report is an automated comparison and serves as evidence, not as a final determination of the parties' rights. The parties themselves choose whether it is used to confirm performance, and each party can object to it. If the parties chose escrow, test tokens are paid out or refunded from escrow only when the Deal is confirmed in the way the parties chose (including automatically if no party objects within the agreed period) or when the parties agree on a settlement; during the beta these are test tokens with no value. PactKeeper therefore does not make decisions based solely on automated processing that produce legal effects concerning you or similarly significantly affect you within the meaning of Art. 22 GDPR.

Browser demo. On pactkeeper.app/standards/ad-budget/ your file is processed locally in your browser and is not sent to us.

9. If another user names you in a Deal

If another user creates a Deal with you as a counterparty, we receive data about you from that user (Art. 14 GDPR):

  • Source: the user who created the Deal.
  • Categories: your name or Discord ID, your role in the Deal, the Deal terms, and any evidence or Compliance Report that concerns you.
  • Purpose and legal basis: preparing and carrying out the Deal (Art. 6(1)(b)); if you do not join, our and the creator's legitimate interest in documenting the offer (Art. 6(1)(f)).

We inform you when you are first contacted about the Deal, at the latest within one month. A Deal that has not been signed by all parties is cancelled automatically after 72 hours; the data is deleted 30 days after cancellation.

10. Confirmation of the text and electronic signatures

If you sign the contract text with an electronic signature outside PactKeeper, you use a trust service provider of your choice (for example, Diia.Signature or Vchasno in Ukraine, or a qualified trust service provider in the EU). That provider verifies your identity and processes your identification data as an independent controller, under your own agreement with it and its own privacy policy. We do not choose this provider and do not receive your identification documents.

We do not receive the file you sign or any signature data. When you confirm a Deal, your browser calculates a hash (SHA-256) of your file and sends us only this hash and the file name; the file stays with you. We compare the hash with the hash of the agreed contract text and store the result. During the beta we do not receive or check electronic signatures (see Terms of Use, section 7). This is necessary to carry out the Deal (Art. 6(1)(b) GDPR).

11. Recipients and international transfers

The other party to a Deal sees the Deal data, the evidence added to the Deal and the Compliance Report.

Discord Inc. (USA) provides the platform on which the app runs and processes data as an independent controller under its own privacy policy.

GitHub, Inc. (USA) and Google (Google Ireland Ltd., Ireland; Google LLC, USA) process your data as independent controllers under their own privacy policies when you choose to sign in with them; they send us only the profile data described in section 7.

Solana blockchain. Hashes and test transactions recorded on the Solana network (during the beta: devnet only) are publicly visible to anyone and are stored by the network's nodes worldwide. They contain no Deal content in readable form. During the beta, we send these transactions and queries about wallet addresses to the network through the public devnet endpoint of the Solana Foundation (Zug, Switzerland; the European Commission has recognised Switzerland as providing adequate protection, Art. 45 GDPR).

We use service providers who process data on our behalf under data processing agreements (Art. 28 GDPR):

  • Cloudflare, Inc. — website hosting, content delivery, bot protection, e-mail forwarding;
  • Brevo / Sendinblue SAS, France — waitlist e-mails and sending e-mails from our addresses;
  • Unesty Company — hosting of the app backend and database in Frankfurt, Germany;
  • Backblaze, Inc. (USA) — storage of encrypted database backups in its EU data region (Amsterdam, Netherlands). Backups are encrypted on our server before upload; Backblaze has no key to read them.

Some recipients are located outside the EU/EEA:

  • USA (Cloudflare, Inc., Google LLC, Meta Platforms, Inc. and Backblaze, Inc.): transfers are based on the EU-US Data Privacy Framework where the recipient is certified, otherwise on the EU Standard Contractual Clauses (Art. 46(2)(c) GDPR).
  • USA — sign-in (Discord Inc., GitHub, Inc., Google LLC): when you sign in, you connect to the provider directly. Discord Inc., GitHub, Inc. and Google LLC are certified under the EU-US Data Privacy Framework; the exchange of sign-in data is based on that adequacy decision (Art. 45 GDPR).

The safeguards are publicly available:

If you have further questions, write to [email protected]. We do not sell personal data.

12. Retention

We delete personal data once it is no longer needed for its purpose, unless statutory retention obligations apply.

Data Retention
Server logs 30 days
Waitlist / block list until you unsubscribe / for as long as we send updates
Uploaded files (CSV, Excel) deleted immediately after the Compliance Report is created
Files you sign we do not receive them; only their hash is stored (see section 10)
Deal data (including the details from which the contract text is generated), evidence, Compliance Reports, wallet addresses and transaction IDs for the duration of the Deal and then until the statutory limitation period expires (generally 3 years from the end of the year in which a claim arose, §§ 195, 199 BGB)
Hashes on the blockchain cannot be deleted (see section 7); devnet records may be reset by the network operator
Deals not signed by all parties 30 days after automatic cancellation
Account data (Discord, GitHub, Google) and linked sign-in methods while you use the app; after you delete your account (section 15): 30 days in which you can restore it, then deleted
Sign-in session (pk_session) 30 days or until you sign out
Sign-in protection (pk_oauth) up to 10 minutes; deleted after sign-in
Demo wallet (address, encrypted key, top-ups) as for account data (devnet transactions remain public)
Contact requests until resolved; business correspondence 6 years (§ 147 AO, § 257 HGB)
Invoices and accounting records (if fees are charged) 8–10 years (§ 147 AO, § 257 HGB)

13. Security

We protect personal data with appropriate technical and organisational measures: all connections are encrypted (HTTPS), access to the server is restricted (key-only administrator access, firewall, protection against repeated failed sign-ins and request limits), session keys are stored only as hashes and the private keys of demo wallets only in encrypted form, and backups are encrypted before they leave the server.

14. Change of operator

If PactKeeper is transferred to a company founded or controlled by the operator, your data will be transferred to it so that the service can continue (Art. 6(1)(f) GDPR — our legitimate interest and yours in continuity of the service). We will inform you at least 30 days in advance; before the transfer, you may terminate your use of the service and request erasure of your data.

15. Your rights

You have the right to:

  • access your data (Art. 15),
  • rectification (Art. 16),
  • erasure (Art. 17),
  • restriction of processing (Art. 18),
  • data portability (Art. 20),
  • not be subject to decisions based solely on automated processing (Art. 22) — PactKeeper does not make such decisions (section 8),
  • withdraw consent at any time with effect for the future (Art. 7(3)).

Write to [email protected]. Data that the other party to a Deal needs to assert or defend legal claims (Deal data, evidence, Compliance Reports) is kept until the end of the retention period in section 12 and is then deleted.

Deleting your account. You can delete your account yourself in the app (Profile → Delete account) or by writing to us. You are signed out on all devices at once. For 30 days you can restore the account by signing in again; after that, your account data, sign-in methods and demo wallet are deleted permanently. Deletion is possible when you have no open Deals or disputes. Records of completed or cancelled Deals that the other party may need are kept for the period in section 12 without a link to your account. If you want your data deleted immediately, without the 30-day period, write to us.

Right to object (Art. 21 GDPR)
Where we process your data on the basis of legitimate interests (Art. 6(1)(f)), you have the right to object at any time, on grounds relating to your particular situation. We will then stop processing unless we can demonstrate compelling legitimate grounds that override your interests, or the processing serves legal claims.
You can object to processing for direct marketing at any time without giving reasons.
To object, write to [email protected].

You have the right to lodge a complaint with a data protection supervisory authority, in particular in the EU Member State where you live or work or where you believe the infringement took place (Art. 77 GDPR).

Users in Ukraine: you also have the rights under the Law of Ukraine "On Personal Data Protection" and may contact the Ukrainian Parliament Commissioner for Human Rights.

Users in the United States: you can request access to or deletion of your data at [email protected]; we will answer such requests regardless of your state of residence.

16. Age

PactKeeper is only for people aged 18 or older. We do not knowingly collect data from minors. If we learn that we have, we delete it.

17. Changes

We will update this policy when our processing changes, for example when we move blockchain records or payments to the Solana mainnet, add connections to data sources (such as Reportator) or advertising platforms, or launch Pact Protection. We will notify users of material changes in advance as described in section 7 (service notices). The current version is always available at pactkeeper.app.

Changes in version 1.7: the cookie pk_consent is valid for pactkeeper.app and its subdomains; server-side sign-up event in the app for Google Analytics 4 and Meta, only with consent for analytics and marketing (section 6).

Changes in version 1.5: sign-in in the browser with Discord, GitHub or Google (section 7), app cookies pk_session and pk_oauth (section 6), invite links (section 7), demo wallet and escrow with test tokens (sections 7 and 8), GitHub, Google and the Solana network access as recipients, transfers to the USA (section 11), retention periods (section 12), deleting your account in the app (section 15).

← PactKeeper