Add a User to a Browserless Account

Site browserless.ioTask add-account-userVersion v2Updated Aug 4, 2026Category account-management

Log in to Browserless with OTP authentication and add an account user with a generated email and selected role. This skill was captured from a live agent session on browserless.io and publishes here verbatim, exactly as an agent receives it.

NoteSelectors and URL schemes drift as sites change. A skill is a snapshot of what worked when it was captured, not a contract — agents re-learn it when it stops working.

Purpose

Add a new user to a Browserless account using a generated test email and a role selected from the roles exposed by the account UI.

When to Use

Use when the caller asks to create or add a user under a Browserless account. The caller must be able to provide the one-time password sent during login.

Workflow

  1. Navigate directly to https://www.browserless.io/account.
  2. Enter the supplied account email in the login email field and submit. Wait for the OTP prompt, ask the user for the OTP, enter it, and submit.
  3. Navigate directly to https://www.browserless.io/account/users.
  4. Click the button whose visible text is Add Users, then wait for the add-user form or dialog.
  5. Generate a unique test email, for example qa-test-${random-alphanumeric}@example.com, and enter it in the email field. Prefer an input associated with an Email label or matching an email placeholder; the input's DOM id is dynamically generated and must not be hard-coded.
  6. Open the role combobox, read the visible [role="option"] elements, and choose one role at random. Do not assume a fixed role name; Viewer is one observed option.
  7. Click the button whose exact visible text is Add User to submit.
  8. After the submission completes, run the following evaluate() on the current page, substituting the generated email for {generated-email} in the targetEmail variable, to verify the created user and return structured rows:
(() => {
  const targetEmail = "{generated-email}";
  const rows = [...document.querySelectorAll('tr, [role="row"], li')]
    .map((el) => ({
      text: (el.innerText || "").replace(/\s+/g, " ").trim(),
      cells: [...el.querySelectorAll('th, td, [role="cell"]')]
        .map((cell) => (cell.innerText || "").replace(/\s+/g, " ").trim())
        .filter(Boolean),
    }))
    .filter(
      (row) =>
        row.text && row.text.toLowerCase().includes(targetEmail.toLowerCase()),
    );
  return {
    email: targetEmail,
    found: rows.length > 0,
    rows,
  };
})();

Site-Specific Gotchas

  • The account user-management page is directly reachable at /account/users; no homepage navigation is needed after authentication.
  • Login requires an OTP after submitting the email, so pause for the user rather than attempting to guess or reuse an OTP.
  • The email input and other form element ids are dynamically generated and are not durable selectors. Use accessible labels, placeholders, roles, or visible button text where possible.
  • The add-user flow is modal/dialog based: open Add Users, select a role through its combobox and [role="option"] entries, then submit with the exact Add User button.
  • Role names may change by account configuration. Enumerate the currently visible options and select randomly rather than hard-coding Viewer, Admin, or another role.
  • Verify against the generated email because the users page can contain mixed row types and unrelated account text.

Expected Output

Return the generated email, the selected role if available, and the verification object from the extractor, including whether a matching user row was found and its cell/text contents.

Call it

GET https://production-sfo.browserless.io/skills?token=TOKEN-HERE&domain=browserless.io&task=add-account-user