Stop copy-pasting from Cursor into web forms.

Autofill the Shopify Partner Dashboard with AI, safely

FormFill AI · · 10 min read

Listing copy already lives in your README. The Partner Dashboard wants it in labeled boxes. Map the public fields. Do not hand the model your partner session.

Shipping a Shopify app includes a listing form: name, tagline, detailed description, pricing story, privacy policy URL, support contact. The words usually exist in the README you were just editing with an agent. The form lives in the Partner Dashboard. Autofill here is a copy-mapping problem. It is not a reason to hand a model your partner session and walk away.

What people paste today

  • App name and subtitle, rewritten three times to fit a character counter.
  • Feature bullets that already exist as markdown headings.
  • Support email and a privacy or terms URL from the marketing site.
  • A pricing paragraph that must match what the app actually charges.
  • Screenshot captions that drift out of date the moment the UI changes.

None of that is a secret. All of it is easy to put in the wrong box. The Partner Dashboard will not warn you that the privacy URL points at staging until a reviewer, or a merchant, opens it.

Split the form into safe and paused

Safe to draft: public listing copy, URLs that already appear in the repo, and pricing text you have approved in writing. The assistant should quote those sources, not improve them into a claim you have not made.

Pause: API keys, staff passwords, billing instruments, identity documents, captchas, file uploads of legal agreements the model was not given, and any checkbox that says you confirm the listing is accurate. If the source text does not contain an explicit confirmation, the box stays empty. You read it and you check it.

A workflow that survives a layout change

  1. Open the listing page in Chrome while you are signed in. You stay signed in. The agent does not.
  2. Read the tab code from the FormFill popup and check that the host is the Partner Dashboard.
  3. In Cursor, point at the README and say: propose a fill for this tab code. Do not invent a privacy policy URL. Use only URLs in this file.
  4. Read the side panel. Ready rows are public copy. Paused rows are the ones you finish by hand.
  5. Fix the tagline if it is over the field limit. Length is a reason to lower confidence even when the sentence is good.
  6. Fill. Read the rendered page. Use undo if a caption landed in the pricing box. Submit yourself.

Why not a recorded macro

The Partner Dashboard markup changes. A field list read at fill time survives a CSS tweak better than a macro with hard-coded selectors. You still review, because Shopify's questions change and your listing should change with them. A macro that "always works" is how last quarter's pricing paragraph gets submitted again.

What to store after the fill

Store the proposal: field names, values, confidence, and pause reasons. Do not store the full partner page HTML in a third-party log if you can avoid it. Do not store cookies. Do not store secrets, which means the proposal itself must already have excluded them. FormFill's fill job saves that JSON. If a password was in the proposal, the pause rule failed earlier than the database.

The undo toast matters on this form specifically. Listing pages are long. A mis-mapped field is obvious once the value is on the page, and reverting six inputs by hand is how people give up and paste again.

After the listing

The same pause list applies when the next form is a company onboarding questionnaire or a client portal. Public copy moves. Credentials, captchas, and attestations wait. If you are wiring the assistant side, start with the MCP handoff rather than a browser agent that clicks Submit.

Autofill the listing. Do not autofill your judgment. The Partner Dashboard is reviewing the app you described, and that description should be one you can still defend after the model leaves the chat.