Dashello API
Push any data into your Dashello dashboard — numbers, tasks, events, or complex objects. Every connected app is inbound-only. Dashello never pushes your data outward.
Table of Contents
- Authentication
- Errors
- POST /ingest/metric — Push a single metric
- POST /ingest/batch — Push multiple metrics
- POST /ingest/data — Push any data
- POST /ingest/tasks — Push tasks
- QuickBooks integration
- Stripe integration
- HubSpot integration
- JobTread integration
- Google Sheets integration
- Zapier / Make integration
- Rate limits
- SDK examples
Authentication
Every request to the API requires an API key sent as a Bearer token in the Authorization header. You generate API keys from your Dashello Settings → API Keys page.
How to authenticate
# Include your API key in the Authorization header curl https://dashello.co/api/ingest/metric \ -X POST \ -H "Authorization: Bearer dash_abc123..." \ -H "Content-Type: application/json" \ -d '{ "metric": "revenue", "value": 12345 }'
Key format
All API keys start with dash_ followed by a unique string. Example: dash_a1b2c3d4e5f6.... You can create named keys for each integration (e.g. "QuickBooks", "Stripe") and revoke them individually.
Header format
Authorization: Bearer dash_your_api_key_here
Errors
The API returns standard HTTP status codes and a JSON error body:
| Status | Error | Meaning |
|---|---|---|
| 401 | invalid_api_key | API key not found, revoked, or expired |
| 400 | invalid_payload | Missing required fields or invalid value |
| 404 | no_dashboard | No dashboard found for that API key |
| 429 | rate_limited | Too many requests. See rate limits below |
| 500 | internal_error | Something went wrong on our end |
# Example error response { "error": "invalid_api_key", "message": "API key not found or revoked" }
POST /ingest/metric
Push a single numerical value into a specific metric on your dashboard. This is the most common endpoint — use it for revenue, leads, costs, or any single number.
Request body
Example — curl
curl https://dashello.co/api/ingest/metric \
-X POST \
-H "Authorization: Bearer dash_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"metric": "revenue",
"value": 123456.78,
"source": "quickbooks",
"timestamp": "2026-05-20T12:00:00Z",
"metadata": { "currency": "USD" }
}'
Response — matched a metric
{
"ok": true,
"inboxed": false,
"metric_id": "found",
"previous_value": "$119,000.00",
"new_value": "$123,456.78"
}
Response — no matching metric (inboxed)
{
"ok": true,
"inboxed": true,
"metric_id": null,
"previous_value": null,
"new_value": "123,456.78"
}
POST /ingest/batch
Push multiple metric values in a single request. Use this for efficiency when sending multiple data points at once.
Request body
Example
curl https://dashello.co/api/ingest/batch \
-X POST \
-H "Authorization: Bearer dash_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"metrics": [
{ "metric": "revenue", "value": 50000, "source": "quickbooks" },
{ "metric": "expenses", "value": 32000, "source": "quickbooks" },
{ "metric": "profit", "value": 18000, "source": "quickbooks" }
]
}'
Response
{
"ok": true,
"results": [
{ "metric": "revenue", "status": "updated" },
{ "metric": "expenses", "status": "updated" },
{ "metric": "profit", "status": "inboxed" }
]
}
POST /ingest/data
Push any JSON data into your Dashello inbox. Unlike /ingest/metric, this endpoint accepts arbitrary objects, text, or complex data — invoices, contacts, leads, or any business object.
Request body
Example — push an invoice object
curl https://dashello.co/api/ingest/data \
-X POST \
-H "Authorization: Bearer dash_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"source": "quickbooks",
"data_type": "invoice",
"invoice_id": "INV-1042",
"customer": "Acme Corp",
"total": 12500.00,
"status": "paid",
"due_date": "2026-06-01"
}'
Response
{
"ok": true,
"inboxed": true,
"message": "Data received and stored in inbox"
}
POST /ingest/tasks
Push tasks directly into your Dashello Tasks page. Use this for importing tasks from project management tools like Asana, Trello, or Jira.
Request body
Each task object:
Example
curl https://dashello.co/api/ingest/tasks \
-X POST \
-H "Authorization: Bearer dash_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"source": "asana",
"tasks": [
{ "text": "Review Q2 budget", "dueDate": "2026-06-15", "priority": true },
{ "text": "Update team on project status", "notes": "Include timeline changes" }
]
}'
Response
{
"ok": true,
"created": 2,
"total": 17
}
Native App Integrations
Dashello offers native OAuth 2.0 integrations for QuickBooks, Stripe, HubSpot, JobTread, and Google Sheets. These integrations pull data from each platform automatically — no manual setup or API calls required beyond the initial connection. Connected apps appear in your Integrations page where you can browse data catalogs, assign data points to dashboard metrics, and trigger one-click syncs.
QuickBooks Integration
Connect QuickBooks Online to automatically sync your accounting data — P&L, balance sheet, invoices, bills, customers, accounts receivable, and more.
How to connect
Navigate to Settings → Integrations → QuickBooks. Click "Connect."
You'll be redirected to Intuit's OAuth page. Log into your QuickBooks account and authorize Dashello to read your company data.
Once authorized, Dashello automatically syncs your QuickBooks data. Click "Sync Now" on the QuickBooks integration page to trigger a manual refresh anytime.
Browse the data catalog, select the data points you want (e.g. "Revenue MTD", "Accounts Receivable", "Open Invoices"), and assign them to metric boxes on your dashboard.
Data catalog — 66 data points across 15 groups
Revenue & Profit
Balance Sheet
Cash & Liquidity
Invoices
AR / AP Aging
Bills, Customers & More
API endpoints used
| Action | Endpoint |
|---|---|
| Connect | GET /api/quickbooks |
| OAuth callback | GET /api/quickbooks/callback |
| Sync metrics | GET /api/quickbooks?action=metrics |
| Disconnect | POST /api/quickbooks |
Stripe Integration
Connect Stripe to track payments, subscriptions, MRR, churn, customers, invoices, payouts, and processing fees — all automatically synced to your dashboard.
How to connect
Navigate to Settings → Integrations → Stripe. Click "Connect."
You'll be redirected to Stripe's OAuth page. Authorize Dashello to access your account data (read_write scope).
Once connected, click "Sync Now" to pull in your latest Stripe data — MRR, churn, revenue, customers, subscriptions, and more.
Browse the data catalog and assign metrics like "Monthly Recurring Revenue", "Active Subscriptions", or "Payment Success Rate" to your dashboard boxes.
Data catalog — 64 data points across 9 groups
Revenue & Balance
Subscriptions & MRR
Customers
Invoices
Payments & Risk
Payouts, Growth & Plans
/api/stripe-cron-sync) is available for scheduled background syncs.API endpoints used
| Action | Endpoint |
|---|---|
| Connect | GET /api/stripe |
| OAuth callback | GET /api/stripe-callback |
| Sync metrics | GET /api/stripe?action=metrics |
| Disconnect | POST /api/stripe |
HubSpot Integration
Connect HubSpot CRM to sync contacts, deals, pipeline stages, companies, and engagement activity — calls, meetings, emails, notes, and tasks.
How to connect
Navigate to Settings → Integrations → HubSpot. Click "Connect."
You'll be redirected to HubSpot's OAuth page. Log in and authorize Dashello to read your CRM data (contacts, deals, companies, content).
Click "Sync Now" on the HubSpot integration page. Dashello pulls contacts, deals, pipeline stages, companies, and engagement metrics.
Assign data points like "Open Deals", "Win Rate", "New Contacts (MTD)", or "Total Pipeline Value" to your metric boxes.
Data catalog — 26 data points across 5 groups
Contacts
Deals
Pipeline Stages
Companies
Engagements
/api/hubspot-cron-sync) for scheduled background syncs. The OAuth connection uses refresh tokens with automatic rotation.API endpoints used
| Action | Endpoint |
|---|---|
| Connect | GET /api/hubspot |
| OAuth callback | GET /api/hubspot-callback |
| Sync metrics | GET /api/hubspot?action=metrics |
| Cron sync | GET /api/hubspot-cron-sync |
| Disconnect | POST /api/hubspot |
JobTread Integration
Connect JobTread to sync construction business metrics — active jobs, revenue, costs, gross profit, pipeline, accounts receivable, invoices, and job-level financials.
How to connect
In JobTread, go to Settings → API and copy your Grant Key.
Go to Integrations → JobTread, paste the Grant Key, and click Connect. Dashello validates the key and discovers available data fields.
Dashello registers a webhook with JobTread so your data stays updated when jobs, invoices, estimates, or payments change.
Browse the data catalog — 60+ data points across 9 groups — and assign them to metric boxes. Per-job financials automatically populate project cards.
Data catalog — 60+ data points across 9 groups
Jobs
Revenue
Profit
Sales Pipeline
Cash & Receivables
Job Financials & More
API endpoints used
| Action | Endpoint |
|---|---|
| Connect | POST /api/jobtread-connect |
| Manual sync | GET /api/jobtread-sync |
| Cron sync | GET /api/jobtread-cron-sync |
| Webhook receiver | POST /api/jobtread-webhook |
| Status check | GET /api/jobtread-status |
| History | GET /api/jobtread-history |
| Disconnect | POST /api/jobtread-disconnect |
Google Sheets Integration
Connect Google Sheets to pull live cell values into your Dashello dashboard. Map individual cells to metric boxes, and they update automatically.
How to connect
In Dashello Integrations → Google Sheets, click "Connect." Authorize Dashello to read your spreadsheets.
Search for a spreadsheet by name or paste a Google Sheets URL. Dashello lists the sheets and their contents.
Click a cell, give it a label, and assign it to a metric box on your dashboard. The cell value (numeric or text) will update your metric.
Click "Refresh" on a mapped cell to pull the latest value. Cells can be refreshed individually or in bulk.
API endpoints used
| Action | Endpoint |
|---|---|
| Connect / all actions | GET/POST /api/google-sheets?action=... |
| OAuth callback | GET /api/google-sheets/callback |
Supported actions: connect, status, disconnect, search, add-by-url, list-spreadsheets, remove-spreadsheet, get-sheets, get-sheet-data, get-cell-value, map-cell, unmap-cell, list-mappings, refresh-cell.
Zapier / Make Integration
Connect Dashello to thousands of apps through Zapier or Make.com automation platforms. Use the API endpoints with your Dashello API key to push data from any trigger.
Zapier
Choose your trigger app (e.g. Gmail, Typeform, Google Sheets).
Select "POST" as the action event.
URL: https://dashello.co/api/ingest/metric — Method: POST — Headers: Authorization: Bearer dash_your_api_key — Include zap_id and zap_label in the body to track Zaps in your Dashello Zapier page.
Run a test and turn on your Zap. Active Zaps appear in your Dashello → Integrations → Zapier page.
Make.com
Dashello has a custom app on Make.com with 6 ready-to-use modules. Install it from the Make.com Developer Portal or use the HTTP module directly.
The Dashello Make app modules:
| Module | Description |
|---|---|
| Send a metric value | Pushes a single metric value to your dashboard |
| Send multiple metric values | Batch push several metrics in one request |
| Send custom data | Send invoices, contacts, leads to your inbox |
| Create a task | Creates a new task with due date, priority, notes |
| Send multiple tasks | Create multiple tasks at once from an array |
| Make an API call | Call any Dashello API endpoint with full control |
To set up a Make scenario, add a Dashello module, create a new connection by pasting your API key, and map the input fields from your trigger app.
For step-by-step setup instructions, see the Make.com Dashello App README.
Rate Limits
| Limit | Value | Scope |
|---|---|---|
| Requests per minute | 100 | Per API key |
| Batch size | 100 items | Per batch request |
| Payload size | 5 MB | Per request |
SDK Examples
No SDK is required — just HTTP. But here are ready-to-use snippets for common languages:
Node.js
const API_KEY = "dash_your_api_key"; async function pushMetric(name, value, source) { const res = await fetch("https://dashello.co/api/ingest/metric", { method: "POST", headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ metric: name, value, source }), }); return res.json(); } // Usage await pushMetric("revenue", 50000, "quickbooks");
Python
import requests API_KEY = "dash_your_api_key" def push_metric(name, value, source="api"): res = requests.post( "https://dashello.co/api/ingest/metric", json={"metric": name, "value": value, "source": source}, headers={"Authorization": f"Bearer {API_KEY}"} ) return res.json() # Usage result = push_metric("leads", 47, "hubspot") print(result)
curl
curl -X POST https://dashello.co/api/ingest/metric \
-H "Authorization: Bearer dash_your_api_key" \
-H "Content-Type: application/json" \
-d '{"metric": "revenue", "value": 12345, "source": "api"}'
Google Apps Script
function pushToDashello(metric, value) { const API_KEY = "dash_your_api_key"; const options = { method: "post", headers: { "Authorization": "Bearer " + API_KEY }, contentType: "application/json", payload: JSON.stringify({ metric, value, source: "google-sheets" }), }; UrlFetchApp.fetch("https://dashello.co/api/ingest/metric", options); } // Use in a sheet trigger function onEdit(e) { pushToDashello("Sheet Updated", 1); }
Need help integrating? We're happy to walk through it with you.
Contact — hello@dashello.co