Lodol connects to a lot of apps, but every business has something that isn't on the list. The pricing API your developers built. The orders database behind your website. A supplier's stock page with no API at all. Until now, reaching those meant building a Call an API step by hand, or leaving that part of the job to a person.
This release adds three more ways in: your own API, turned into ready-made steps; your own PostgreSQL or MySQL database; and steps that read a web page. Here's what each one does, what it won't do, and where your passwords and keys go.
Your own API, as steps anyone can read
Many APIs publish a description of themselves in a standard format called OpenAPI, sometimes called a Swagger file, and the API's developer docs usually offer it as a download. Upload that file to the Integrations page, as JSON or YAML, and its endpoints become steps with labeled fields, just like an app from the catalog.
The difference is easy to see on the canvas. A Call an API step shows a web address, headers and a body. An imported step reads "Create a quote", with a Customer field and an Amount field that anyone on your team can understand and change.
You connect it once, like any other app, with the kind of sign-in the file describes, such as an API key, a token, or a username and password. Only your workspace can use it. When the API changes, import the newer file and the steps are updated in place. Adding one takes the Manage integrations permission, the same as connecting an app for the whole workspace.
An API without a file
Not every API publishes an OpenAPI file. For the rest, Call an API, which arrived in August, still reaches any API on the internet: REST or GraphQL, any method, headers, query parameters and a body. You choose whether an error response fails the step or comes back as a result, which suits an API that answers 404 when it simply means "not found".
Your own database
PostgreSQL and MySQL now have steps of their own: run a query, select rows, insert one row or many, update rows and delete them. One PostgreSQL connection covers a server you run yourself and hosted ones such as Amazon RDS, Google Cloud SQL, Supabase and Neon; MySQL covers MariaDB too. Paste a connection string, or fill in the host, database, user and password. Lodol signs in once while you connect, so a wrong password or a closed firewall shows up on the form, not in a failed run.
Two rules keep a step from doing more than you meant:
- Update and delete need a filter. A step can't rewrite or empty a whole table by accident.
- Values stay out of the SQL. A query you write takes named parameters, so an email address from a form is passed in as a value, never pasted into the query.
The database user you connect decides the rest. Give Lodol a user that can do only what your workflows need, such as reading the orders table, and that's all any workflow can do with it. Other databases are in the catalog too, under Databases, from Supabase to Amazon DynamoDB.
A web page with no API
Some of what a workflow needs only exists on a web page: a price, a headline, every link on a listings page. The new Extract from a web page step pulls those out by pointing at them with CSS selectors, the same names your browser's developer tools show, such as "h1" or ".price". Give it the page's address, or HTML an earlier step already has, such as an email's body. Point it at something that repeats, like each product on a listings page, and you get back a list with a name and a price for each.
It reads the HTML the page sends. It doesn't open the page in a browser, so text a page fills in later with JavaScript may not be there to find. For a page like that, a browser app such as Browserless can load it first.
Two more HTML steps work the other way round. Make an HTML table turns rows from a sheet, or any list of records, into a table that looks right in an email. Turn text into HTML turns Markdown or plain text into an email-ready body.
Small jobs that used to need code
- Cryptography steps hash text, sign a request with a secret, as many APIs ask you to, and make random secrets.
- Text steps convert Markdown to HTML, and XML to JSON and back, for the older systems that still send XML.
For anything still left over, Run Python code handles the odd calculation, offline and within strict limits on time and memory.
Your keys stay out of the workflow
None of this puts a password in a step. The sign-in for a database or an imported API is stored with its connection, encrypted, like any other app's. A key for Call an API goes in Secrets and Values, and the step uses it by name, as @secrets.PRICING_API_KEY. Workflows, and the AI tools that build them, only ever see the name. If a step's result ever contains a secret, Lodol replaces it with *** in the run.
What it won't reach
Lodol connects over the internet, so whatever it calls has to be reachable from there. A database or an API that exists only on your office network, or behind a VPN, is out of reach. Lodol refuses private network addresses outright, rather than reaching into networks it shouldn't.
And an imported API or a database is only as safe as the access you give it. A workflow can do anything its connection's account can, so connect an account made for the job, not your own administrator's.
Put it together
A few of the jobs this opens up:
- Orders to finance. Every morning, select yesterday's paid orders from your MySQL database and add them to the revenue sheet in Google Sheets.
- Your own pricing API. When a quote request arrives from your website, call your imported "Create a quote" step and email the quote to your sales team to check before it goes to the customer.
- A competitor's price page. Each morning, extract the prices from the page and post the ones that changed in Slack.
Some ready-made workflows already work this way. Copy new database records to a spreadsheet checks a Supabase table every hour and adds the records it hasn't copied yet to a Google Sheet. Tell me when a page I watch changes checks the pages you list each day and emails you when the wording actually changes.
If it's your own servers you need, last week also brought SSH, to run a command on a server and hand what it prints to the next step, and SFTP, to move files to and from one.
Connect the thing that isn't on the list.
Import your API's OpenAPI file on the Integrations page, connect your database, or add an Extract from a web page step. The guide to Call an API and code and the guide to connections and secrets have the details. Start free if you don't have a workspace yet.