Test and Live
Build on the test Wall, then copy the tool to the live Wall and ship.
The Wall has two environments, both on toolaby.app: Live, and Test under /test — the dashboard at toolaby.app/test/dev, a workspace's buyer pages at an address the Wall makes for it, like quiet-otter-4172.toolaby.app/test/… — as Stripe keeps its test mode under dashboard.stripe.com/test, and Clerk gives each development instance an address of its own. The workspace's name is its address on Live: <workspace>.toolaby.app. Each has its own dashboard, buyers, prices and keys. Nothing on Test is real: buyers pay with Stripe's test cards, and Stripe runs in test mode.
The mode is in the dashboard's top bar. On Test, every page carries a stripe saying so.
You have one account for both, kept on Live: Test signs you in through Live. When you switch account or sign out on Live, Test does the same the next time you open or return to one of its pages.
Test needs nothing to connect: a workspace has a Stripe test account from its first minute, made by the Wall, and card payments switch on a minute or two later. Configure → Payments on Test shows it. Live is your own Stripe account, connected there once.
On Test every feature is on, whatever your plan, and nothing is billed, except mail from your own domain, which is set up on Live (why). Your plan is chosen on Live. See Plans.
The tool key
An extension holds one string, the tool key: tk_test_… from Test, tk_live_… from Live. It is the whole configuration: which tool, which Wall, and the workspace's public key. The client refuses a key that is not a tool key at startup.
A key works from any extension until you name yours. You name it with its Chrome Web Store listing, under the tool's Settings → Store, or by choosing a copy on the tool's Keys page, which lists the extensions that connected without the wiring's key. From then on the key works from:
- the store copy;
- every copy whose manifest carries the wiring's
key; - the copy you chose on the Keys page, if any.
Any other extension is refused with 403 forbidden_origin, and the Keys page lists it by id with Use this copy instead. Nothing an extension sends names it for you.
Going live
- On the tool's Keys page, select Copy to Live. The tool, its Free plan, features and prices are created on the live Wall. Prices need Stripe connected there.
- In the extension's folder, run
npx -y toolaby@latest wire <tool-id> --live --force. It writes the live key. The manifest's addresses are the same on both sides. - Build, run
npx -y toolaby@latest pack, and upload the zip to the Chrome Web Store.
Ship to the Chrome Web Store has each step, what you see when it worked, and updates.
Copy again whenever Test has something new. Live is never copied back to Test.
What differs per side
| Test | Live | |
|---|---|---|
| Dashboard | toolaby.app/test/dev | toolaby.app/dev |
| Buyer pages | an address made for the workspace: quiet-otter-4172.toolaby.app/test/… | <workspace>.toolaby.app/… |
| Stripe | test mode; an account the Wall makes for the workspace | your account, connected once |
| Tool key | tk_test_… | tk_live_… |
| API key | wk_test_… | wk_live_… |
Webhook livemode | false | true |
| Buyers, customers, members | separate | separate |
Membership is per side: invite a person on each Wall you want them in. See Members.