Skip to content

Keep Etsy keys while the app awaits Etsy's approval - #1432

Merged
helpcodeai merged 4 commits into
mainfrom
feat/etsy-guide-approval-wait
Nov 2, 2026
Merged

helpcodeai merged 4 commits into
mainfrom
feat/etsy-guide-approval-wait

Conversation

@helpcodeai

Copy link
Copy Markdown
Contributor

Summary

The Etsy guide asked for the callback URL before Etsy lets anyone add one: a new personal app stays Pending Personal Approval, and its page, where Callback URLs are, opens only after Etsy approves it. In the last 21 days 378 Cloud workspaces hit Etsy's 403 for an app not active yet, and only 36% of them ended with a working connector (details in #1431). The guide now follows Etsy's real order and keeps the keys while the user waits.

Changes

  • Two new optional setupGuide step fields (backend type, frontend type, validator, docs):
    • saveAndCheck: Continue saves the step's fields on the connector (unfinished, needs_authorization, so the AI cannot use it yet) and asks the provider about the keys with the adapter's checkBeforeAuthorization.
    • waitForProvider: the step after it, shown only while the provider refuses the keys, skipped once it accepts them. It checks again when it opens and whenever the user returns to the tab (at most once a minute, no timer), offers "Check again" and a way back to the keys; Continue opens once the keys are accepted.
  • The saved connector id goes into the address (?connector=) and the saved progress, so a user coming back from Etsy's approval e-mail days later continues with the same connector instead of creating a second one.
  • A refusal at the last step of such a guide (a connector finished from a chat, a skipped step) saves the keys and opens the wait step instead of showing an error.
  • Etsy guide: create the app → copy the two keys → wait for Etsy's approval → add the callback URL → sign in with Etsy. Etsy's current labels (Personal Apps, Shared Secret) in the guide, field help, prerequisites, instructions and the 403 hint; new problem answers (app already in review, name not clickable while pending, Active but refused, rejected app, long wait).
  • Stepper: with more than four items, only the current title is shown (others in a tooltip) instead of titles cut to one letter.
  • UI strings in EN, DE, IT.

Type

  • Bug fix
  • New feature

Testing

  • Added/updated unit tests
  • Tested manually (screenshots of every step at 1280 px and 390 px, light and dark, with the real etsy.json guide)

Commands and results (worktree from origin/main, Node 26):

  • repo root: node scripts/validate-adapters.mjs --warn → 705 passed, 0 failed, 1442 warnings (same count as on main, none from Etsy); node scripts/regenerate-catalog.mjs → no diff; node scripts/adapter-count.mjs --check → OK; node --test scripts/validate-adapters.test.mjs → 31 passed.
  • packages/backend (after prisma generate): npx tsc --noEmit -p tsconfig.json → exit 0; npm run lint → no changes; npm test -- --maxWorkers=4 → 966 suites passed, 6 skipped; 29848 tests passed, 1804 skipped.
  • packages/frontend: npx tsc --noEmit -p tsconfig.json → exit 0; npm run lint → 0 errors (49 existing warnings, none in the changed files); npx playwright test tests/e2e/connector-setup-guide.spec.ts tests/e2e/connector-guided-setup.spec.ts → 19 passed (new: approved app skips the wait, pending app waits with keys saved and goes on after a reload once approved, "Check again" and the way back to the keys, existing connector refused at the last step lands on the wait); npx playwright test tests/e2e/i18n.spec.ts → 55 passed.

Not verified: the live flow against a real Etsy app (no Etsy seller account here). Etsy answers the same 403 for a pending app and a wrong shared secret, so the wait step explains both.

Cloud and self-hosted behave the same: the setup page and the check run on the instance; self-hosted users see their own callback URL.

Checklist

  • My code follows the existing code style
  • I have tested my changes locally
  • I have updated documentation (if applicable)
  • All existing tests pass (npm test)
  • This PR has a descriptive title

Related Issues

Fixes #1431

The Etsy guide asked for the callback URL before the keys, but Etsy opens an
app's page, where callback URLs go, only after it approves the app. Users
stalled at that step and lost the keys they had typed.

The guide now follows Etsy's order: create the app, copy the two keys (shown
while the app is pending), save them and ask Etsy about them, wait for the
approval with the keys kept, then add the callback URL and sign in. Two new
setupGuide step fields drive it: saveAndCheck stores the values on the
connector and runs checkBeforeAuthorization; waitForProvider is shown only
while the provider refuses the keys and checks again when the user comes
back to the page. The saved connector id goes into the address and the saved
progress, so a user returning days later continues with the same connector.

Also: a compact stepper for guides with more than four steps, and Etsy's
current labels (Personal Apps, Shared Secret) in the guide and field help.
@helpcodeai
helpcodeai enabled auto-merge (squash) November 2, 2026 08:56
@helpcodeai
helpcodeai merged commit 00fd183 into main Nov 2, 2026
14 checks passed
@helpcodeai
helpcodeai deleted the feat/etsy-guide-approval-wait branch November 2, 2026 09:30
@github-actions github-actions Bot locked and limited conversation to collaborators Nov 2, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Etsy setup: users stall while their app awaits Etsy's approval

1 participant