Skip to content
Automations

Give an agent instructions once. Basedash runs them on a schedule or the moment a query finds new rows, acts in your other tools, and sends the result to Slack and email.

14-day trial. No credit card required.

Enterprise payment failures
Active

Instructions

For each failed charge over $5,000, find the company in HubSpot, check its open deals and recent Zendesk tickets, add a note to the company record, and send a short summary to #finance-alerts.

Trigger

StripeChecked every 15 minutes

select customer_id, amount, failure_codefrom stripe.chargewhere status = 'failed'  and amount > 500000  and created > {{ last_run_at }}

Each new row starts a run with that row as context.

Deliver to

Powering analytics for 5000+ teams worldwide

Exa logoTiger Data logoPurpose logoGumloop logoComposio logoFullscript logoShiftrx logoDrata logoExa logoTiger Data logoPurpose logoGumloop logoComposio logoFullscript logoShiftrx logoDrata logo

Triggers

Pick daily, weekdays, weekly, monthly, or quarterly at the hour you want, shown in your own time zone. Or write a SQL query: Basedash checks it every 15 minutes and starts a run for each new row, with that row as the agent's context.

Next scheduled runsYour local time

  • Daily revenue snapshotTomorrow, 8:00 AM
  • Weekly sales pipelineMon, 9:00 AM
  • Monthly investor updateNov 1, 10:00 AM
  • Quarterly business reviewJan 1, 9:00 AM

Notable ICP signups · When data changes

Checked 4 minutes ago · 2 new rows

  • Northwind Labs · 240 seatsRun started
  • Brightline Health · 85 seatsRun started

Agent workflows

Every run is a full agent, not a canned report. It queries any source you've connected, then uses the MCP connector tools you've set to Always allow, like adding a HubSpot note or filing a Linear issue, and writes up what it found and did.

Enterprise payment failures

Run started by a new row · Today, 2:15 PM

Finished

New row

customer_id
cus_Harborline
amount
840000
failure_code
card_declined
  1. Queried Stripe3 charges in 90 days, 1 failed
  2. HubSpot · Search companiesHarborline Freight, owner Priya Shah
  3. Queried Zendesk1 open ticket: billing contact change
  4. HubSpot · Create noteAdded to Harborline Freight

Harborline Freight: $8,400 renewal charge declined

The card on file was declined for the annual renewal. Harborline has an open $24K expansion deal in Proposal, and last week asked support to change its billing contact, so the card is likely out of date. I added a note to the company in HubSpot for Priya.

Sent to #finance-alertsSaved in Basedash

API

Wire automations into deploys, cron jobs, or your own product. One POST to the REST API starts a scheduled or manual automation, and the finished run comes back as markdown with its charts.

Start a run202 Accepted

API=https://charts.basedash.com/api/publiccurl -X POST \  -H "Authorization: Bearer $BASEDASH_API_KEY" \  "$API/organizations/$ORG_ID/automations/$ID/runs"

GET …/runs/chat_7Qm2xV200 OK

{ "data": {  "id": "chat_7Qm2xV",  "status": "FINISHED",  "isManualRun": true,  "finalMessageContent": "## Pipeline grew 9% to $1.42M…",  "charts": [{ "imageUrl": "https://…/png" }]} }

Templates

The template library covers the reports teams ask for most, from a daily executive briefing to failed payment alerts. Each one comes with a tested prompt, a suggested trigger, and an example of the output.

Templates

32 templates

How automations run

Every automation follows the same rules, whoever built it and whatever starts it.

  • Three triggers

    A schedule, a data change, or a manual run.

  • Five schedules

    Daily, weekdays, weekly, monthly, or quarterly.

  • 15-minute checks

    Data-change queries run every 15 minutes.

  • One run per row

    Up to five new rows per check, each with its own run.

  • Every run saved

    Review any run and keep the conversation going.

  • Slack and email

    One channel plus any email recipients.

  • Creator's access

    Runs with the creator's permissions and RLS groups.

  • Built from chat

    Describe it in chat and the agent sets it up.

What starts a run, what the agent can do, and where the results go.

What can start an automation?

Each automation has one of three triggers. A schedule runs it at a set hour on a daily, weekday, weekly, monthly, or quarterly cadence. A data-change trigger runs it when a SQL query you write returns new rows. A manual trigger runs it only when someone starts it, from Basedash or through the REST API. Scheduled automations can also be started by hand at any time, which is the easiest way to test a change to the instructions.

How do schedules and time zones work?

You pick a frequency and an hour. Weekly automations also take a day of the week and monthly ones a day of the month, while quarterly runs land on January 1, April 1, July 1, and October 1. Basedash stores the hour in UTC and shows it in your local time, so a 9 AM report stays at 9 AM for you. If the previous run is still generating when the next one is due, Basedash skips the new one instead of stacking runs.

What happens when a data-change query returns rows?

Basedash runs your query every 15 minutes, replacing {{ last_run_at }} with the time of the last run so you only see rows that are new since then. Each row that comes back starts its own run, with that row handed to the agent as context. A check starts at most five runs and skips any extra rows, so filter the query down to the rows that deserve attention. The query runs with the creator's data access and row-level security groups, and it can reference your models.

What can an automation do besides send a report?

Each run is a full agent session with the instructions you wrote. It can query any connected source, build charts, and use the tools from MCP connectors that are set to Always allow, so it can add a note in HubSpot, file an issue in Linear, or send an email through Resend as part of the run. Tools that need approval stay out of unattended runs. Every run is saved in Basedash as a chat, so you can see each step it took and ask follow-up questions.

Where do automation results go?

Every run is saved in the automation's history in Basedash. You can also send each result to one Slack channel, where its charts post as images, and to as many email recipients as you need. For a private Slack channel, invite the app with /invite @Basedash first. If you embed Basedash in your own product, the React SDK's BasedashAutomations component shows your automations and their runs there too.

Whose permissions does an automation run with?

An automation runs as the member who created it, with that member's data source access and row-level security groups, so a run can't read anything its creator can't. Only the creator can edit its instructions, which keeps someone else from changing what runs under their access. If the creator is deactivated, their data-change automations stop running. Customer data is never used to train AI models.

Can I trigger an automation from my own code?

Yes. With an admin API key, the REST API can list, create, update, and archive automations, list their runs, and start a new run of a scheduled or manual automation with a single POST. Runs generate asynchronously: the POST returns the run right away, and you fetch it again to get its final answer as markdown along with its charts. Data-change automations can't be started this way, because their query decides when they run.

How do automation templates work?

Each template in the library is a starting point for a common report, like a weekly MRR report or a closed-won deal alert. It includes the prompt, the trigger and cadence it's designed for, where it usually goes, and an example of the output. Copy the prompt into a new automation and adjust it to your tables and metrics. You can also skip templates entirely: describe what you want in chat and the agent sets up the automation for you.

Start from a template or describe what you need in chat, and read your first run today.