← back to Delivery Address Fix
references/instacart.md
44 lines
# Instacart adapter — PROVEN (2026-08-02)
Status: verified end-to-end on a live run 2026-08-02 (login → store → address
book), READ-ONLY (no account writes). Selectors below are confirmed.
## Auth flow (VERIFIED)
1. `https://www.instacart.com/login` → email field `input[type="email"]`
(placeholder "Enter your email address"), submit `button:has-text("Continue")`.
2. Instacart uses passwordless **email OTP**: a 6-digit code, entered in
`input[name="code"]` (aria-label "Enter code", maxlength 6). Auto-submits
on fill (no explicit Verify click needed). Code arrives from
`no-reply@instacart.com`, subject `NNNNNN is your Instacart verification
code` — George-readable on the `steve-personal` account, and the code is
**in the subject line** (no body parsing needed).
- "Request a new code" has a ~10s cooldown.
3. No SMS gate and NO card-digit gate on this login (unlike UberEats).
4. Login lands on `https://www.instacart.com/store/?categoryFilter=homeTabForYou`;
the current delivery address shows in the top-right header chip.
## After login (VERIFIED)
- Address book: `https://www.instacart.com/store/account/addresses`
(direct nav works; also Account → Addresses). Shows every saved address as a
row (street / city-state-zip) with a per-row **Edit** link, plus a green
**"Add a new address"** button top-right.
- Live-order check: Orders page shows active deliveries. Address change on an
ACTIVE order is generally NOT self-serve once shopping started — surfaces to
care chat (do not attempt without explicit go).
- To SAVE a new address: click "Add a new address" → autocomplete search →
select the exact VERBATIM match (per HARD RAIL #1) → supports unit + delivery
instructions. New orders pick the address at checkout — confirm the default
flips to the saved one.
- To SURFACE-BEFORE-DELETE: read the full list first (per HARD RAIL #3) and
show the user any wrong-looking rows before removing anything.
## Quirks
- CDP port: 9225.
- Session is long-lived once the persistent profile exists — no bot wall on
either the store or login pages (contrast DoorDash, which is Turnstile-walled).
- The store page renders a huge a11y skip-nav preamble in `innerText`; slice
past it when parsing.