Privacy policy
cpcp is an independent project. This page describes what the code actually does: what data is processed, how long it is kept, and who can reach it.
Last updated: 2026-10-19
On this page
What we collect and why
When you send something, cpcp temporarily stores the text or files you submit so it can create a pickup code and hand them to the recipient. Text is limited to 64KB; a single file to 100MB; one parcel holds at most 20 files and 200MB in total.
It also stores parcel metadata: the 6-digit pickup code, parcel type, creation and expiry time, the number of successful claims, and file keys and sizes.
For rate limiting and abuse prevention, the app writes only a salted hash of your client IP to KV. The raw IP is not stored in the application database. Hourly counters last 3600 seconds; failure counters last 600 seconds.
Page views use a first-party aggregate count only: page category, language, and time. The request does not include the URL, query string, pickup code, cookie, device identifier, or any file information. Counts are written to Cloudflare Analytics Engine, with a D1 daily-aggregate fallback until the account enables it, and are not used for ads or cross-site tracking.
You can refuse this count: Do Not Track and Global Privacy Control are respected. You can also append ?no-stats=1 to any page, or run localStorage.setItem('cpcp_no_stats','1') in the browser console.
How long we keep it
Parcels expire after one hour by default, and a parcel can be claimed successfully at most 10 times. Expiry is checked on each request, and a scheduled job cleans up every minute.
File objects in R2 have up to 10 minutes of physical-deletion grace after expiry so downloads already in progress can finish. After that, text, files, and parcel metadata are deleted together and cannot be recovered.
Who can see it
The service can access parcel content while it is in transit and in temporary storage. This is not end-to-end encryption: the pickup code is the only credential, and anyone who guesses or obtains it can retrieve the content.
The app does not run automated content scans. We may inspect related content to investigate abuse or comply with the law.
Cloudflare and cross-border processing
cpcp runs on Cloudflare: Workers handle requests, D1 records parcels, R2 stores files, and KV holds rate-limit hashes. Cloudflare, as an infrastructure provider, may process request metadata under its policies and transmit it across its global network.
When Turnstile is triggered, the challenge is handled by Cloudflare.
Cookies and local storage
- cpcp_lang cookie: remembers your language preference for one year.
- localStorage cpcp.lang: also remembers your language preference; clear your browser data to remove it.
- localStorage cpcp.sent.v1: at most 5 recent pickup codes and times. It stays in this device browser and is never uploaded.
Your choices
You can clear cookies and local storage at any time; this removes your language preference and recent-send list.
Parcels expire after one hour and storage is cleared within 10 minutes after that. There is currently no way to delete an individual parcel early; write to hello@1tools.vip if you need help.
Rights granted by your local law, including access and deletion, are not affected.
What we do not do
- No accounts, and no collection of names, phone numbers, or contact lists.
- No ads and no third-party analytics scripts; only the first-party aggregate count described above.
- We do not sell personal data.
Children
cpcp is not directed at children and does not intentionally collect their personal information. Contact us if you believe a child is using it.
Changes
This notice may change as the service changes. Material changes update the Last updated date on this page.
Contact
Privacy questions or requests: hello@1tools.vip. cpcp is an independent project.