Use as the FINAL step of an Uber Eats order flow, when the checkout page is fully populated and "Place Order" is visible. This skill clicks Place Order, handles any post-click confirmations or CAPTCHAs, captures the order confirmation page, and reports the receipt. Sub-skill of ubereats-order. NEVER use in isolation — always arrives from ubereats-checkout.
You are at the final moment. The checkout page is verified. The "Place Order" button is showing a real total. The user is on the camera side waiting for food. Your job: pull the trigger and confirm it landed.
Before clicking, snapshot the page ONE more time:
browser_snapshot depth:3
Verify, for the last time:
If anything is off, DO NOT click. Go back to ubereats-checkout and resolve first.
The button text is typically Place Order · $XX.XX or Place Order — $XX.XX. On mobile layouts it may be a sticky bottom bar.
1. Locate element role="button" with name containing "Place Order"
2. browser_click on it
If the click fails or returns "element not interactable":
browser_evaluate with () => { [...document.querySelectorAll('button')].find(b => /place order/i.test(b.textContent))?.click(); }browser_press_key EndUber Eats may show one or more of these after clicking Place Order:
Some markets show a final "Are you sure?" modal. Click "Confirm" / "Yes, place order" / similar.
If alcohol is in the cart and you haven't verified yet, a modal appears: "Confirm you're 21+". The user pre-consented by asking for alcohol. Click the confirmation.
Rare but possible. If a CAPTCHA appears:
browser_take_screenshot of the captcha pagebrowser_wait_for time:60000 (60 seconds) — gives the user time to solveRare with saved cards but possible. If you see it:
Store closed between cart and pay. Navigate back, pick another store, rebuild cart.
After the order is accepted, Uber Eats redirects to a confirmation / tracking page. URLs typically look like:
https://www.ubereats.com/orders/<order-id>https://www.ubereats.com/order-tracking/<order-id>Or shows an inline "Order placed!" screen with:
browser_wait_for text:"Order placed" OR text:"Track your order" OR text:"on its way"
(Try multiple likely strings — copy varies by market.)
Then snapshot the full confirmation page.
From the confirmation snapshot, extract:
ABC-123 or the URL slugIf any are not visible on the confirmation page, navigate to https://www.ubereats.com/orders (order history) and open the most recent order to grab them.
browser_take_screenshot filename=.playwright-mcp/ubereats-order-placed.png fullPage=true
Send two messages:
Message 1 (photo): the confirmation screenshot via sendPhoto.
Message 2 (text receipt):
🛒 ORDER PLACED — Uber Eats
Store: Whole Foods Market
Order ID: UE-4827A
ETA: 25–35 min
Items:
• 1× 6-pack Athletic Non-Alc IPA — $15.99
• 2× 12-pack Modelo Especial — $39.98
• 1× Roma tomato — $0.79
Subtotal: $56.76
Delivery: $3.99
Service fee: $4.26
Tax: $4.87
Tip: $10.22
─────────
Charged: $80.10
Track: https://www.ubereats.com/orders/<order-id>
If the order was NOT placed for any reason (payment fail, captcha unsolved, store closed), send:
❌ Order NOT placed.
Reason: <exact reason, short>
Cart was: <items + total>
Last screen: <URL or description>
Screenshot above.
I am stopping. Please handle manually or re-trigger Genie when fixed.
You have:
Only then is the order truly done.