Privacy
Usage stats are off until you say yes. Your artwork, file names and sizes never leave your Mac. Here is the complete list of what does.
Goal: the owner can see who has a licence, how the product is used, and what breaks, while users can trust exactly what leaves their computer.
Three separate streams, each with its own rule:
| Stream | Where it goes | On by default? | Identifies a person? |
|---|---|---|---|
| 1. Local log | User’s own Mac only | Yes | No (stays local) |
| 2. Licence records | Lemon Squeezy + our backend | Only when the user buys/activates | Yes: buyer email (needed for the sale) |
| 3. Usage stats + error reports | Our backend | No, opt-in | No: random install ID only |
1. Local log (always on, never sent automatically)
- File:
~/Library/Logs/Creasekit/creasekit.log, rotates at 2 MB, keeps 3 files. - Levels:
ERROR,WARN,INFO(default),DEBUG(Settings › Support › Log level › Detailed). - Format:
2026-10-07T13:28:31Z INFO [box] created dieline type=reverse_tuck L=80 W=50 H=120 mm ms=12 - “Copy log for support” button in the panel copies the last 500 lines so a user can email them by choice.
2. Who uses the product (licences)
Answered by Lemon Squeezy and the backend activations and moves tables.
A licence works on one Mac at a time (D-039): the plug-in checks it with the
backend when Illustrator starts and every 6 hours while it stays open, sending
only the licence key and the random activation ID. An offline Mac keeps Pro
for 7 days after the last good check.
| Field | Example | Why |
|---|---|---|
| Buyer email, name, country | from checkout | Invoice, support, tax |
| Plan | pro_yearly | Which features to unlock |
| Licence key (hashed in our DB) | sha256… | Validate activations |
| Activation ID per computer | random UUID | One Mac at a time per licence |
| Licence moves: time, from and to activation ID | 2026-10-09, random IDs | Allow 3 moves in 30 days; spot keys passed around |
| Plug-in version, Illustrator version, OS | 1.0.0, 30.7.0, macOS 15.6 | Support |
| First / last check-in date, date moved away | 2026-10-07 | Active-user count, one Mac at a time |
Free and trial users are not identifiable unless they opt in to stats, and even then only by a random install ID.
What is stored on the user’s own Mac
In ~/Library/Application Support/Creasekit/ (never sent anywhere except as
described above): licence.json (licence key, activation id, plan, last
check date), trial.json (trial start date), settings.json (random install
id, usage-stats answer, log level, default units and bleed for new boxes) and,
only while usage stats are on, events.jsonl (unsent events, at most 500).
The 3D preview makes a picture of the Artwork layer in memory to show the design on the folded box. It is never saved to disk, logged or sent anywhere, and is thrown away when the panel shows another box.
Development builds made with make plugin-selftest (never shipped) also use a
selftest folder there for test commands and answers; it holds panel state
only, no artwork.
3. Usage stats and error reports (opt-in)
First run shows one clear choice: “Help improve Creasekit by sending anonymous usage stats? [Yes] [No]”. Default is No. Changeable any time in panel settings. Turning it off also deletes the unsent queue.
Events and their only allowed fields:
| Event | Fields |
|---|---|
app_start | install_id, plugin_version, ai_version, os_version, arch, plan |
box_created | install_id, box_type, units (mm/in), duration_ms, plan |
box_invalid | install_id, box_type, rule_id (which size rule failed) |
panel_opened | install_id |
resize_applied | install_id, box_type, items_moved, items_flagged, duration_ms |
preflight_run | install_id, box_type, issue counts per rule_id (numbers only), duration_ms |
profile_imported | install_id (never the profile name or shop name) |
error | install_id, plugin_version, error_code, module, short message (no paths) |
crash | install_id, plugin_version, symbolicated stack (function names only) |
Never collected: user name, macOS username, computer name, file names or paths, document content, artwork, text found by preflight, exact box dimensions, print-shop profile contents, IP address storage (the backend drops the IP after rate-limiting), location.