1.4 Add Subscription
Make the manual path cheap enough that an avoider actually finishes it.
Specified with the template fixed on the etalon, node 1.1 Welcome. Source: docs/nodes/1-4-add-subscription.md. Composition from the block bank, type B. Supersedes this node's section of onboarding.md.
Purpose and jobs
Today the manual path fails not because people cannot do it, but because it is fragmented and tedious: statements, app stores, email, and every service's own settings (CJM As-Is, phase 3). This node is the whole reason D2 is credible.
/start/add during onboarding, /add from Home later.Content blocks
| # | Block | Carries | From the bank |
|---|---|---|---|
| 1 | Step chrome: back | GC1 | TAKE, DIFFERENTLY |
| 2 | Search field, focused on arrival | Phase 3 barrier | TAKE (IFTTT) |
| 3 | A row of the most tracked services as tiles with real logos | D2, growth zone 2, Phase 3 barrier | TAKE, DIFFERENTLY: ReSubs uses its preset count as a boast, we use it as evidence that the manual path is not punishment |
| 4 | The form, prefilled from the chosen preset: name, price, billing cycle, next charge | D2, J-MAIN | TAKE, DIFFERENTLY: a blank form is the version people abandon; ours is a confirmation, not data entry |
| 5 | Save, primary | J-MAIN | TAKE |
| 6 | "Add another", quiet, after saving | J-MAIN | TAKE: the one-at-a-time loop has to be cheap or the manual path stops at the first entry |
| 7 | Fully manual entry, for anything not in the catalogue | D2 | TAKE |
Named and not added: category, image upload, SKU and other catalogue fields (Square) - category is derived, not asked, and every extra field is a reason to close the tab. Also not added: a notes field (Subo), a tracker feature for people who enjoy trackers.
States, filters, the one action
| Node | State | Reads like | Trigger |
|---|---|---|---|
| 1.4.1 | Preset library loading | Skeleton tiles, the search field already usable | Catalogue not yet loaded |
| 1.4.2 | Presets unavailable | The catalogue is down, the manual form still works and is offered directly | Catalogue request failed |
| 1.4.3 | No preset matches | "We do not have this one yet" plus the manual form prefilled with what was typed | Search returned nothing |
| - | Saved | "Add another" and "Done" side by side | A save succeeded |
The three failure states all end in the same place: the manual form. Nothing on this screen can leave a person unable to add a subscription. Filters and facets: none, the catalogue is browsed by search and by the popular row.
Primary CTA: "Save" on the form, then "Done" with "Add another" beside it. During onboarding, done leads to node 1.5; afterwards it leads to node 2.6.
Responsive. Mobile: search, then a two-column tile grid, then the form full width. Desktop: a wider tile grid; the form stays a single column so the field order cannot be misread.
Emotional support
No mechanism from the table has this node as its home. E1 through the voice rules of every state: no service is described as a waste, and an empty catalogue result is our failure, not the person's. Nothing else is claimed here.
SEO, locked, open
SEO. noindex, no schema. Private and transactional.
Locked: search plus tiles, the prefilled form, the cheap loop, three failure states that all land on the manual form. Open ?: the real size of the preset catalogue at launch (the copy says 400+ services). Resolving input: the catalogue build.
Done at the wireframe rebuild, 2026-08-05: the "Most tracked" tile row is on the screen (block 3, which the July build skipped straight past), and the Category select is off the form. Category is derived, not asked, and it was one of the fields this node names and does not add.
Grey screen: wireframes/add-subscription.html.