toilville.com + spelwork.com: launch the FSE homepages #167

Open
opened 2026-09-28 19:37:40 +00:00 by forge-ci · 2 comments
Member

The blocks and theme have been merged (rituals-wp #159, toilville-design #23), and #102 / #164 closed the fidelity gaps. Nothing tracks the launch itself.

Acceptance criteria

  • The 11 toilville/* Gutenberg blocks render in live WordPress through the Toilville Home and SPELWork Landing patterns.
  • The joinband-cta newsletter form posts somewhere real: set its formAction (Mailchimp or CF7).
  • Post-launch polish: the Writing section's Latest and Build logs tabs.

Out of scope

The original wish also asked for a self-hosted DM Mono font. That no longer applies, because DM Mono was dropped on 2026-09-11 and code uses the system monospace stack.

Related: #161 (publish the 38 news drafts, which fills the Latest band). Tracked as forge wishes b2c156ca and a0dbe3e7 (duplicates).

The blocks and theme have been merged (rituals-wp #159, toilville-design #23), and #102 / #164 closed the fidelity gaps. Nothing tracks the launch itself. ## Acceptance criteria - [ ] The 11 `toilville/*` Gutenberg blocks render in live WordPress through the **Toilville Home** and **SPELWork Landing** patterns. - [ ] The joinband-cta newsletter form posts somewhere real: set its `formAction` (Mailchimp or CF7). - [ ] Post-launch polish: the Writing section's **Latest** and **Build logs** tabs. ## Out of scope The original wish also asked for a self-hosted DM Mono font. That no longer applies, because DM Mono was dropped on 2026-09-11 and code uses the system monospace stack. Related: #161 (publish the 38 news drafts, which fills the Latest band). Tracked as forge wishes `b2c156ca` and `a0dbe3e7` (duplicates).
Owner

Status (2026-10-20): the repo side is done. The blocks and theme are merged, and #164 closed the fidelity gaps.

What's left is manual and in WordPress, and it's on me:

  1. Choose the newsletter provider (Mailchimp vs CF7) and set a real formAction. The launch depends on this, so it's first.
  2. Place the 11 toilville/* blocks in the Toilville Home and SPELWork Landing patterns.

The Latest and Build-logs polish moves to its own issue. Of the duplicate wishes b2c156ca and a0dbe3e7, one should be closed.

**Status (2026-10-20):** the repo side is done. The blocks and theme are merged, and #164 closed the fidelity gaps. What's left is manual and in WordPress, and it's on me: 1. Choose the newsletter provider (Mailchimp vs CF7) and set a real `formAction`. The launch depends on this, so it's first. 2. Place the 11 `toilville/*` blocks in the Toilville Home and SPELWork Landing patterns. The Latest and Build-logs polish moves to its own issue. Of the duplicate wishes `b2c156ca` and `a0dbe3e7`, one should be closed.
Owner

Decided (Peter, 2026-10-28): Mailchimp. This was the item blocking the launch — "the launch depends on this, so it's first" — so acceptance criterion 2 is now a task rather than a question.

CF7 would have kept subscriber data self-hosted, which is the house default for most things. It loses on the thing that actually matters here: CF7 is a contact form, not a list. It sends mail to an inbox and leaves you with no audience, no double opt-in record, no unsubscribe handling and nothing to send a newsletter from. A launch band that collects addresses into a mailbox is a band that quietly does nothing. Mailchimp is the right call and the trade-off is accepted deliberately, not overlooked.

What to set

The joinband-cta formAction is the Mailchimp embedded-form post URL, from Audience → Signup forms → Embedded forms. It looks like:

https://<dc>.list-manage.com/subscribe/post?u=<user_id>&id=<list_id>

u and id are account identifiers rather than secrets, so they are fine in the block attribute and in git.

Three things that are easy to miss

  1. Copy the honeypot field, not just the action. Mailchimp's embed includes a hidden input named b_<user_id>_<list_id> inside an off-screen div. It is the only bot protection on an embedded form, and pasting just the action URL without it is the usual reason an embedded form starts collecting junk addresses within days.
  2. Turn on double opt-in. It is the honest default, it keeps the audience clean, and it gives a consent record — which matters more than usual here given everything else in this house is built on explicit grants.
  3. Name Mailchimp in the privacy policy. Subscriber addresses leave the tenant for a US third party. That is the cost of the decision above and it should be written down where a reader can see it, not just in this thread.

What this unblocks

Acceptance criterion 2 becomes: set the formAction, submit one real address, confirm it lands in the audience and that the confirmation mail arrives. Criterion 1 — placing the eleven toilville/* blocks in Toilville Home and SPELWork Landing — was waiting behind this decision and is now clear to start.

**Decided (Peter, 2026-10-28): Mailchimp.** This was the item blocking the launch — "the launch depends on this, so it's first" — so acceptance criterion 2 is now a task rather than a question. CF7 would have kept subscriber data self-hosted, which is the house default for most things. It loses on the thing that actually matters here: CF7 is a contact form, not a list. It sends mail to an inbox and leaves you with no audience, no double opt-in record, no unsubscribe handling and nothing to send a newsletter *from*. A launch band that collects addresses into a mailbox is a band that quietly does nothing. Mailchimp is the right call and the trade-off is accepted deliberately, not overlooked. ## What to set The `joinband-cta` `formAction` is the Mailchimp embedded-form post URL, from **Audience → Signup forms → Embedded forms**. It looks like: ``` https://<dc>.list-manage.com/subscribe/post?u=<user_id>&id=<list_id> ``` `u` and `id` are account identifiers rather than secrets, so they are fine in the block attribute and in git. ## Three things that are easy to miss 1. **Copy the honeypot field, not just the action.** Mailchimp's embed includes a hidden input named `b_<user_id>_<list_id>` inside an off-screen div. It is the only bot protection on an embedded form, and pasting just the action URL without it is the usual reason an embedded form starts collecting junk addresses within days. 2. **Turn on double opt-in.** It is the honest default, it keeps the audience clean, and it gives a consent record — which matters more than usual here given everything else in this house is built on explicit grants. 3. **Name Mailchimp in the privacy policy.** Subscriber addresses leave the tenant for a US third party. That is the cost of the decision above and it should be written down where a reader can see it, not just in this thread. ## What this unblocks Acceptance criterion 2 becomes: set the `formAction`, submit one real address, confirm it lands in the audience and that the confirmation mail arrives. Criterion 1 — placing the eleven `toilville/*` blocks in Toilville Home and SPELWork Landing — was waiting behind this decision and is now clear to start.
Sign in to join this conversation.
No description provided.