# Dr Urls — feature guides

How each Dr Urls feature works, step by step — generated from the recorded
walkthroughs we replay against the product itself. If a feature changes, its
walkthrough stops passing and the guide is wrong in a way we find out about.
The same guides as HTML: https://drurls.com/docs/features

Generated 2026-10-02 · 56 guides.

## Account & billing

### Create an API key

API keys are shown once at creation and stored hashed; the dialog names the key and the result must be copied there and then.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open API Keys from the Account section of the sidebar
   You should see: The API Keys page opens listing existing keys and when each was last used
3. Open the create dialog
   You should see: A dialog opens headed 'Create API Key' with a Name field
4. Name the key
   You should see: 'Dr Urls Test' appears in the Name field
5. Create it
   You should see: 'API key created successfully' appears with the key itself and a Copy button — this is the only time it is shown
6. Copy the new key
   You should see: The button label changes to 'Copied'
7. Dismiss the one-time key panel
   You should see: The panel closes and the new key is listed in the table by name only

### Generate and copy a referral link

The referrals dashboard mints the account's referral code, copies the link, and offers one-click sharing to X, LinkedIn and email.

*Steps recorded; not yet verified by a replayed run.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Referrals from the Account section of the sidebar
   You should see: The referrals page opens under 'Earn 20% lifetime revenue'
3. Mint a referral code if one does not exist yet
   You should see: A link of the form https://drurls.com/?ref=CODE appears — if the account already has one it is shown straight away
4. Copy the referral link
   You should see: The button changes to 'Copied!'
5. Scroll the rest of the page
   You should see: How it works, Your Referrals and the payout section all load
6. Check the referral table is present
   You should see: A table with Email, Status, Your Earnings and Date columns

### Invite a teammate by email

Team invites are per-email and single-use: you pick a role, send to one address, and only an account with that exact address can accept.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Team from the Account section of the sidebar
   You should see: The team page lists current members and any pending invites
3. Open the invite dialog
   You should see: A dialog opens with a Role dropdown and an Email field
4. Choose the Analyst role
   You should see: The Role dropdown reads Analyst
5. Enter the invitee's email
   You should see: qa@drurls.com is accepted, with the note that only that exact address can accept
6. Create the invite
   You should see: An invite link is generated and the invite appears under 'Waiting to be accepted'

### Review external data connections

Connections is the one place to link Google (Search Console, GA4, Cloud billing) and Cloudflare, and connect/disconnect is admin-only.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Connections from the Account section of the sidebar
   You should see: The Connections page opens with a card per external data source
3. Scroll through both connection cards
   You should see: The Google card and the Cloudflare card both load with their current status
4. Check the Google card explains its scope
   You should see: The Google card says one consent grants read-only access to Search Console, Google Analytics 4 and Cloud
5. Check the Cloudflare card is offered
   You should see: The Cloudflare card offers a read-only connection via OAuth or an API token

### Save workspace crawl settings

Settings names the workspace and sets the crawl ceiling — max pages per scan and crawl depth — plus the notification frequency.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Settings from the Account section of the sidebar
   You should see: The Settings page opens with General, Crawling, Notifications and Danger Zone sections
3. Clear the workspace name field
   You should see: The field empties
4. Set the workspace name
   You should see: 'Dr Urls' appears in the field, with the note that this name shows in the dashboard and reports
5. Scroll through the rest of the settings
   You should see: Max pages per scan, Crawl depth, Notification frequency and the Danger Zone all load
6. Save the settings
   You should see: 'Settings saved' is confirmed on the page

### Share your referral link

Every workspace has a referral link, and the code is captured through signup.

*Steps recorded; not yet verified by a replayed run.*

1. Open the referrals page
   You should see: Your unique referral link and its stats are shown
2. Copy the referral link
   You should see: The link is copied to the clipboard with a confirmation
3. Open the public referrals page
   You should see: The programme terms and reward are explained
4. Check attribution
   You should see: Referred signups and any credited rewards are counted

### Use the REST API with a Bearer key

API keys authenticate the public v1 API, and are plan-gated except for first-party integration keys.

*Steps recorded; not yet verified by a replayed run.*

1. Open the API reference
   You should see: Endpoints, auth scheme and examples are documented
2. Read how to authenticate
   You should see: Requests carry an Authorization: Bearer header with a key from the dashboard
3. Go to the keys page
   You should see: Keys can be created and revoked here
4. Call an unauthenticated endpoint directly
   You should see: A JSON health payload is returned without a key

## Commerce

### Buy scan credits

Credits are bought as a Stripe one-off; the per-credit price is set server-side from your own tier.

*Steps recorded; not yet verified by a replayed run.*

1. Open billing
   You should see: Plan, balance and a credit purchase panel are shown
2. Look at the preset amounts
   You should see: Preset quantities plus a slider and a number box for a custom amount
3. Ask for 50 credits
   You should see: The price updates live and states the per-scan rate at your plan
4. Try to buy more than the maximum
   You should see: The amount clamps to the stated per-purchase maximum instead of accepting it
5. Start the purchase
   You should see: A Stripe Checkout session opens — the client only ever sends a quantity, never a price

### Compare the pricing tiers and start a free account

The pricing page sets out no-account, Free and Pro side by side, and each band's call to action leads to the right place.

*Verified against the live product on 2026-08-05.*

1. Open the homepage
   You should see: The marketing homepage loads with the main navigation
2. Click Pricing in the main navigation
   You should see: The pricing page opens
3. Scroll the whole pricing page
   You should see: The three bands, the feature comparison and the pricing FAQ all load
4. Check the no-account band offers the free checker
   You should see: The 'No account' band shows 'Free', '3 checks per hour' and a Run a check button
5. Follow the highlighted Free-plan call to action
   You should see: The sign-up page opens at 'Start fixing your website'

### Make a site premium and see its allowance multiply

A premium site costs credits per month up front and multiplies that site's free monthly allowance; turning it off does not refund.

*Steps recorded; not yet verified by a replayed run.*

1. Open billing
   You should see: The per-site usage table lists each site with a Standard or Premium badge
2. Find a site currently marked Standard
   You should see: Its row shows this month's usage and its free allowance
3. Click the Standard badge to upgrade the site
   You should see: A browser confirm dialog states the credit cost, that the allowance goes up 5x, and that turning premium off later does not refund this month
4. Read the confirmation before accepting
   You should see: The cost and the no-refund warning are both stated BEFORE any credits are spent
5. Check the guard when you cannot afford it
   You should see: If the balance is below the cost the badge is disabled with a tooltip saying how many credits are needed

### Manage or cancel a subscription in the Stripe portal

Billing links out to Stripe's customer portal for payment methods, invoices and cancellation.

*Steps recorded; not yet verified by a replayed run.*

1. Open billing
   You should see: Subscription state and a portal link are shown
2. Open the Stripe customer portal
   You should see: Stripe's hosted portal opens for this customer
3. Check what the portal offers
   You should see: Invoices, payment method and cancellation are all available there rather than reimplemented in-app

### Price scan credits before buying

The credit purchase panel prices credits server-side at the org's own plan rate — presets, a slider and a number field all repriced live.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Billing from the Account section of the sidebar
   You should see: The 'Billing & Plans' page opens showing the current plan and the credit balance
3. Scroll to the Buy credits panel
   You should see: 'Buy credits' shows the balance, preset amounts, a slider and a price
4. Ask for 250 credits
   You should see: The price and the 'Buy 250 credits' button both update to the org's own per-scan rate
5. Check the rate is stated
   You should see: The panel names the per-scan price and the plan it comes from — the price is never taken from the browser

## Content

### Bulk-manage individual issue occurrences

The all-issues table dismisses, rechecks and verifies specific occurrences in bulk.

*Steps recorded; not yet verified by a replayed run.*

1. Open every issue occurrence
   You should see: A table of individual occurrences with per-row actions
2. Select a batch of rows
   You should see: The selection count appears with bulk actions
3. Dismiss the selected issues
   You should see: They are marked dismissed and drop out of the active list
4. Recheck an issue against the live page
   You should see: The page is refetched and the issue is confirmed still present or cleared

### Change the analytics date range

Analytics charts SEO health trends over a selectable window, built from the org's own scan history.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Analytics from the Analysis section of the sidebar
   You should see: The Analytics page opens with a date-range button and a Compare toggle
3. Open the date-range menu
   You should see: A menu drops down offering Last 7 days, Last 30 days, Last 90 days and All time
4. Widen the window to 90 days
   You should see: The menu closes, the button reads 'Last 90 days' and the charts redraw over the longer window
5. Scroll the whole analytics page
   You should see: Every trend chart and metric tile loads for the new range

### Copy a free audit as an AI-ready brief

The agent export bar turns a finished check into a ranked Markdown brief for a coding agent, and into the curl command that reproduces it.

*Verified against the live product on 2026-08-05.*

1. Open the free checker page
   You should see: The URL box is ready and empty
2. Enter a domain to audit
   You should see: The value is accepted
3. Run the check
   You should see: The scan runs and a report appears
4. Wait for the agent export bar
   You should see: A panel headed 'Hand my chart to your AI' appears above the score
5. Copy the report as a Markdown brief
   You should see: The button label changes to 'Copied brief'
6. Copy the equivalent API command
   You should see: The button label changes to 'Copied command'
7. Scroll the rest of the report
   You should see: The whole report is captured in the recording

### Export a completed scan's issues as CSV

The Reports page lists every completed scan and downloads one row per issue occurrence as CSV or JSON.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Reports from the Analysis section of the sidebar
   You should see: The Reports page opens explaining that each export is one row per issue occurrence
3. Scroll the scan list
   You should see: Every recent scan loads with its status, score and date
4. Expand the first scan row to reveal its export buttons
   You should see: The row opens showing Pages Crawled, Pages Discovered, Issues Found, SEO Score and an 'Export issues' row
5. Download the issues as CSV
   You should see: The CSV downloads — the button is only enabled once the scan has completed

### Export a scan's issues as CSV or JSON

The reports hub downloads one row per issue occurrence for any completed scan.

*Steps recorded; not yet verified by a replayed run.*

1. Open the reports hub
   You should see: Heading 'Reports' and an explanation that each export is one row per issue occurrence
2. Find a completed scan
   You should see: Completed scans are listed with score, pages crawled and issue count
3. Expand a scan row
   You should see: Download options appear for that scan
4. Download the CSV export
   You should see: A CSV downloads containing page URL, issue code, severity, category, description and recommended fix
5. Look at a scan that has not finished
   You should see: Export is offered only once the scan has completed

### Generate an AI fix plan from a free check

'Turn this into a fix plan' asks the server-side Gemini model to write a prioritised remediation spec from the findings of a free check.

*Verified against the live product on 2026-08-05.*

1. Open the free checker page
   You should see: The URL box is ready
2. Enter a domain to audit
   You should see: The value is accepted
3. Run the check
   You should see: A report with issues appears
4. Wait for the AI fix plan panel — it only appears when issues were found
   You should see: A panel headed 'Turn this into a fix plan' with a Generate AI fix plan button
5. Ask for the plan
   You should see: The button reads 'Writing the plan…' while the model works
6. Wait for the written plan
   You should see: A prioritised plan is rendered with a Copy plan button — or an honest message if AI plans are not switched on for this deployment
7. Scroll through the whole plan
   You should see: Every task in the plan is visible, each with its acceptance criterion

### Open a site's detail page and read its scan history

A site's page gathers its score, what's working, top issues to fix, the score trend, category health and every scan it has ever had.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads with the Your Sites panel
2. Open Sites from the sidebar
   You should see: The Projects page lists the monitored domains
3. Open the first project's detail page
   You should see: The site page opens showing the domain and its SEO score
4. Scroll through the whole site page
   You should see: SEO Score, What's working, Top Issues to Fix, Score Trend, Category Health and Scan History all load
5. Confirm the scan history table is present
   You should see: A table of past scans with date, type, status, pages, issues, score, grade and duration

### Open a site's full report page

The per-site page carries top issues, score trend, category health, indexing, social and scan history.

*Steps recorded; not yet verified by a replayed run.*

1. Open Projects
   You should see: Your sites are listed
2. Open a site
   You should see: The site report page loads
3. Check the priority section
   You should see: The highest-priority issues for this site are listed first
4. Check the trend chart
   You should see: Score over time is plotted across scans
5. Check the category breakdown
   You should see: Health per category is shown
6. Check past scans
   You should see: Every previous scan for this site is listed

### Read a completed scan report

A finished crawl renders a score, grade, category health and prioritised issues.

*Steps recorded; not yet verified by a replayed run.*

1. Open the audit page
   You should see: Recent scans are listed
2. Open a completed scan
   You should see: The scan report loads with its overall score and grade
3. Read the issues found
   You should see: Issues are grouped by severity and category with the affected page URLs
4. Check crawl coverage
   You should see: Pages discovered and pages crawled are reported, which is what the score is normalised against

### Read the Google Cloud inventory synced from VS Code

The Google Cloud page holds no cloud credentials of its own — it renders the gcloud inventory the Dr Urls VS Code extension read and synced up.

*Verified against the live product on 2026-08-16.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Google Cloud from the Analysis section of the sidebar
   You should see: The Google Cloud page opens
3. Scroll the whole page
   You should see: Either the synced inventory (Cloud Run, Cloud SQL, buckets, budgets) loads, or 'No inventory synced yet' explains how to run the sync
4. Confirm the page states where its numbers come from
   You should see: The page says plainly that the numbers come from the VS Code extension's read-only sync, not from credentials held here

### Read the product demo page

The demo page shows the product in action and funnels to Start free — it is linked from the mobile nav but not the desktop header.

*Steps recorded; not yet verified by a replayed run.*

1. Open the product demo page
   You should see: The 'See Dr Urls in action' hero renders
2. Scroll through the whole demo page
   You should see: The walkthrough and every section end up in the recording
3. Check the walkthrough entry
   You should see: 'Watch the full walkthrough' is present
4. Take the Start free call to action
   You should see: The sign-up page opens

### Rescan a site, copy its report, or get an AI fix plan

The site page can re-run the crawl, copy the whole report for an agent, or generate a written action plan.

*Steps recorded; not yet verified by a replayed run.*

1. Open Projects
   You should see: Sites are listed
2. Open a site's report
   You should see: The report page loads
3. Copy the report to the clipboard
   You should see: The full report is copied as text an AI coding agent can act on
4. Ask for an action plan
   You should see: A written, prioritised fix plan is generated for this site
5. Copy the generated plan
   You should see: The plan is copied to the clipboard
6. Re-run the crawl
   You should see: A new scan is queued — and it is metered like any other scan

### Review Search Console properties

Search Console shows Google Search performance — clicks, impressions and CTR — for every property the connected Google account owns.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Search Console from the Analysis section of the sidebar
   You should see: The Search Console page opens
3. Scroll the whole page
   You should see: Either the property list with clicks, impressions and CTR loads, or a clear prompt to connect Google first
4. Confirm the page rendered
   You should see: The Search Console heading is shown above either the properties or the connect prompt

### Review the social presence summary

Social presence lists each scanned site's discovered social profiles and their totals, built from the crawl.

*Verified against the live product on 2026-08-17.*

1. Open the social presence page
   You should see: The page opens under the 'Social presence' heading
2. Scroll the whole table
   You should see: Every scanned site loads with its social links and totals, or 'No sites yet — run your first scan and come back.'
3. Confirm the page rendered
   You should see: The 'Social presence' heading is present above the table or the empty state

### Work through grouped issues and copy a fix as a task

Issues are grouped by theme so one fix can clear many pages at once.

*Steps recorded; not yet verified by a replayed run.*

1. Open the issues view
   You should see: Issues grouped by theme, worst first
2. Filter to metadata problems
   You should see: Only matching issue groups remain
3. Copy a group as a task for a developer
   You should see: A ready-to-paste task describing the fix is copied
4. Push the issues into the task list
   You should see: The selected issues become tracked tasks

## Forms

### Create a new project

The New Project dialog takes a name and a domain, validates both, and adds the site to the monitored list.

*Steps recorded; not yet verified by a replayed run.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Sites from the sidebar
   You should see: The Projects page opens listing the monitored domains
3. Open the create dialog
   You should see: A modal opens headed 'New Project' with Project Name and Domain fields
4. Name the project
   You should see: 'Dr Urls Test' appears in the Project Name field
5. Enter the domain to monitor
   You should see: example.com appears in the Domain field with no validation error
6. Save the project
   You should see: The button shows 'Saving...' then the dialog confirms 'Project Created'
7. Wait for the confirmation
   You should see: 'Your project is ready to go.' is shown and the new site joins the list behind the dialog

### Keep a free report by leaving an email

The lead capture card at the foot of a free check stores the visitor's email against the report and offers a permalink back to it.

*Verified against the live product on 2026-08-05.*

1. Open the free checker page
   You should see: The URL box is ready
2. Enter a domain to audit
   You should see: The value is accepted
3. Run the check
   You should see: A report appears
4. Scroll to the bottom of the report
   You should see: The card 'Not ready for an account? Keep this report' is at the end
5. Enter the tester email address
   You should see: qa@drurls.com is accepted in the email field
6. Submit the email
   You should see: The button briefly reads 'Saving...'
7. Wait for the confirmation
   You should see: The card is replaced by 'You're on the list' with the score, the grade and a Copy report link button

### Point Dr Urls at your BigQuery billing export

Cloud cost tracking is configured with a GCP project, dataset and export table.

*Steps recorded; not yet verified by a replayed run.*

1. Open cloud costs
   You should see: Either current spend, or a form to configure the billing export
2. Enter the GCP project id
   You should see: Accepted
3. Enter the BigQuery dataset
   You should see: Accepted
4. Enter the export table
   You should see: Accepted
5. Save the configuration
   You should see: The config is stored and cost data is fetched, or a clear permissions error is shown

### Send a message from the contact form

The contact page validates name, email and message, lets you pick a subject, and confirms in place.

*Verified against the live product on 2026-08-05.*

1. Open the homepage
   You should see: The marketing homepage loads
2. Scroll to the footer
   You should see: The Company column with the Contact link is visible
3. Follow the Contact link
   You should see: The contact page opens with a Name / Email / Subject / Message form
4. Fill in the name
   You should see: 'Dr Urls Test' appears in the Name field
5. Fill in the email
   You should see: qa@drurls.com appears in the Email field
6. Choose the Support subject
   You should see: The Subject dropdown reads Support
7. Write the message
   You should see: The message text appears in the textarea
8. Submit the form
   You should see: The form is replaced by 'Message sent' and an offer to send another

## Media & uploads

### Ask the AI assistant about your sites

The assistant answers questions grounded in your own scan data and accepts an image or PDF attachment.

*Steps recorded; not yet verified by a replayed run.*

1. Open the assistant
   You should see: A chat panel inviting a question about your sites
2. Ask a question grounded in your data
   You should see: The question is accepted and sent
3. Read the answer
   You should see: The answer references your actual sites and scans, not generic advice
4. Attach a screenshot to the conversation
   You should see: The image attaches and the assistant can reason about it
5. Note the local-dev behaviour
   You should see: Server-side AI uses Vertex Gemini via the metadata server, so it is reported unavailable in local dev rather than failing obscurely

### Review browser-extension captures on a site

Screenshots, flows and screencasts taken in the extension land against the site as captures.

*Steps recorded; not yet verified by a replayed run.*

1. Open Projects
   You should see: Sites are listed
2. Open a site
   You should see: The site report page loads
3. Find the captures
   You should see: Captures taken from the browser extension are listed as thumbnails
4. Open a capture
   You should see: The capture detail opens — media is served through an authenticated proxy, never a public bucket URL

### Triage a capture: annotate, ask for a fix, verify

A capture can be boxed and annotated, marked fixed, then verified against the live site with evidence.

*Steps recorded; not yet verified by a replayed run.*

1. Open Projects
   You should see: Sites are listed
2. Open a site and its captures
   You should see: Captures are listed
3. Open a capture
   You should see: The capture opens full size with annotation tools
4. Draw a box over the problem area
   You should see: A box is drawn and a note field appears for it
5. Describe what is wrong
   You should see: The note saves against that box
6. Verify the fix against the live site
   You should see: A verification runs and attaches evidence, or records 'That didn't work' if the problem is still there

## Navigation

### Browse the four analysis pillars

The Analysis section explains the four scoring pillars — SEO, Performance, Security and Accessibility — each with the checks it runs.

*Verified against the live product on 2026-08-05.*

1. Open the homepage
   You should see: The marketing homepage loads
2. Click Analysis in the main navigation
   You should see: The analysis overview lists all four pillars
3. Scroll through the pillar cards
   You should see: SEO, Performance, Security and Accessibility each have a card with a check count
4. Open the Accessibility pillar
   You should see: The accessibility pillar page opens
5. Scroll the pillar detail page
   You should see: Every accessibility check in that pillar is listed with what it looks for

## Other

### Ask the Dr Urls assistant about your sites

The assistant is an AI agent that reads your own audits and Search Console data, and accepts a screenshot or PDF as an attachment.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Assistant from the Platform section of the sidebar
   You should see: The 'Dr Urls Assistant' page opens, marked Beta
3. Ask the assistant a question about the account's own data
   You should see: The question appears in the composer and the send button becomes active
4. Send the question
   You should see: The question is posted to the thread and the assistant starts answering
5. Wait for the reply
   You should see: The assistant answers using the account's own audit data
6. Scroll the whole answer
   You should see: The full reply is visible in the recording

### Audit several sites in one go

Bulk scanning queues a crawl for many sites at once.

*Steps recorded; not yet verified by a replayed run.*

1. Open Projects
   You should see: Sites are listed with selection controls
2. Select every site
   You should see: A selection count and a bulk scan action appear
3. Queue scans for all of them
   You should see: One job per site is queued and each site shows as scanning
4. Check the metering
   You should see: Every site in the batch is metered individually

### Audit social presence across every site

The social report checks Open Graph, Twitter cards and social links per site.

*Steps recorded; not yet verified by a replayed run.*

1. Open the social report
   You should see: Each site's social readiness is summarised
2. Read a site's social metadata state
   You should see: Missing Open Graph or Twitter card metadata is called out per site
3. Open one site's detail
   You should see: The specific missing tags are listed

### Bulk-audit every site that has never been audited

The Full Audit page separates never-audited sites into their own panel and queues them all in one click, in chunks of 25.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Full Audit from the sidebar
   You should see: The audit page opens
3. Scroll to the 'Your sites' panel
   You should see: Sites are split into 'Not yet audited' and 'Audited · re-run any time'
4. Select every not-yet-audited site
   You should see: Each unaudited row's checkbox ticks and a sticky bar appears saying how many are selected
5. Check the bulk action is offered
   You should see: The sticky bar offers 'Audit selected (n)' — the queue is one click away, and Clear undoes the selection
6. Clear the selection without queueing
   You should see: The sticky action bar disappears and no scans are charged

### Connect Google Search Console and sync

Search Console connects over OAuth, then properties and sitemaps sync into the dashboard.

*Steps recorded; not yet verified by a replayed run.*

1. Open the connections hub
   You should see: Every integration is listed with its state
2. Start the OAuth flow
   You should see: Google's consent screen opens for the Search Console scope
3. Return to Search Console
   You should see: Connected properties are listed
4. Pull fresh data
   You should see: Clicks, impressions and sitemap state refresh for the property

### Create test flows over the API from a coding agent

An agent with repository access can POST feature tests straight into the workspace.

*Steps recorded; not yet verified by a replayed run.*

1. Open the API reference
   You should see: The test-flows endpoints are documented
2. Read the create contract
   You should see: A flow carries a name, description, category and ordered steps; each step names its action, what to act on and what is expected
3. Go to a site
   You should see: Sites are listed
4. Open a site and find its tests
   You should see: Flows created over the API appear against the site as drafts for review

### Drill into a Search Console property

A connected property shows queries, pages and sitemap health.

*Steps recorded; not yet verified by a replayed run.*

1. Open Search Console
   You should see: Properties are listed
2. Open one property
   You should see: Query and page performance for that property loads
3. Check sitemap state
   You should see: Submitted sitemaps and any errors are reported

### Install and connect the Chrome extension

The side-panel extension captures pages, records flows and runs feature tests against the live site.

*Steps recorded; not yet verified by a replayed run.*

1. Open the extension page
   You should see: What the extension does and how to install it
2. Read its capabilities
   You should see: Captures, flow recording, screencasts, auto-review and running feature tests are described
3. Go and get a key to connect it
   You should see: A key can be created for the extension to authenticate with

### Manage every data source in one hub

The connections page connects and disconnects Search Console, Analytics, Cloudflare and cloud billing.

*Steps recorded; not yet verified by a replayed run.*

1. Open the connections hub
   You should see: Search Console, Google Analytics, Cloudflare and cloud billing are each listed
2. Read each connector's state
   You should see: Connected sources show what they are pulling; unconnected ones explain what connecting would add
3. Disconnect one source
   You should see: After confirming, the source stops syncing and its data stops refreshing

### Map a site's features into test flows

'Map all features' on a site page asks the AI to draft test flows from that site's crawled pages, captures and latest audit, and files them as drafts.

*Steps recorded; not yet verified by a replayed run.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Sites from the sidebar
   You should see: The Projects page lists the monitored domains
3. Open the first project's detail page
   You should see: The site page opens
4. Scroll down to the Test flows section
   You should see: A 'Test flows' section lists the site's flows with how many are tested and how many have a screencast
5. Ask the AI to draft flows for this site
   You should see: The button spins while the model reads the site's pages and audit
6. Wait for the drafts
   You should see: A green line reports how many flows were generated and they appear below as drafts for review

### Plug Dr Urls into an AI agent over MCP

An MCP endpoint exposes the product's data to AI coding agents.

*Steps recorded; not yet verified by a replayed run.*

1. Open the AI agents page
   You should see: How agents connect is explained
2. Read the MCP configuration
   You should see: The MCP endpoint and how to authenticate it are given
3. Check the docs
   You should see: Agent integration is documented alongside the REST API

### Re-check a site's issues against the live pages

Re-check refetches every affected page and clears the findings that are actually gone, rather than trusting a checkbox.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Issues from the sidebar
   You should see: Open problems are grouped by site
3. Scroll through the grouped issues
   You should see: Each site section header carries a Re-check button and a link to the site
4. Re-check the first site's findings against the live pages
   You should see: The button shows progress while the affected pages are fetched again
5. Wait for the counts to be rewritten
   You should see: The site's problem and finding counts are updated — anything genuinely fixed has gone

### Read a test flow's run history

Each run records per-step results and any screenshots or screencast captured as evidence.

*Steps recorded; not yet verified by a replayed run.*

1. Open Projects
   You should see: Sites are listed
2. Open a site with test flows
   You should see: The site's flows are listed with their last run state
3. Read the run state
   You should see: Each flow shows whether it has never run, passed, or needs attention
4. Open the run history
   You should see: Past runs with per-step results, and which runs captured a screencast rather than only a pass/fail

### Rescan a site and copy its full report

The actions on a site page re-queue a crawl, copy the whole report as Markdown, and ask the AI for a prioritised fix plan.

*Steps recorded; not yet verified by a replayed run.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Sites from the sidebar
   You should see: The Projects page lists the monitored domains
3. Open the first project's detail page
   You should see: The site page opens with its report actions
4. Copy the whole report to the clipboard
   You should see: The button label changes to 'Copied'
5. Ask for a prioritised fix plan for this site
   You should see: The button reads 'Writing the plan…' while the model works
6. Wait for the plan to be written
   You should see: The plan is rendered with a Copy plan button beside it
7. Scroll through the generated plan
   You should see: The whole plan is visible in the recording

### See GA4 traffic for a site

Google Analytics connects over OAuth and reports sessions per site.

*Steps recorded; not yet verified by a replayed run.*

1. Open connections
   You should see: Integrations are listed
2. Start the GA4 connection
   You should see: Google's consent screen opens
3. Open analytics
   You should see: Traffic trends across the workspace are shown once connected

### Start a full site audit by URL

Full Audit queues a whole-site crawl from a typed URL; the scan is picked up by the background worker and appears in the live crawl list.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Full Audit from the sidebar
   You should see: The audit page opens with a URL bar reading 'Enter any URL to audit — e.g. example.com'
3. Enter the site to crawl
   You should see: The value is accepted and Start Audit becomes clickable
4. Queue the crawl
   You should see: The button shows 'Starting…', then the scan is queued for the background worker
5. Wait for the site to appear in the list
   You should see: example.com is listed, either as 'Auditing…' with a live badge or with a fresh score
6. Scroll the audit page
   You should see: The sites panel and the scan history below it both load

## Search

### Filter check results by severity and by category

The sticky filter bar on a free check narrows the issue list by severity (Critical/High/…) and by domain (SEO, Performance, Security, Accessibility).

*Verified against the live product on 2026-08-05.*

1. Open the free checker page directly
   You should see: An empty checker with the prompt 'Enter a URL above to get started.'
2. Type a domain into the checker box
   You should see: The value is accepted and the Analyze button becomes clickable
3. Run the check
   You should see: 'Scanning your page...' appears while the 189 checks run
4. Wait for the report and its filter bar
   You should see: The issue list and the filter bar appear
5. Filter to the Security domain
   You should see: The Security tab turns solid and only security findings stay in the list
6. Narrow further to High severity
   You should see: The High pill highlights and the 'Issues (n)' count drops to just the high-severity security findings
7. Scroll through the filtered list
   You should see: Only issues matching both filters are shown, each with its own fix guidance
8. Clear the severity filter
   You should see: The full count returns to the 'Issues (n)' heading

### Filter grouped issues by category and search

The Issues page groups every open finding by site and by issue code, and filters them by category tile and by free-text search.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Issues from the Analysis section of the sidebar
   You should see: The Issues page opens with a search box and a 'By category' tile row
3. Search the problem list
   You should see: The grouped list narrows to problems matching 'meta'
4. Clear the search
   You should see: Every open problem comes back
5. Expand every site section
   You should see: All site sections open showing their problem cards
6. Scroll the full expanded list
   You should see: Every problem card loads with its severity, finding count and fix guidance
7. Collapse the sections again
   You should see: Each site collapses back to a one-line summary of its problem and finding counts

### Free instant site check from the homepage

The hero URL box on the homepage runs the 189-check audit and lands the visitor on a full report without an account.

*Verified against the live product on 2026-08-05.*

1. Open the Dr Urls homepage
   You should see: The hero loads with a URL box reading 'Enter your website URL (e.g., example.com)' and an Analyze Site button
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/8747902f-a730-4e5a-9896-29460e2a0df5)
2. Type a domain into the hero URL box
   You should see: example.com appears in the box and the Analyze Site button stops being greyed out
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/8f31aa61-224a-49e5-b633-3b6cf97ecf7f)
3. Submit the hero form
   You should see: The browser moves to the check page and starts scanning
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/1345ca3f-402a-4e3c-ae06-e950f48c9127)
4. Wait for the scan to finish — it normally takes 5-15 seconds
   You should see: The spinner is replaced by a report: a health score, category scores and a list of issues
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/13878ba4-440f-409a-92ab-2628d8506a59)
5. Scroll the whole report to the end and back
   You should see: Every section loads — score, category breakdown, passed checks, meta preview and the full issue list
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/bae00efd-2559-44a4-b99a-507f1a69456b)
6. Confirm this is the free checker page
   You should see: The heading 'Free Website Health Checker' is on the page and a report is shown below it
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/01dc6789-71fb-4517-918a-dc2b01b8781d)

### Run a Quick Check on a single URL

Quick Check audits one URL from inside the dashboard and returns a score ring, metadata and a severity-filterable issue list.

*Verified against the live product on 2026-08-11.*

1. Open the dashboard
   You should see: The dashboard overview loads
2. Open Quick Check from the Platform section of the sidebar
   You should see: The 'SEO Checker' page opens with a URL box
3. Enter the URL to check
   You should see: The value is accepted and the Check button becomes clickable
4. Run the check
   You should see: The button reads 'Analyzing...' and a progress panel appears
5. Wait for the result
   You should see: A score ring, the page title and the issue list appear
6. Scroll the whole result
   You should see: Every issue and recommendation loads into view

## Sign in & accounts

### Sign-up page offers Google and GitHub

Sign-up is OAuth-only — Google or GitHub, no password field — and links out to the Terms and Privacy Policy.

*Verified against the live product on 2026-08-11.*

1. Open the sign-up page
   You should see: The page opens under 'Start fixing your website'
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/afa28146-9699-487c-9922-106e9b726bef)
2. Check the Google option is offered
   You should see: A 'Sign up with Google' button is in the auth card
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/3cd64279-2dcc-4e00-baa7-7f1db5768016)
3. Check the GitHub option is offered
   You should see: A 'Sign up with GitHub' button sits below the Google one
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/646bbc12-6898-4fae-ab0d-ffbd6c13622e)
4. Scroll to the foot of the card
   You should see: The 'What you get' list, the sign-in link and the legal line all load
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/1cd22704-2847-463a-8417-40e5bc451f37)
5. Check the legal links are present
   You should see: Terms of Service and Privacy Policy are both linked under the form
   ![What the recorded run saw](https://drurls.com/api/v1/docs/media/50bd0fcf-543a-4c96-b976-2170b517ba8b)
