Skip to content

Search PixyScan

Guide contents

User guide8 min

Site settings

Site settings controls how one site is scanned: which URLs are crawled, when scans run, who hears about results, and how your build pipeline checks the score. Any change applies from the next scan.

How to get there#

Settings is the last entry in the Manage group at the bottom of the site sidebar.

  1. 1

    Open Settings in the sidebar

    Open the site, then choose Settings under Manage. It opens on the Checks tab.

  2. 2

    Pick a tab

    The tabs are Checks, Ignored issues, Crawl, Schedule, Alerts, Search Console, SDK & CI/CD, Members, History and Danger zone. The tab is saved in the address, so you can bookmark it or send it to a colleague.

    On a narrow screen the tabs become a Settings category menu. Don't see SDK & CI/CD? Only workspace admins see it.

app.pixyscan.com/w/…/s/…/settings

Site settings on the Checks tab: a band stating 202 checks across 10 categories, then a card per category listing example checks with a View all link.
The Checks tab shows one card per category, with what it tests and how many checks it holds.

The ten tabs#

What each tab controls.

FieldControlsWhat it does
ChecksWhat gets testedAll 202 checks, grouped into their 10 categories. Every category runs on every scan and cannot be switched off. Checks your tier does not include are dimmed with a padlock.
Ignored issuesWhat you ignoredChecks you chose to ignore, everywhere or only on some pages. An ignored finding is badged and can be hidden from your lists, but it still counts towards your health score until it is fixed.
CrawlWhat gets fetchedFour cards: which URLs are crawled, how pages are fetched, sign-in details for protected sites, and this site's PageSpeed key.
ScheduleWhen it runsDaily, weekly or monthly scans in your own timezone. Included from Hobby up.
AlertsWho is toldThree email switches, plus a Slack webhook URL and a generic webhook URL.
Search ConsoleGoogle search dataAgree to what PixyScan stores and who sees it, connect a Google account with read-only access, and choose this site's Search Console property, for the Search performance screen and Search impact. If the data-use terms change, a consent card here asks the person who connected the site to tick I agree and press Confirm and resume. Included from Basic up; changing it needs admin access to the site.
SDK & CI/CDBuild checksThe client secret, the score gate and the branch-to-URL list your pipeline uses. Included from Basic up. Only workspace admins see this tab.
MembersWho has accessPeople added to this site and their role. Site members see its scans and reports, and workspace admins always have access to every site.
HistoryWhat changedThe latest 20 settings changes, with who made each one, when, and each value before and after.
Danger zoneRemoving the siteDisconnect site stops crawling it and deletes its scan history and issue tracking. You can add the site again later, but its history does not come back.

Crawl#

Each of the four cards on the Crawl tab has its own Save button.

FieldDefaultWhat it does
Include URLs or patternsBlankLimit the scan to matching URLs, such as https://example.com/blog. Blank crawls every reachable URL. You can add up to 20.
Exclude patternsBlankSkip matching URLs, such as https://example.com/admin. A URL that matches both lists is always skipped.
When a URL matchesPrePre skips a matching page before it is fetched, along with anything reachable only through it. Post fetches the page and follows its links, but leaves its data out of the results.
Max depthUnlimitedHow many links deep to follow, from 1 to 50. When a depth is set, URLs found only in your XML sitemap are not crawled.
Page budgetYour tier's limitThe most pages one scan may visit. If you set more than your tier and remaining credits allow, the scan is refused, not trimmed.
Also crawl from sitemap.xmlOnAdds the pages listed in your XML sitemap to the pages found by following links.
Respect robots.txtOnCrawls the way a search engine would, obeying robots.txt, rel="nofollow", meta robots and X-Robots-Tag.
JS renderingServer HTMLServer HTML reads the page as your server sends it, which is fast and right for most sites. Rendered JavaScript runs the page in a headless Chrome browser first, for sites that build their content in the browser.
User agentDefault (pixyscan-bot)How the crawler identifies itself: the default, Desktop Chrome, Mobile Chrome, Googlebot (smartphone), or a custom string.
Rate limit healingOffWaits a set number of seconds between pages, for servers that block fast crawlers. A long delay can stop a large scan from finishing.
Signing in to this siteOffHTTP Basic Auth (a username and password) and up to 10 custom headers, for staging or preview sites behind a login. Values are stored encrypted and never shown again.
PageSpeed reportsWorkspace keyTurn off Use workspace PageSpeed settings to give this site its own Google PageSpeed API key.

Why is an option locked?

Some options depend on your tier. Rendered JavaScript is included from Pro up. It makes scans take roughly five to ten times longer, but each page still costs one URL credit. Core Web Vitals (Google's page speed scores) are included from Hobby up and need a Google PageSpeed API key. A larger page budget uses more of your monthly credits.

Schedule#

A schedule scans the site for you, daily, weekly or monthly. Included from Hobby up.

Each scheduled scan is compared with the one before it, and Changes then shows what is new, what was fixed and what is still open.

  1. 1

    Open the Schedule tab and press New schedule

    You can also open the menu beside Scan now and choose Schedule scans.

  2. 2

    Choose how often, and when

    Give the schedule a name, then complete the sentence: every day, every week on a weekday, or every month on a date from the 1st to the 28th, at a time you pick. The time uses your browser's timezone, which is shown beside the first run date.

  3. 3

    Press Create schedule

    The schedule appears as a card with its next and last run. You can pause, edit or delete it there, and deleting it keeps the scans that already ran.

How often should I scan? As often as the site changes. Publish every day? Scan daily. Rarely change it? Monthly is enough.

What if PixyScan was down? Missed runs are run once when service returns, however many were missed.

Every scheduled scan uses credits

Each scan uses one URL credit per page. A daily scan of a 400-page site uses about 12,000 credits a month. That is more than the 5,000 Hobby includes. Check your numbers on the Billing screen.

Alerts#

Alerts tell people about scans by email, in Slack, or through a webhook (an automatic message sent to a web address you choose).

  1. 1

    Choose the email switches

    Email when a scan finishes or fails, and Email when the score drops or a new Critical issue appears, are both on by default. They apply to the whole site, and they also decide which events go to Slack and the webhook.

    The third, Email when search clicks drop after a deploy, is also on by default. It controls the email only: the alert still shows in the app, and Slack and the webhook get it whenever their URLs are set. It needs Search Console connected and a plan that includes Search impact, and it is decided about a week after the deploy. See Search impact for when it fires.

  2. 2

    Paste a webhook URL to add a channel

    Slack webhook URL takes a Slack incoming webhook, and Generic webhook URL takes any address that accepts JSON. Both must start with https://, and an empty box turns that channel off.

  3. 3

    Press Save notifications

    The new settings apply to the next scan.

Every alert also appears in the bell and on Site alerts inside the app.
FieldWhere it can goWhat it does
Scan completedEmail · Slack · WebhookA scan finished. The email includes the score, new and fixed issues, and a link to the report.
Scan failedEmail · Slack · WebhookA scan could not finish. Keep this on, so you notice if scheduled scans stop working.
Score decreasedEmail · Slack · WebhookThe health score dropped compared with the previous scan. It is only sent when there is a previous scan.
New critical issueEmail · Slack · WebhookA critical check that the previous scan did not report is now failing. Ignored checks never trigger it.
Search traffic dropped after a deployEmail · Slack · WebhookGoogle clicks in the 3 days after a production deploy fell sharply compared with the same days of the previous 4 weeks. Needs Search Console and a deploy from your pipeline.
Score below thresholdIn-app onlyThe score is below the score gate set on SDK & CI/CD, which is 97 unless you change it. It shows in the bell and on Site alerts only.

Emails go to this site's members and to workspace admins. Each email has a one-click unsubscribe link, which stops alert emails for that one person without changing the settings for anyone else. The alert list itself is on Site alerts.

SDK & CI/CD#

CI/CD is the automated pipeline that builds and publishes your site. Add one command after each deploy, and it can stop a release when the health score drops.

  1. 1

    Create the client secret

    Press Create the secret. It starts with sk_live_ and is shown only once, so save it straight away in your CI provider's secrets. Regenerating it replaces the old one, so any pipeline still using the old secret stops working.

  2. 2

    Match your branches to URLs

    Under Which URL each branch scans, press Add environment and enter a name, a branch (or a pattern such as release/*) and the URL to scan. This makes a scan from a preview branch check the preview site, not your live site. A branch with no matching environment is refused.

  3. 3

    Add the command after your deploy step

    The SDK scans a live URL, so the site must be deployed before the command runs.

  4. 4

    Set the score gate to today's score

    Do not leave it at the default of 97. The warning below explains why.

app.pixyscan.com/w/…/s/…/settings?tab=sdk

The SDK and CI/CD tab: the site's client secret and the list matching branches to environment URLs.
Create the client secret here, and match each branch to the URL it should scan.

.github/workflows/seo.yml

- name: PixyScan gate
  run: npx pixyscan-sdk run --client-secret "$PIXYSCAN_SECRET"
  env:
    PIXYSCAN_SECRET: ${{ secrets.PIXYSCAN_SECRET }}

The branch is detected automatically on GitHub Actions, GitLab CI, CircleCI, Bitbucket Pipelines and Vercel. Under Checks that fail the build you can also list specific checks that fail the build whenever they are found, whatever the score, with pages exempted per check. Leave that list empty to gate on the score alone.

From version 1.2.0 the command also sends the commit each scan ran for. It is read on its own on GitHub Actions, GitLab CI, Bitbucket Pipelines, CircleCI, Vercel and Netlify, with a link to the commit where the CI gives one, so there is nothing to set up. A tag build is also labelled with its tag, such as v2.4.0. Nothing else is ever used as a release label. With Search Console connected, each deploy of your production branch is marked on the site's clicks trend with its commit, and a sharp drop in clicks in the 3 days after it sends an alert. If you pin the SDK in package.json, use 1.2.0 or later.

To set the values yourself, pass --commit <sha>, --commit-url <url> or --release <label>. On a GitHub pull_request run, GITHUB_SHA is a merge commit GitHub made, so pass --commit "${{ github.event.pull_request.head.sha }}" to record the pull request's own commit. --no-commit stops the command reading the commit from your CI. A commit value PixyScan cannot use is left out and the scan runs as normal. Only a malformed value you typed as a flag stops the command, with exit code 2.

.gitlab-ci.yml

seo-gate:
  image: node:20
  script:
    - npx pixyscan-sdk run --client-secret "$PIXYSCAN_SECRET"
Fail the build only on exit code 1. The other codes mean the check itself could not run.
FieldExit codeWhat it does
Passed0The score met the score gate, and no listed check was found.
Gate failed1The score is below the gate, or a check on your fail list was found. This is the code that should fail the build.
Bad input2Something in the pipeline setup is wrong, such as a missing secret, an unknown branch or a wrong config path. Fix the setup and run it again.
Outage3PixyScan could not be reached, or the scan did not finish in time. Retry the step.

Change the default score gate

The gate starts at 97 out of 100, so your first build will probably fail. Set it to your current score, then raise it as you fix things. The same number decides when the in-app Score below threshold alert fires. How the gate works

After you change a setting#

Why didn't my results change? Settings apply to your next scan, not to the results on screen.

Changing a crawl setting does not change the scan already on screen. Until you scan again, the site's screens show a notice saying your settings have changed since this scan, with a Rescan button and a link to review the settings. The History tab records what changed, who changed it and when.

app.pixyscan.com/w/…/s/…/settings?tab=history

The settings History tab: a list of settings changes with what changed and when.
The History tab. Look here first when the score moved but nobody deployed anything.

Does something here not match what you see in the app? Tell us