| name | description | allowed-tools |
|---|---|---|
doordash |
Access DoorDash for food delivery ordering, order history, account management, and restaurant/store browsing. |
Bash(agent-browser:*) |
Uses agent-browser with Kernel cloud browser provider. See the kernel-agent-browser skill for best practices.
Set environment variables to configure the Kernel browser. These must be set before your first agent-browser -p kernel call since the CLI holds state between invocations.
| Variable | Description | Default |
|---|---|---|
KERNEL_API_KEY |
Required. Your Kernel API key for authentication | (none) |
KERNEL_STEALTH |
Enable stealth mode to avoid bot detection (true/false) |
true |
KERNEL_TIMEOUT_SECONDS |
Session timeout in seconds | 300 |
KERNEL_PROFILE_NAME |
Browser profile name for persistent cookies/logins | (none) |
Profile Persistence: When KERNEL_PROFILE_NAME is set, the profile will be created if it doesn't already exist. Cookies, logins, and session data are automatically saved back to the profile when the browser session ends.
export KERNEL_API_KEY="your-api-key"
export KERNEL_TIMEOUT_SECONDS=600 # 10-minute session timeout
export KERNEL_STEALTH=true # Enable stealth mode (default)
export KERNEL_PROFILE_NAME=doordash # Persist login sessions across runsMake sure to use -p kernel flag with each command.
DoorDash uses a two-step login flow, sometimes with 2FA verification.
agent-browser -p kernel open https://www.doordash.com/consumer/loginThe page redirects to identity.doordash.com with OAuth flow.
The login form shows both email and password fields on the same page:
agent-browser -p kernel wait 2000
agent-browser -p kernel snapshot -i
agent-browser -p kernel fill @e9 "<email>"
agent-browser -p kernel fill @e10 "<password>"
agent-browser -p kernel click @e13Element refs on initial login page:
@e1- Sign In radio (checked)@e2- Sign Up radio@e3- Continue with Google@e5- Continue with Facebook@e7- Continue with Apple@e9- Email textbox@e10- Password textbox@e11- Show password button@e12- Reset Password button@e13- Continue to Sign In button
After entering email and clicking Continue, DoorDash may show only a password field:
agent-browser -p kernel wait 2000
agent-browser -p kernel snapshot -i
agent-browser -p kernel fill @e3 "<password>"
agent-browser -p kernel click @e6Element refs on password-only page:
@e3- Password textbox@e4- Show button@e5- Reset Password button@e6- Sign In button
DoorDash may require a 6-digit verification code sent via SMS or email:
agent-browser -p kernel snapshot -i
# Look for: spinbutton "Enter your 6-digit code" [ref=e35]Element refs on 2FA page:
@e35- 6-digit code input (spinbutton)@e36- Resend Code button (disabled during countdown)@e37- Send to Email button (alternative delivery)@e38- Get Help link@e39- Cancel button@e40- Submit button (disabled until code entered)
Manual intervention required: Get the live view URL and ask user to enter the code:
kernel browsers list
kernel browsers view <session-id>agent-browser -p kernel get url
# Should show: https://www.doordash.com/After successful login, the page shows your delivery address in the header.
Top Navigation:
@e1- Home link@e2- Grocery link@e3- Retail link@e4- Convenience link@e5- Beauty link@e6- Pets link@e7- Health link@e8- Party link@e9- Browse All link@e10- Orders link@e11- Account button@e12- DoorDash Home Page link@e13- Address button (shows current delivery address)@e14- Delivery radio (checked)@e15- Pickup radio@e16/@e17- Notification Bell buttons@e18- Cart button (shows item count)
Category Quick Links (starting at @e20): Breakfast, Coffee, Indian, Sushi, DashPass, Pizza, Fast Food, Deals, Sandwiches, Asian, Healthy, Pickup, Chicken, Desserts, etc.
Note: Categories vary by location. Some locations show Target or other retail stores as quick links.
agent-browser -p kernel click @e13 # Address button in header
agent-browser -p kernel wait 1000
agent-browser -p kernel snapshot -iThe address modal shows:
Quick Filter Buttons (top row):
@e4- Home (pressed if currently selected)@e5- Work@e6-@e10- Other saved address labels
Search Box:
@e3- "Search for an address" combobox
Saved Addresses List: Each saved address appears as a button with format:
button "<Label> <Address>, <City>, <State> <Zip>, USA Edit address" [ref=eN]
Example refs:
@e11- Home address with full details@e13- Second saved address@e15- Third saved address (with "Work SF" label)- etc.
Each address also has an "Edit address" button next to it.
Click on the address button to select it:
# Find the address you want in the snapshot, then click it
agent-browser -p kernel click @eN # Address button
agent-browser -p kernel wait 2000The page will reload with the new delivery address. Verify by checking the address button in header:
agent-browser -p kernel snapshot -i | head -20
# Look for: button "<Address Label>" [ref=e13]agent-browser -p kernel click @e13 # Open address modal
agent-browser -p kernel wait 1000
agent-browser -p kernel snapshot -i | grep -i "1311 Vine" # Find specific address
agent-browser -p kernel click @eN # Click the matching address
agent-browser -p kernel wait 2000
agent-browser -p kernel snapshot -i | head -20 # Verify new address in headeragent-browser -p kernel click @e3 # Retail link in nav
agent-browser -p kernel wait 2000Or navigate directly:
agent-browser -p kernel open https://www.doordash.com/tabs/retail
agent-browser -p kernel wait 2000
agent-browser -p kernel snapshot -iFilter Buttons:
@e19- Pets@e20- Flowers@e21- Retail@e22- Convenience@e23- Beauty@e24- Alcohol@e25- Packages@e26- DashPass@e27- HSA/FSA@e28- Over 4.5@e30- Fastest@e31- Price
Store Listings: Each store appears as a link with delivery time and fee info:
link "Target Fast 33 min $0 delivery fee on $12+ by 11:29 AM" [ref=e32]
link "Dick's Sporting Goods 34 min $0 delivery fee over $12" [ref=e34]
link "Walgreens 32 min $0 delivery fee over $12 SNAP" [ref=e36]
link "Best Buy Fast 49 min $0 delivery fee on $12+ by 12:05 PM" [ref=e38]
agent-browser -p kernel click @e32 # Target store link
agent-browser -p kernel wait 2000Store URL Pattern:
https://www.doordash.com/convenience/store/<store_id>/?pickup=false
Header:
@e12- Open Menu button@e14- Address button@e17- Cart button (shows item count)@e18- Pricing & Fees button@e19- DashPass Info button@e20- Search box ("Search Target")@e21- Shop your list button@e22- Save button
Category Links (starting at @e23): Buy It Again, Deals, Valentine's Day, Household, Personal Care, Drinks, Snacks, Frozen, Baby & Child, Beauty, Meat & Fish, Pantry, Pet Care, Electronics, Candy, etc.
Product Add Buttons: Products show as:
button "0 in cart. click to edit quantity" [ref=e71]
agent-browser -p kernel fill @e20 "paper towels"
agent-browser -p kernel press Enter
agent-browser -p kernel wait 2000Search Results URL Pattern:
https://www.doordash.com/convenience/store/<store_id>/search/<query>
Filter Buttons:
@e20- Filters@e21- Deals@e22- Brands@e23- Under $4@e24- Over 4.0
Products: Each product shows with an add-to-cart button.
agent-browser -p kernel click @eN # "0 in cart. click to edit quantity" button
agent-browser -p kernel wait 1000The button changes to show quantity controls after adding.
agent-browser -p kernel click @e18 # Cart button
agent-browser -p kernel wait 1000
agent-browser -p kernel snapshot -i@e86(or similar) - Close button@e87- Store link (e.g., "Target")@e88- Checkout link with total (e.g., "Checkout $5.89")@e89- Remove item from cart button@e90- Add one to cart button@e91- "Complement your cart" suggestions link
For saved carts from previous sessions:
@e26- Delete saved cart button@e27- Checkout link@e28/@e29- Add more items buttons
agent-browser -p kernel click @eN # "remove item from cart" buttonagent-browser -p kernel click @e88 # "Checkout $X.XX" link
agent-browser -p kernel wait 2000# 1. Open DoorDash (assumes already logged in via profile)
export KERNEL_PROFILE_NAME=doordash
export KERNEL_TIMEOUT_SECONDS=600
agent-browser -p kernel open https://www.doordash.com/
agent-browser -p kernel wait 2000
# 2. Change delivery address
agent-browser -p kernel click @e13 # Address button
agent-browser -p kernel wait 1000
agent-browser -p kernel snapshot -i # Find desired address ref
agent-browser -p kernel click @eN # Click desired address
agent-browser -p kernel wait 2000
# 3. Navigate to Target
agent-browser -p kernel open https://www.doordash.com/tabs/retail
agent-browser -p kernel wait 2000
agent-browser -p kernel snapshot -i | grep -i target
agent-browser -p kernel click @eN # Target store link
# 4. Search for products
agent-browser -p kernel wait 2000
agent-browser -p kernel snapshot -i
agent-browser -p kernel fill @e20 "product name"
agent-browser -p kernel press Enter
agent-browser -p kernel wait 2000
# 5. Add to cart
agent-browser -p kernel snapshot -i
agent-browser -p kernel click @eN # Product add button
# 6. View cart and checkout
agent-browser -p kernel click @e17 # Cart button
agent-browser -p kernel wait 1000
agent-browser -p kernel snapshot -i
agent-browser -p kernel click @eN # Checkout linkagent-browser -p kernel click @e17 # Cart button (shows item count)
agent-browser -p kernel wait 1000
agent-browser -p kernel snapshot -iCart Panel Elements:
- Checkout link:
link "Checkout $X.XX" [ref=eN] - Remove item:
button "remove one from cart" [ref=eN] - Add item:
button "add one to cart" [ref=eN] - Claim deal:
button "Claim" [ref=eN](if deals available)
Claim any available deals before checkout:
agent-browser -p kernel click @eN # Claim button for each dealagent-browser -p kernel click @eN # "Checkout $X.XX" link
agent-browser -p kernel wait 2000URL pattern: /convenience/store/<store_id>/collections/checkout_aisle_page?...
This page shows "In Case You Missed it" with suggested items. Always skip:
agent-browser -p kernel snapshot -i | grep -i "continue to checkout"
agent-browser -p kernel click @eN # "Continue to checkout" button
agent-browser -p kernel wait 2000URL pattern: /consumer/checkout/?lat=...&lng=...&order_cart_id=...
Checkout Page Structure:
Section 1 - Account: Shows logged-in email
Section 2 - Shipping Details:
- Address button:
button "Work 1311 Vine St..." [ref=eN] - Delivery time radios:
- Fast option (costs extra):
radio "HH:MM AM-HH:MM AM Fast • XX–XX min $X.XX" [ref=eN] - Standard option (free):
radio "HH:MM AM-HH:MM PM Standard • XX–XX min" [ref=eN] [checked] - Schedule ahead:
radio "Schedule Ahead..." [ref=eN]
- Fast option (costs extra):
- Delivery instructions:
button "Leave at door..." [ref=eN] - Phone:
button "(XXX) XXX-XXXX" [ref=eN]
Section 3 - Payment Details:
- Profile toggle:
radiogroup "business profile toggle"withradio "Personal"and unlabeled second radio - Edit payment:
button "Edit" [ref=eN] - Current card: shows card type and last 4 digits
Order Summary:
- Items list with quantity controls
- Deals & gift cards:
button "Deals & gift cards" [ref=eN] - Promotions checkbox:
checkbox "Promotion" [ref=eN] - Tip radios:
radio "4%",radio "5%" [checked],radio "6%",radio "Other"
Place Order:
button "Place Order $X.XX" [ref=eN]
agent-browser -p kernel click @eN # "Edit" button next to payment
agent-browser -p kernel wait 500
agent-browser -p kernel snapshot -iPayment Options Panel:
- Saved cards appear as radio buttons:
radio "Set Default" [ref=eN]with card info - Click the radio for the desired card
- Options to add new: Credit/Debit, Venmo, Cash App Pay, Klarna, HSA/FSA
agent-browser -p kernel click @eN # Radio for desired cardagent-browser -p kernel click @eN # "Place Order $X.XX" button
agent-browser -p kernel wait 3000After placing order, a modal may appear asking about substitution preferences:
agent-browser -p kernel snapshot -i
# Look for: button "Continue" or button "No Thanks"
agent-browser -p kernel click @eN # "No Thanks" to skipAfter order is placed, redirects to tracking page:
URL pattern: /doubledash/<order_id>
agent-browser -p kernel click @e10 # Orders link
agent-browser -p kernel wait 2000
agent-browser -p kernel snapshot -iOr navigate directly:
agent-browser -p kernel open https://www.doordash.com/ordersagent-browser -p kernel click @e11 # Account button
agent-browser -p kernel wait 1000
agent-browser -p kernel snapshot -iagent-browser -p kernel click @e15 # Pickup radio
agent-browser -p kernel wait 2000| Page | URL |
|---|---|
| Homepage | https://www.doordash.com/ or /home |
| Login | https://www.doordash.com/consumer/login |
| Orders | https://www.doordash.com/orders |
| Cart | https://www.doordash.com/cart |
| Retail Tab | https://www.doordash.com/tabs/retail |
| Grocery Tab | https://www.doordash.com/tabs/grocery |
| Store Page | https://www.doordash.com/convenience/store/<store_id>/?pickup=false |
| Store Search | https://www.doordash.com/convenience/store/<store_id>/search/<query> |
| Pre-Checkout Upsell | /convenience/store/<store_id>/collections/checkout_aisle_page?... |
| Checkout | /consumer/checkout/?lat=...&lng=...&order_cart_id=... |
| Order Tracking | /doubledash/<order_id> |
agent-browser -p kernel close- DoorDash uses a two-step login: email first, then password on a separate screen
- 2FA verification code may be required (sent via SMS or email) but not always
- Profile persistence (
KERNEL_PROFILE_NAME=doordash) helps avoid re-login - The
identity.doordash.comOAuth flow handles authentication - Address labels (Home, Work, etc.) appear in the header after selection
- Cart persists between sessions (may show items from previous orders)
- DashPass membership affects pricing and delivery fees (free delivery/service fees, member savings)
- Retail stores (Target, etc.) have a different URL structure than restaurants
- Pre-checkout upsell page ("In Case You Missed it") should always be skipped via "Continue to checkout"
- Checkout shows detailed cost breakdown: subtotal, tax, delivery fee, service fee, discounts, tip
- DashPass savings are shown as crossed-out original fees
- Deals claimed in cart appear as discounts at checkout
- Substitution preferences modal appears after placing order - can skip with "No Thanks"
- Order tracking page URL format:
/doubledash/<order_id>
If login requires a verification code:
-
Get the live view URL:
kernel browsers list kernel browsers view <session-id>
-
Share the URL with the user to manually enter the code
-
Or click "Send to Email" (
@e37) and check email for the code
Always run snapshot -i after navigation to get fresh element refs. Refs are session-specific and change between page loads.
DoorDash may have aggressive bot detection. Use manual login fallback via live view URL if automation fails.
DoorDash persists cart items. Use "Delete saved cart" button to clear old items before starting a new order.
KNOWN ISSUE: The checkout page shows a radiogroup "business profile toggle" with two radios:
radio "Personal" [ref=eN] [checked]radio [ref=eN](unlabeled - presumably business/work profile)
Attempting to click the second (business) radio may fail with "matched multiple elements" error. The business profile radio appears to not be properly accessible via automation.
Workaround: If you need to use a work/business card:
- Add the business card to the Personal profile in DoorDash settings
- At checkout, click "Edit" next to payment to see all saved cards
- Select the desired card from the saved payment methods list
This is a limitation that should be investigated further - the business profile toggle may require different interaction patterns or may need to be configured via the DoorDash web settings rather than at checkout.
If filling the search box and pressing Enter doesn't navigate to results, use direct URL navigation:
agent-browser -p kernel open "https://www.doordash.com/convenience/store/<store_id>/search/<query>?pickup=false"URL-encode spaces as %20 in the query.