Datalumina

Getting started

Automation types

Every job in an automation platform either reacts to an event or runs at a scheduled interval. Webhooks handle the first, Celery Beat handles the second, and both end up in the same event ledger.

Once you write workflows down as code, there are only two types of automation. Either something happened in another system, or a scheduled interval came around. That is the whole model.

Triggered

When something happens

Payment clears in StripeAdd the row to Airtable
Call booked in CalendlyCreate the deal for the rep
Form submitted on the siteStart the onboarding workflow

Scheduled

At a scheduled interval

Every Monday at 09:00Send the pipeline report
Every night at 02:00Sync yesterday's orders
Every hourClear out stale jobs

Triggered work

Triggered work starts outside your system. Another system makes an HTTP request to a URL you gave it, and that request is the webhook. Stripe sends one when a payment clears, Calendly sends one when a call is booked, your site sends one when a form is submitted.

In Zapier this is a dropdown. You pick the app, click through OAuth, and choose a trigger from a list. Behind that list, the platform is registering a webhook for you and pointing it at their servers, which is why the URL belongs to them.

When you own the backend, you own that URL. Your API exposes an endpoint, verifies the caller, checks the payload against a schema, writes the event down, and puts the work on a queue. Then it returns. You answer fast, because the sending system is waiting and will retry or give up if you are slow.

Scheduled work

Scheduled work starts at a fixed interval, and nothing needs to have happened first. Sync yesterday's orders at 02:00. Send the pipeline report on Monday morning. Clear stale records every hour.

The classic answer is a cron job on a server. It works until the server stops being the only place your code runs, and then the schedule lives in two places and neither one keeps a record. In Datalumina OS that job belongs to Celery Beat, which sits next to the workers, holds the whole schedule in one file, and puts the same kind of job on the same queue.

Any scheduler will do here. What matters is that the schedule lives in one place and produces the same kind of event a webhook does, so the work downstream never has to know which one started it.

On this page