Charming Seal·Contact
Three ways to reach us. Pick the right one.
Charming Seal is free software with nobody staffing a desk behind it. That makes the channel you choose matter more than it usually would. Sent to the right place, a message gets read and acted on.
Where to write
What belongs in each, and what it costs to guess.
A bug sent to the inbox moves slower. A security hole sent to the issue tracker puts other people's shops at risk.
Open an issue on the repo
Anything reproducible belongs in the issue tracker on the GitHub repo: a route that errors, a webhook that never lands, a setting that will not save. Feature requests go there too, in the open, where somebody else can agree with you or send the patch. Search the closed issues first. Expect it to be read, and fixed when there is time to fix it.
Report it privately. Never in public.
Use the private route in SECURITY.md. Do not open an issue, and do not post it anywhere else first. Every copy of this software runs on somebody's own server, so a payment bug made public before there is a fix is a bug published against every shop running that version, including the ones with nobody watching. Give the fix a chance to ship first.
hello@charmingseal.com
Press, licensing, legal, privacy requests, sponsorship, and anything that does not fit the other two. It is the one address for all of it, and there is no desk behind it. Say what you want in the first two lines and it stands a better chance of a reply.
Before you write
The answer is often already written down.
Three places worth a look. Between them they cover most of what arrives in the inbox.
| How it works | Installing it, the environment values it needs, deploying, and taking a first order in Stripe test mode. |
| API docs | Every route, the Authorization header, and where a shop's API keys are made. |
| The repository | The README on what ships today and how to run it locally, plus the issues somebody may have filed before you. |
If it is a bug, paste these four lines in.
What I ran the command, and the page or route I opened What happened the exact error text, copied, not paraphrased Node version node -v (20 and 22 are the supported ones) Stripe mode test or live
A report with those four lines can be diagnosed. One that says it does not work cannot. Screenshots help. So does saying what you expected to happen instead.
What to expect
The terms, said once and plainly.
There is no support contract, and no queue with your ticket in it. This is MIT licensed software maintained in the hours somebody has. Replies happen when they happen. Some do not happen at all, and a public issue that anyone can find and answer will usually beat an email for that reason.
If your shop needs somebody contractually obliged to pick up the phone at three in the morning, pay a hosted platform for that. It is a fair thing to want, and this is the honest trade for keeping the fees and the data.
Start at the source
Most conversations begin in the code.
The repository holds the issue tracker, the security policy and the licence. It is also the quickest way to find out whether the thing you noticed is already known.