etsy-listing-kit
IN BUILD"One design file, all the Etsy listing assets — built for embroidery sellers." — BHD Labs README (Etsy Patternator line); full context in [`experiments/etsy-listing-kit/docs/intent.md`](../../../experiments/etsy-listing-kit/docs/intent.md)
STAGES
- proposal07-25
- requirements07-25 ↻ 07-30
- design07-25
- tasks07-25
- build—
- archived—
CAPABILITIES — 2 IN ONE CHANGE
- paid-asset-pack4 requirements
- revenue-target-test1 requirement
OUTCOMES — AND HOW EACH IS MEASURED
- ✓1.1User can upload a valid PNG/JPG/SVG and see it accepted with a thumbnail *(Upload · valid file)* — verified live walkthrough 2026-07-27; UX bug on submit scroll tracked in #336not stated
- ○1.2User gets a clear, non-technical error on an unsupported/oversized file — no order created *(Upload · bad file)*not stated
- ✓1.3User sees a watermarked preview of all 6 curated images with price + what they get *(Preview the pack)* — verified live 2026-07-27; layout/crop feedback open in #335/#330 (partly addressed by #337 restyle, re-verify). Preview-reveal feedback (scroll/focus/announce, #336) added by change `elk-preview-feedback` 2026-07-30 — include in the next production walkthrough (5.4)not stated
- ✓1.4User completes a one-time $3 Stripe payment (test mode) and lands on a success URL tied to their order *(Complete payment)* — verified stronger than spec: **live** $3 payment 2026-07-27 (order `0484a635-a662`, `pi_3TxrgUKdCjejJ0FM…`), success URL tied to ordernot stated
- ○1.5User who cancels checkout returns to the preview with upload intact and no charge *(Cancel payment)*not stated
- ✓1.6A signature-valid `checkout.session.completed` marks the order paid, builds the un-watermarked zip, exposes a signed download, sends one email *(Webhook fulfils once)* — live receipt 2026-07-27: paid 16:47:28Z → fulfilled 16:47:34Z, event id + output stored (elk_orders row `0484a635`), but `email_message_id` null (`RESEND_API_KEY` landed in Vercel after that deploy). **CLOSED 2026-08-08 on live data:** every order from 2026-08-03 onward carries a real `email_message_id` with `email_error` null (`3eeb0ffb`, `18b148bd`, `3f241132`, `83e5087d`) — the email half is verified in production, all 6 lifetime orders fulfilled, 0 refundsnot stated
- ○1.7A duplicated Stripe event/session does not double-fulfil, double-email, or double-count *(Duplicate webhook)*not stated
- ○1.8A paid buyer can re-open their signed link and re-download within 7 days, no account *(Retrieve later)*not stated
- ○1.9`pnpm revenue:test` prints red (target/actual/gap/purchases/AOV/days/run-rate) while live revenue < $100 *(Revenue red)*not stated
- ○1.10`revenue:test` counts only live-mode, post-launch, refund-adjusted `etsy-listing-kit` payments; green only on real attainment *(Only qualifying revenue / green on real)*not stated
WHERE THE SOURCES DISAGREE
6.3 — the change says 6.3 still expects work on #334; the record shows #334 merged on 2026-07-27.
- a commit for #334 is on this branch, dated 2026-07-27
6.3 — the change says 6.3 still expects work on #363; the record shows #363 merged on 2026-08-07.
- a commit for #363 is on this branch, dated 2026-08-07
6.3 — the change says 6.3 still expects work on #364; the record shows #364 merged on 2026-08-07.
- a commit for #364 is on this branch, dated 2026-08-07
WHAT HAPPENED
- TASKS
proposal and specs and design and tasks landed
2026-07-25 · 1 pull request- #331feat(etsy-listing-kit): OpenSpec change + transactional foundation
5 days quiet — nothing touched this change
- ↺ BACK TO SPECS
docs: truth-up etsy-listing-kit tasks.md + always-on rule to keep task lists honest
2026-07-30 · 3 pull requests- #338docs: truth-up etsy-listing-kit tasks.md + always-on rule to keep task lists honest
- #345fix(elk): scroll, focus, announce when previews land
- #347chore(openspec): archive elk-preview-feedback + fold spec delta into parent
8 days quiet — nothing touched this change
- BUILD
fix(etsy-listing-kit): repair broken Google Ads conversion tracking
2026-08-07 · 1 pull request- #363fix(etsy-listing-kit): repair broken Google Ads conversion tracking
- BUILD
fix(etsy-listing-kit): reset ad burst to 2026-08-08 + route back from result
2026-08-08 · 1 pull request- #365fix(etsy-listing-kit): reset ad burst to 2026-08-08 + route back from result
History read from a manifest built at 2026-09-30 (09e7bcc).
6 pull requests, found by commits touching the change folder