A Make (formerly Integromat) custom app that records automation run and loss events in LumaTrack, the system of record for automation value. One module at the end of a scenario and the value report builds itself: runs, failures priced as the costs they are, and hours and dollars measured against a manual baseline you define.
This is packaging over the public ingest API, distributed as the JSON blocks Make's custom-app editor takes. You create the app in your own Make organization as a private app, which needs no partnership agreement, no review and no listing. Nothing here is published to Make's directory.
Make's editor is a set of JSON tabs. Create the app once, then paste each file into the tab named here.
| File | Editor location |
|---|---|
base.json |
App, Base tab |
connection/api.json |
Connections, new connection of type Basic, Communication tab |
connection/parameters.json |
Same connection, Parameters tab |
rpcs/listAutomations/api.json |
Remote procedures, new RPC named listAutomations, Communication tab |
rpcs/listEventTypes/api.json |
Remote procedures, new RPC named listEventTypes, Communication tab |
modules/record-run/api.json |
Modules, new Action module named recordRun (label "Record a Run"), Communication tab |
modules/record-run/mappable-parameters.json |
Same module, Mappable parameters tab |
modules/record-run/interface.json |
Same module, Interface tab |
modules/record-run/samples.json |
Same module, Samples tab |
modules/record-loss-event/*.json |
Second Action module named recordLossEvent (label "Record a Loss Event"), same four tabs |
Static parameters stay [] on both modules.
- In Make, open Custom apps and click Create app.
- Name
lumatrack, labelLumaTrack, theme#0F766E, language English, audience Global. Save. - Paste the blocks per the table above, saving each tab.
- Open any scenario, add a LumaTrack module, and create the connection with your API key. The connection test reads your automations list.
An ingest-only key is enough and is the one to use: if it leaks, an attacker can post junk runs, and they cannot read or restate your ledger.
Self-hosting or a custom domain: change baseUrl in base.json and the url
in connection/api.json before pasting.
| Field | Notes |
|---|---|
| Automation | Dropdown from your LumaTrack automations; the slug is what is sent |
| Status | success, failure, skipped, cancelled; defaults to success |
| External ID | Idempotency key. Map the trigger bundle's own id so a re-run never double-counts |
| Units processed | Records the scenario handled; a scenario that processed 240 rows reports one run with 240 units |
| Duration (seconds) | Wall-clock runtime; leave blank rather than guess |
| Failure reason | Root cause, e.g. auth/credential; powers the failure-reason Pareto |
| Executed at | Only for evidence that genuinely happened earlier; closed months are refused |
| Baseline minutes override | Manual minutes this run replaced, when it differs from the automation's baseline |
| Metadata | Key/value pairs kept with the run |
| Source | Defaults to make |
Blank fields are omitted from the request, so the API applies its own defaults.
The module outputs id, held, deduplicated and warning. A held run was
stored over your plan's monthly cap and earns nothing until it is released, so a
router that cares can branch on it.
One module on the happy path is half the integration. Failed scenarios cost money
and save nothing, and reporting them is what makes the reliability chart and the
net numbers credible. Add an error handler route (right-click the risky
module, Add error handler) ending in a second Record a Run with Status
failure and the error message mapped to Failure reason, then a Resume or Ignore
directive as your scenario needs.
A scenario that processed 240 records should report one run with Units set to 240 rather than a module inside an Iterator that reports 240 runs. LumaTrack prices per-unit work as fixed setup plus marginal minutes per record, and 240 separate runs would each consume an event against your plan's monthly cap.
A private app is usable by you and, once a scenario containing it is saved in a shared team, by that team. Make's invite-link publishing is irreversible and carries a partnership agreement, which is why this app is offered as source instead.
MIT.