Automation JSON structure

When you export an axiom.ai automation, you get a JSON file containing the inner workings of the automation. The export is useful for sharing automations with the support team, with a colleague, or with anyone you're collaborating with. Most of the file is data axiom.ai uses to reconstruct the automation, but some of it is interesting on its own. This page documents the most useful fields. We've left out fields that relate to deprecated features, internal extension state, or rarely-used settings.

You can think of an exported automation as a snapshot of the automation's current state, including every step variable, error setting, and configuration value.

Warning: Don't edit an exported automation by hand. Errors in the JSON prevent the file from being imported back into the extension.

Identifiers


The first few fields in the JSON identify the automation:

"id": 938717,
"name": "Send to Supabase",
"templateId": 0,
"triggers": [ ... ]
KeyDescription
idThe automation's unique ID.
nameThe automation name, as shown in the dashboard.
templateIdThe ID of the template the automation was created from, if any.
triggersConfigured triggers, such as schedules.

If the automation has a schedule, the triggers array contains an entry like this:

{
    "id": 10126,
    "interval_type": "seconds",
    "name": "",
    "starting_time": "2025-02-26 16:26:23+00",
    "status": "ready",
    "time_criteria": 86400,
    "type": "schedule"
}
KeyDescription
idThe schedule's unique ID.
interval_typeThe interval unit. Always seconds.
starting_timeThe time the schedule was set to start.
time_criteriaThe number of seconds between runs. For example, 86400 is one day.
typeThe trigger type.

Data


The data key holds everything about the automation's behaviour: steps, settings, and the configurations that drive each run. The top of the data object looks like this:

"builderTemplateId": 0,
"context": [{ "context": "url", "url": "" }],
"continueOnError": true,
"disablePageChangeMonitoring": true,
"executablePath": "...",
"extensionToLoad": "...",
"form": [ ... ]
KeyDescriptionDefaultDocs
continueOnErrorContinue after the automation hits an error.falseContinue on error
disablePageChangeMonitoringSkip page-change monitoring between steps.falseDisable page monitoring
executablePathPath to a local Chrome installation.nullSet executable path
extensionToLoadPath to a Chrome extension to load.nullLoad another extension
formThe list of steps. See Step data.

Step data

Step data lives in the form key. It's an array of step objects shaped like this:

{
    "description": "Instruct the bot to go to a new page.",
    "hasErrors": false,
    "index": 0,
    "machine_name": "WidgetDriverGoto",
    "metadata": "",
    "name": "google.com",
    "original_name": "Go to page",
    "params": [ ... ],
    "stepNumber": "1",
    "token": ""
}
KeyDescription
descriptionThe description of the step at the time it was created.
machine_nameaxiom.ai's internal name for the step.
metadataSearch keywords used by the step finder.
nameThe customisable display name.
original_nameThe canonical step name without customisations.
paramsThe step's configuration. See Params.
stepNumberThe step's position in the automation.
tokenThe data token output by the step, if any (the token name only, not the data).

Note: The description and parameter description fields are stored at creation time so older steps continue to make sense if the canonical step description changes in a later release.

Params

The params array inside each step object holds every parameter the step has, plus the value you've configured. For example, a single parameter on the Read data from a Google Sheet step looks like this:

{
    "collapsible": 0,
    "configurable": true,
    "default_value": "",
    "description": ["Select a google sheet to read from, or paste its URL here."],
    "help": [],
    "image": "",
    "name": "Spreadsheet",
    "sheetName": "Your Google Sheet",
    "type": "spreadsheet_picker",
    "value": "..."
}
KeyDescription
default_valueThe default value, if the step has one.
descriptionThe parameter's description (preserved from the step's creation time, see the note above).
nameThe parameter name.
sheetNameThe name of the Google Sheet selected for this parameter.
typeThe parameter type. The example above is a spreadsheet_picker.
valueThe configured value.

Each parameter type may include extra fields specific to that parameter or step. The example above is a single parameter; most steps have several.

Automation settings

The remaining keys are the automation's settings, the same ones you configure from the Cog icon in the Builder.

"headless": false,
"iframesAllowed": true,
"incognitoMode": true,
"injector": { "injector": "dom", "magic_btn_status": true, "selector": "" },
"maximumRuntime": 600,
"mode": "browser",
"notifications": { ... },
"proxyAuth": null,
"storeCookies": true,
"templateId": 0,
"templateItem": null,
"templateMode": false,
"templateStarted": false,
"tokens": null,
"useLocalTimezone": true,
"userDataDir": "...",
"viewport": null
KeyDescriptionDefaultDocs
headlessRun the browser in headless mode.falseRun headless
iframesAllowedAllow the selector tool to interact with iframes.falseInteract with iframes
incognitoModeRun the automation in incognito mode.falseRun in incognito mode
maximumRuntimeMaximum runtime in seconds.720Set maximum runtime
notificationsNotification configuration. See Notifications.nullSet up notifications
proxyAuthProxy configuration, if a proxy is set up.nullUse a proxy
storeCookiesUse stored cookies and local storage.nullStore cookies
templateIdThe template ID the automation was created from, if any.0
useLocalTimezoneUse the local timezone for scheduling.falseConfigure timezone
userDataDirPath to a custom Chromium profile, if one is set.nullSet a custom Chromium profile

Notifications

The notifications key holds the email and webhook notification configuration:

{
    "emailAddress": "...",
    "emailOn": true,
    "onFailure": true,
    "onSuccess": false,
    "webhookOn": false,
    "webhookPayload": "",
    "webhookURL": ""
}
KeyDescription
emailAddressThe email addresses to send notifications to.
emailOnWhether email notifications are enabled.
onFailureWhether to notify on a failed run.
onSuccessWhether to notify on a successful run.
webhookOnWhether webhook notifications are enabled.
webhookPayloadThe auto-generated webhook payload.
webhookURLThe URL the webhook payload is sent to.

Wrapping up


Understanding the JSON structure of an automation can help when you need to share an automation with support or read someone else's exported file. We don't recommend editing an automation through the JSON, but if you do, work from the table above to know what each key controls. Any malformed JSON will prevent the file from being imported back into the extension.