If you manage websites for clients, security reporting is one of those tasks that's easy to put off — until a vulnerability shows up in production or a client asks why their SSL certificate expired last week. Manual checks don't scale past a handful of sites, and inconsistent reporting makes you look unprofessional.
The good news: client security reporting can be almost entirely automated. This guide walks through how to build a reliable, repeatable reporting pipeline that runs on autopilot — covering SSL, security headers, CSP, cookies, DNS, and CORS — and delivers branded reports your clients actually read.
Why Automate Security Reporting in the First Place?
Before getting into the how, it's worth being clear about the why. Manual security audits have three big problems:
- They don't scale. Checking 5 sites manually each month is fine. Checking 50 isn't.
- They're inconsistent. Different team members check different things, and issues slip through.
- They're reactive. You usually find out about expired certificates or broken CSPs from the client, not before.
Automation flips this. You get continuous coverage, consistent output, and early warnings — and you can charge clients a recurring fee for monitoring instead of one-off audits.
What a Good Automated Security Report Includes
Before automating anything, define what you're actually reporting on. A solid client-facing security report should cover:
- SSL/TLS configuration — certificate expiry, protocol versions, cipher strength
- HTTP security headers — HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy
- Content Security Policy (CSP) — presence, strictness, unsafe directives
- Cookie security — Secure, HttpOnly, SameSite flags
- DNS hygiene — SPF, DKIM, DMARC, CAA records
- CORS configuration — overly permissive Access-Control-Allow-Origin headers
- Overall grade — a single A–F score so non-technical clients understand status at a glance
The grade matters. Clients don't read 30-page PDFs, but they do react to a B turning into a D.
Step 1: Pick Your Scanning Engine
You have three realistic options:
Option A: Stitch together open-source tools
You can chain together tools like testssl.sh, nmap, Mozilla Observatory's CLI, and custom scripts for header parsing. This is flexible but high-maintenance — you'll spend more time managing the toolchain than reporting.
Option B: Use a hosted scanner with an API
Tools like WebSentry run scans across SSL, headers, CSP, cookies, DNS, and CORS in one pass and return a structured grade. This is usually the right choice for agencies because you skip the infrastructure work entirely.
Option C: Build in-house
Only worth it if security scanning is your core product. For most agencies, it's not.
Step 2: Schedule Recurring Scans
Once you have a scanner, automate the trigger. A weekly or bi-weekly cadence works well for most client sites — frequent enough to catch issues, infrequent enough to avoid noise.
A simple GitHub Actions workflow looks like this:
name: Weekly Security Scan
on:
schedule:
- cron: '0 9 * * 1'
jobs:
scan:
runs-on: ubuntu-latest
steps:
- name: Run scan
run: |
curl -X POST https://api.example.com/scan -H "Authorization: Bearer ${{ secrets.API_KEY }}" -d '{"url":"https://client-site.com"}'You can also use cron on a small VPS, AWS Lambda with EventBridge, or a workflow tool like n8n or Zapier if you prefer no-code.
Step 3: Store Results and Track Trends
One-shot reports are useful, but trends are where the real value is. Push each scan's results into a database — Postgres, Airtable, or even a Google Sheet — with these columns:
- Scan date
- Client name / site URL
- Overall grade
- Individual category scores (SSL, headers, CSP, etc.)
- Number of issues found by severity
- Raw JSON payload (for debugging)
Now you can show a client "your grade went from C to A over the last quarter" — which justifies your retainer better than any feature list.
Step 4: Generate Branded Client Reports
Raw JSON isn't a client deliverable. You need to transform it into something readable. Three approaches:
- PDF generation — Use a templating engine (Handlebars, Jinja) plus a tool like Puppeteer or WeasyPrint to render branded PDFs.
- Hosted dashboards — Give clients a login to view live status. Higher perceived value, more setup work.
- Email summaries — A simple HTML email with the grade, top 3 issues, and a link to full results. Often the most effective format.
Whatever you pick, keep the executive summary short: grade, change since last scan, top issues, recommended next actions. Save the deep technical detail for an appendix or linked dashboard.
Step 5: Set Up Alerts for Regressions
Scheduled reports are good. Real-time alerts are better. Configure your pipeline to notify you immediately when:
- A site's grade drops by a letter or more
- An SSL certificate is within 14 days of expiry
- A previously passing header check now fails
- A new critical issue appears (e.g., missing CSP after a deploy)
Send these to a Slack channel, Discord webhook, or PagerDuty — wherever your team actually looks. The goal is to fix issues before the client notices.
Step 6: Productise It
Once the pipeline runs reliably, package it as a service. "Monthly Security Monitoring" at a fixed monthly fee per site is an easy upsell, especially if you can show:
- Continuous A–F grading
- Monthly branded reports
- Same-day alerting on regressions
- Remediation recommendations
Most agencies underprice this because they think of it as a checkbox. Clients value it because it's the difference between getting hacked and not.
A Realistic Stack to Start With
If you want to ship something this week, here's a minimal stack:
- Scanner: WebSentry's API for grading and category breakdowns
- Scheduler: GitHub Actions cron jobs
- Storage: Postgres (Supabase works fine)
- Reports: Puppeteer + an HTML template, output to S3
- Alerts: Slack webhook on grade regression
- Delivery: Monthly email with PDF attached, link to dashboard
That's a complete reporting system you can build in a weekend and run for years.
Wrapping Up
Automating client security reporting isn't about fancy tools — it's about consistency. Pick a scanner, schedule it, store the results, and turn them into something your clients can act on. Once it's running, you'll catch issues earlier, deliver more value, and free up hours every month that used to go into manual checks.
If you want to see what an automated security report looks like before building the pipeline, run a free scan at websentry.dev — you'll get an A–F grade across SSL, headers, CSP, cookies, DNS, and CORS in under a minute, and a clear picture of what your client reports could include.
Check your own site
Run a free security scan and see if your site has the issues covered in this article. Results in under 30 seconds.