The reporting infrastructure you've been putting off building.
Connect databases, write SQL, schedule delivery, react to changes, monitor endpoints — one workspace, no backend to maintain.
Three steps. One pipeline. End to end.
The same workflow runs every report, every watch, every campaign — connect, query, deliver. Everything else is configuration.
Bring your database in 60 seconds.
Pick a driver, paste credentials, test the connection. DataRunner encrypts secrets at rest, browses your live schema, and shows latency right in the connection card — no separate tool to manage.
Connections
6
Healthy
5
Avg latency
24ms
Write SQL with the editor you already know.
Monaco-powered workbench with schema-aware autocomplete, multi-tab state that survives refresh, parameter placeholders that carry into schedules, and a preview that runs the actual query.
SELECT
date_trunc('week', created_at) AS week,
COUNT(*) AS orders,
SUM(total_cents)/100.0 AS revenue_usd
FROM orders
WHERE status = 'fulfilled'
AND created_at >= now() - INTERVAL '90 days'
GROUP BY 1 ORDER BY 1 DESC;Schedule, watch, monitor, broadcast.
A query plus a cron expression plus a channel becomes a report. A query plus a polling interval becomes a watch. Both write to the same audit log, both retry the same way, both fan out to email, Slack, S3, or webhook in parallel.
Every module. One workspace. No add-on tax.
Each module owns a clean responsibility. Together they cover the full path from credentials to inbox — query, deliver, monitor, alert, and reach out.
15+ database connectors
Native drivers per database. SSL, SSH tunnels, health monitoring, schema snapshots, encrypted credentials per workspace.
Monaco SQL editor
Multi-tab Monaco editor with schema-aware autocomplete, parameterized queries, live preview, snippet library.
Cron schedules
Any expression from */1 to "first Monday at 09:00". CSV, Excel, PDF output. Fan-out to multiple channels per run.
Event-driven triggers
Poll any SQL condition from 60 seconds. Per-row deduplication. Same delivery shape as scheduled reports.
HTTP endpoint checks
GET, HEAD, or POST probes from 30 seconds. Consecutive-failure thresholds. Auto-open and auto-close incidents.
4 channels per report
Email, Slack, S3, and webhooks. Parallel fan-out, per-recipient log, retry with exponential backoff.
Unified history log
Every run from every source in one filterable, exportable log. Append-only, with before/after JSON diffs.
Marketing broadcasts
Draft → scheduled → sending → sent. Broadcast lists deduped at send. Per-recipient delivery receipts.
KPI + charts + tables
Drag-and-drop grid. KPI widgets, line/bar/pie charts, paginated tables. Auto-refresh from 10s to 1h.
Semantic layer
One canonical, parameterizable SQL definition per number. Dashboards and the API all read the same source of truth.
Tables & lineage
Searchable inventory of every introspected table and column, annotated with descriptions and tags your team owns.
Server metrics agent
Lightweight push agent streams CPU, memory, disk and network from Linux and Windows boxes — no inbound ports.
Public uptime pages
Shareable status pages assembled from your monitors. Component status and incident history at a clean URL.
Routes & on-call
Match alerts to routes, escalate through tiers, page whoever is on call, and silence noise during maintenance windows.
Audience & consent
Contacts and broadcast lists with double opt-in, suppression, and one-click unsubscribe enforced at send time.
Automated drips
Multi-step email workflows — email, wait, condition, webhook — that advance contacts on signup, tag, or API event.
Embeddable capture
Drop-in HTML signup forms with Turnstile/hCaptcha that feed submissions straight into a broadcast list.
One process. Boring on purpose.
A single .NET service runs the API, the scheduler, the executors, and the delivery workers — no message bus, no separate cron container, no Redis hop on the read path.
Workbench, dashboards, settings
Auth, queries, schedule registry
Hangfire job queue + cron parser
15+ native drivers · pooled · TLS
Email · Slack · S3 · Webhook
Append-only history · JSON diffs
Three workflows. One install.
Illustrative scenarios — the same primitives compose into a different shape for every team that touches the database.
Finance gets the weekly revenue rollup before Monday standup. Without me touching it.
A SQL query against the orders table, scheduled for Mon 09:00 UTC, delivered as a multi-sheet XLSX to a five-person email list. Failures page the on-call channel; successes update the dashboard on the wall.
When a failed payment lands, the support channel knows about it before the customer does.
A watch on the payments table polls every 60 seconds for new rows where status = failed. Each fire posts a Block Kit message in Slack with the customer email, amount, and a link back to the run. No CDC, no replication slot.
The synthetic checks live in the same audit log as the rest of the pipeline. Less to grep.
Eight HTTP monitors against the public API, the login flow, and the payments endpoint. Two consecutive failures opens an incident with the start time, status code, and response body. Auto-closes on the first 200.
Native drivers. First-class channels.
Connect to your existing stack. No JDBC bridges, no third-party data-shipper, no sidecar.
15+ databases, same workflow
Pick a driver, paste credentials, test the connection. The query syntax is whatever the source speaks; everything around it — auth, retry, scheduling, delivery — is identical.
Four channels, parallel fan-out
Every report can deliver to any combination of channels in the same run. Per-recipient log, per-channel retry. One channel failing does not block the others.
SMTP or transactional API. Attach CSV, Excel, PDF, or embed a summary in the body.
Slack
Post to any channel or DM. Attach the report as a file or render a Block Kit summary.
Amazon S3
Drop files into any S3-compatible bucket with templated paths and timestamps.
Webhook
POST JSON payloads to any HTTP endpoint with custom headers and auth tokens.
What DataRunner is — and what it is not.
An honest matrix. We have a clear opinion about where this tool sits, and where it does not belong.
Built for the whole team — without a six-week rollout.
Owner, Admin, Editor, Viewer roles ship on day one. Custom roles per workspace when that gets crowded. SAML SSO, scoped API keys, and column-level masking for PII.
- Workspaces isolate connections, schedules, billing, and audit trails
- Custom roles with a granular permission grid
- SAML 2.0 SSO with JIT provisioning
- API keys scoped per workspace, with expiry and one-click revoke
- Column-level masking redacts PII from previews and exports
Run the first report before lunch.
Connect a database, write your SQL, set a schedule. No credit card, no infrastructure, no engineering team required.