See what every bot and crawler does on your CloudFront distribution

Salience reads your CloudFront real-time logs and turns them into verified bot identities, crawl and error analysis, and alerts that name the addresses, paths and user agents involved, and imports your existing standard log files alongside, deduplicated.

Any AWS account. Salience holds no credentials and touches nothing: your pipeline delivers records to an endpoint. No website or DNS changes, and your existing standard log files import alongside.

The Log Explorer page for demo-site.example once CloudFront is connected through Kinesis + Firehose real-time logs: the Website setup strip shows Logs Receiving, and the table fills with Googlebot requesting /catalog/summer-collection, status 200, Verified; PerplexityBot requesting /guides/returns, status 200, Verified; Googlebot (claimed) requesting /.env, status 403, Unverified; Applebot requesting /assets/old-bundle.js, status 404, 404 spike. First hour on the distribution: 54,118 requests.

Other log sources

CloudFront logs sit in an S3 bucket and rarely get read

CloudFront records every request it serves and drops the files in S3, faithfully, forever. What happens next is the same story at almost every organisation.

Standing up Athena over the log bucket, writing a query when a question comes up, and paying for a scan every time somebody wants an answer.

Building a pipeline into your data warehouse, which works, and then discovering that nobody outside the data team can get an answer out of it without asking first.

Reading CloudWatch metrics that show error rates are up without saying which paths, which clients, or whether the clients were even genuine.

Taking user agents at face value, because verifying claimed crawlers against published address ranges is another engineering project nobody has budgeted for.

Salience classifies every request CloudFront serves

Real-time logs stream in as your distribution serves them: humans, verified crawlers, AI agents and suspicious automation, separated and counted.

The Salience dashboard for demo-site.example, last 24 hours. Website setup 5 of 6 completed. Traffic over time in fifteen-minute buckets, human and bot requests stacked. Bot identity evidence: 12.1K verified requests, 762 unverified claims, 2.7K with verification unknown. Total requests 34.2K, up 7.0% on the previous period. Unique IPs 15.3K, up 2.0%. Bot traffic 45.5%, down 1.9 points. AI crawlers 18.5%, down 8.0 points.

Delivery is typically seconds to a couple of minutes depending on your buffer settings. Standard log files import alongside and deduplicate automatically.

Check that a crawler is who it says it is

Every claimed identity is checked against the provider's own published address ranges. Genuine Googlebot, Bingbot, GPTBot and ClaudeBot are separated from the scrapers borrowing their names from datacentre addresses, and the impostors are listed with the addresses responsible.

200+Crawler identities recognised, verified against published ranges where providers publish them

Bots and Crawlers on demo-site.example, last 24 hours: 15,541 bot requests, 12,233 verified, 655 failed verification, 2,653 other status. Served versus rejected: Googlebot 357 served, 34 rejected, Impersonators only, 0 verified · 34 unverified; Amazonbot 3,934 served, 16 rejected, The real bot, 16 verified · 0 unverified; Attack Path Probe 413 served, 104 rejected, Not verifiable, 0 verified · 104 unverified.

Get answers without writing a query

No Athena scan to pay for, no warehouse job to schedule, no analyst in the loop. Crawl behaviour, error patterns and automated traffic are already computed per path and per section, and anyone on the team can read them or ask in plain English.

5 minDetection cycle on Starter plans and above

Path Analysis on demo-site.example, last 24 hours: Total Requests 34,163, Unique Paths 17,700, 4xx Errors 3,272, 5xx Errors 28. Top paths: / 1,704 requests, 5.0% of total, importance 7; /page-8a5da5 1,245 requests, 3.6% of total; /robots.txt 376 requests, 1.1% of total; /page-29d247/page-08a441 202 requests, 0.6% of total, importance 5; /favicon.ico 183 requests, 0.5% of total; /page-29d247/page-900bc8 161 requests, 0.5% of total, importance 5; /apple-touch-icon.png 120 requests, 0.4% of total.

Import the logs already in your bucket

Standard CloudFront access-log files upload directly, with format detection and deduplication against anything already streaming. The history sitting in your S3 bucket becomes a baseline instead of a storage cost, and imports never count against your monthly request quota.

Import Logs on demo-site.example. Import jobs and current progress. Each job retains its own source dates. Import Historical Logs: Upload CloudFront or Apache/Nginx log files, or a log-analyser Events CSV, to analyse historical traffic data. Drag & drop log files, or click to browse (multiple files supported). Supported formats: CloudFront, Apache/Nginx, log-analyser Events CSV (.log, .txt, .csv, .gz, .zip). Supported formats: CloudFront standard/real-time logs, Apache/Nginx Combined Log Format, log-analyser Events CSV Auto-detection: We'll automatically detect the log format and parse the data Compressed files: .gz and .zip files are supported and will be decompressed automatically

How it works

Connect

Configure CloudFront real-time logs to deliver through Kinesis and Firehose to the endpoint Salience generates, selecting the 23 log fields in the order the app lists them. Salience checks the field order on the first batch and rejects a misaligned configuration loudly rather than storing bad data. Guided instructions are in the app; your distribution's behaviour is unchanged.

We analyse

Each record is classified against the crawler registry, verified against published provider ranges, grouped by URL section and compared with your own history, sitemap, robots.txt and Search Console data.

Get answers

Dashboards, alerts by email, Slack or webhook, plain-English querying, an API and a CLI. Upload your standard log files at any point to backfill history.

Specification

Collection method
CloudFront real-time logs delivered through Kinesis and Firehose
Data freshness
Seconds to minutes
Typical setup time
Roughly 30–60 minutes in the AWS console
Plan requirement
Any AWS account. Real-time logs, Kinesis and Firehose carry AWS usage charges
Permissions needed
IAM permissions to configure CloudFront real-time logs, Kinesis and Firehose
Code or DNS changes
None to your website and no DNS changes
Historical import
Yes. Standard CloudFront access-log files import with deduplication
Key limitation
Real-time logs deliver the sampling rate you configure. At 100% Salience sees every request CloudFront serves; below that it sees a representative sample, and Salience will not pretend otherwise. The AWS delivery components are billed by AWS on your account.

Why not just query the logs in Athena?

You certainly can, and for some questions you should. CloudFront's standard logs, CloudWatch metrics, the built-in reports and Athena over the log bucket are a capable combination, and if you have a data team that enjoys this work you can build most of what follows yourself. Plenty of organisations have. The honest comparison is not capability, it is cost and standing: what you pay per question, who is able to ask one, and whether anything is watching when nobody is asking.

Query the raw records

Athena, CloudWatch, CloudFront reports
Yes, and flexibly
Salience
Yes, plus plain-English querying

Cost per question

Athena, CloudWatch, CloudFront reports
An Athena scan each time
Salience
Included; no per-query charge

Who can get an answer

Athena, CloudWatch, CloudFront reports
Someone who writes SQL
Salience
Anyone on the team

Bot identity verified against published ranges

Athena, CloudWatch, CloudFront reports
You would build and maintain this
Salience
Included, across 200+ crawler identities

Search and AI crawler interpretation

Athena, CloudWatch, CloudFront reports
You would build and maintain this
Salience
Crawl budget, index context, training versus retrieval

Watching when nobody is asking

Athena, CloudWatch, CloudFront reports
Alarms on metrics you define
Salience
16 detectors on a 5-minute cycle, each naming a next step

Joined to sitemap, robots.txt and Search Console

Athena, CloudWatch, CloudFront reports
Out of scope
Salience
Correlated, so a change links back to its cause

When the native tooling is all you need

If you need arbitrary analysis over years of raw records, or your questions are genuinely bespoke each time, Athena over your log bucket is the right tool and Salience does not replace it. Keep both, they read the same data. Salience is for the standing questions: who is crawling us, is that genuine, what changed, and who should be told without anyone writing a query first.

Facts about the integration

No customer logos and no five-star quotes on this page. These are properties of the product you can check on the free tier in an afternoon.

200+Crawler identities in the registry
16Alert detectors on your stream
5 minDetection cycle, Starter and above
0Athena scans required to get an answer

Illustrative, not a customer incident

A new behaviour on the distribution routes a whole path prefix to the wrong origin, and every request under it starts returning 404. The CloudWatch graphs show the error rate climbing without saying which paths or who is hitting them. In the request stream the 404s appear per path with Googlebot's share separated out, the error-spike alert names the prefix and the verified crawlers affected, and the behaviour is corrected before the crawler returns.

Everything included

One connection, one request stream. No per-feature setup and no second pipeline to maintain.

Verified bot and AI crawler identities

Claimed identities checked against official IP ranges where providers publish them; anything unverifiable is marked unverified rather than guessed at.

The field order, checked

Real-time logs must carry 23 fields in a fixed order. Salience verifies the order on the first batch and tells you exactly which field is out of place, instead of quietly misreading every record.

Crawl budget by section

Where Googlebot's time actually goes across the distribution, which URLs it never reaches, and where the budget is being wasted.

Error, latency and status analysis

2xx through 5xx per path and section, with spike detection against your own baseline rather than a fixed threshold.

Threat and probe detection

sqlmap-style requests, /.env and config fetches, credential-stuffing patterns and impersonation surges, escalated if anything returned a 200.

Alert detectors on a five-minute cycle

Traffic-drop alerts check the site is reachable before they fire, probe alerts check whether the flagged path really serves anything, and every alert is enriched first, so you never get "your site might be down" when it is not.

Standard log import with deduplication

The files already in your S3 bucket upload with format detection, merge cleanly against streamed records, and never count against your quota.

Ask questions in plain English

Ask a question in words rather than SQL, and get an answer without an Athena scan or a ticket to the data team.

Alerts by email, Slack and webhook

Dashboards, email and Slack alerts, webhooks, a public API, a CLI, an MCP server, CSV exports and shared read-only dashboards.

Recommendations with a rule for CloudFront

Addresses to block and fake crawler user agents, scored from the last 30 days of alerts, with a CloudFront Function generated from the list and ready to paste.

Saved segments

Page groups you define by prefix, pattern or query string, with a one-click library of common groups, applied to all history and used in every report, alert and export.

Site checks every night

Twenty-one checks on crawler access, security hygiene and serving quality, each pass, warn or fail with the evidence, 30 days of history and an alert when a verdict changes.

Weekly report and daily digest

A weekly email report per site, a daily digest of lower-severity alerts, and email for anything above the severity you set.

Trust & data protection

Privacy and data protection

You are the controller

We process only on your instructions. GDPR Art. 28 DPA on every account, nothing to sign.

UK data residency

AWS eu-west-2 (London). Encrypted in transit (TLS 1.2+) and at rest (AES-256).

Server-side collection

No browser tracking script and no client-side pixel.

No sale, no pooling

Your logs are never sold, never used for advertising, never shared between customers. DPA, sub-processor list and security overview available.

What is collected

  • Timestamp, method, host and path
  • Status code and bytes served
  • Client address and user agent
  • Edge location, cache result and edge timing

What is never collected

  • Request and response bodies
  • Origin application logs
  • Requests excluded by your sampling rate

Priced on requests, not seats, and separate from your AWS bill: the Kinesis and Firehose charges stay with AWS. Start on the free tier with 500,000 requests a month and upgrade when your traffic does.

Crawler intelligence from $19/mo.

Priced on requests, not seats. Unlimited users on every plan except Solo. Start on the free tier and upgrade when your traffic does. Free trial, no card needed.

Prices in
Free$0
  • 500K requests/mo
  • 1 site
  • 30 days history
  • Unlimited users
  • Real-time analytics, bot and AI detection
Solo$19/mo
  • 5M requests/mo
  • 1 site (+2)
  • 6 months history
  • 1 seat
  • Sitemap and Search Console
Starter$49/mo
  • 20M requests/mo
  • 5 sites (+5)
  • 1 year history
  • Unlimited users
  • Real-time analytics with bot and AI-crawler verification
GrowthPopular$149/mo
  • 100M requests/mo
  • 15 sites (+15)
  • 2 years history
  • Unlimited users
  • AI allowance: ~600 answers or ~60 reports a month
Pro$499/mo
  • 500M requests/mo
  • 50 sites, no ceiling
  • 4 years history
  • Unlimited users
  • AI allowance: ~3,000 answers or ~300 reports a month
EnterpriseTalk to us
  • 1B requests/mo
  • Unlimited sites
  • Custom history
  • Unlimited users
  • SSO / SAML and audit log

Common questions

Real-time logs or standard logs: which do I need?

Both, ideally, and they do different jobs. Real-time logs stream through Kinesis and Firehose and are what makes monitoring and alerting possible. Standard log files land in S3 on a delay and are what you import for history. Most teams connect real-time for monitoring and upload their existing standard files to build a baseline immediately.

How long does setup take, and do I need a developer?

Roughly 30 to 60 minutes in the AWS console for someone with the IAM permissions to configure real-time logs, Kinesis and Firehose. It is the most involved of our integrations, purely because AWS has more moving parts. The app walks through each step, and the work can be delegated from inside Salience without sharing your account.

What does this cost on the AWS side?

Real-time logs, Kinesis Data Streams and Firehose all carry AWS usage charges billed on your own account, and they scale with your traffic. We flag this rather than burying it: it is a real cost of the integration and worth estimating before you enable it at 100% sampling on a high-traffic distribution.

Why does the app say my field order is wrong?

CloudFront lets you pick any subset of fields in any order, and a real-time log with the wrong order still looks valid. Salience expects the 23 canonical fields in the standard order (the setup page lists them) and checks the first batch it receives. If they do not line up it refuses the batch and names the field, so nothing is stored misaligned. Re-select the fields in the listed order and delivery resumes.

Does sampling matter?

Yes, and we will not paper over it. At 100% Salience sees every request CloudFront serves. Below that it sees a representative sample, which is fine for trends and proportions and unreliable for questions about specific rare events: a handful of probe requests against one path can disappear entirely from a 10% sample.

Does Salience get access to our AWS account?

No. The delivery is one-directional: your pipeline sends records to an endpoint. Salience holds no AWS credentials, cannot read your buckets, cannot see other services and cannot change your distribution or any other resource.

Can I import the logs already in my S3 bucket?

Yes, and it is the fastest way to get a useful baseline. Standard CloudFront log files upload with automatic format detection, deduplicate against anything already streaming, and do not count against your monthly request quota.

How is this different from querying with Athena?

Athena answers the question you write, each time, for a scan charge, if you can write SQL. Salience has already computed the standing answers, verifies claimed bot identities against published address ranges, keeps a baseline, joins the data to your sitemap and Search Console, and alerts when something changes without anyone asking. Many teams keep both.

What happens to our data, and where is it stored?

You are the controller; Salience processes only on your instructions under a GDPR Art. 28 DPA that applies to every account. Data is stored encrypted in AWS eu-west-2 (London), never sold, never used for advertising and never pooled between customers.

Can we remove it later?

Disable the real-time log configuration on the distribution, or tear down the Firehose delivery stream, and collection stops immediately. Nothing in your AWS account depends on Salience.

Your logs already show what Google and the AI crawlers are doing.

Any AWS account. Salience holds no credentials and touches nothing: your pipeline delivers records to an endpoint. No website or DNS changes, and your existing standard log files import alongside.