Holded
Holded is a cloud-based invoicing software designed to help small and medium-sized businesses streamline their operations. The Holded addon enables seamless integration between WordPress forms and Holded, allowing you to:
- Process sales orders through your WordPress site
- Convert web visitors to CRM leads
- Receive quotations directly from your website

The addon
The Holded’s API is organized around REST, using HTTP responses code to keep you informed about what’s going on and json as its encoding schema. All API requests are validated against an API key. To talk with this API, the addon works with an extension of the generic REST bridge class.
A Holded bridge will synchronize your form submissions with your Holded’s account. The addon comes with a suit of templates and workflow jobs to bridge forms to the invoicing module (Contacts, Quotations, Sales) and the CRM module (Leads), but you’re not tied to this options: either via templates or via manual set up, you can configure your bridges to target any API endpoint.
How to use
The first step to use the addon is to activate it on the addons table on the general settings tab.

Once activated, a new tab will be visible on the settings page. If it’s your first time, it should looks like this:

The template wizard
The recommended way to set up a new bridge is to use a template as a starter point. The addon’s template wizard will set up a new backend connection and a form, both linked on a new bridge.
With this setup ready, you can edit the bridge’s form to fit your requirements or manually add new forms and bridge them with the backend you’ve configured on the previous step.
The template wizard will lead you through three steps:
1. Backend

The backend step will require you to set a unique name to identify the new connection and an API key.
To generate an API key go to Configuration > API on your Holded account. The key requires a name. You can set it to “Forms Bridge”, for example, or any other name that clearly identify it.
If you already have the Holded’s REST API registered as a backend, the template wizard allows you to reuse it. If you want to get multiple bridges, the recommended way to proceed is to register the backend once and reuse it on your bridges.
2. Form
In this step you have to choose the title of the form the template are going to create. If there is a compatible form, the wizard allows you to reuse the existing form and skip the form creation.
3. Bridge
On the last step of the wizard, you have to set a unique name for the new bridge. In addition to the name, and depending on the template you are using, this step will require more or less fields to be informed. The required fields will be marked with a red asterisk
After that, click on submit and Forms Bridge will generate the backend, form and bridge setting. It only remains to publish the new form on a public page and wait for a new form submission!
Manual set up
With templates, you can save a lot of time while configuring your bridges, but you can achieve the same result with a manual set up.
A Holded bridge will require the following components:
1. Backend
To configure the Holded REST API as a backend to be used on your form bridges you will need to generate an API key going to Configuration > API on your Holded account. The key requires a name. You can set it to “Forms Bridge”, for example, or any other name that clearly identify it. The key value should looks something like this 467l843ipcq359r782aga5zdnux
.
With your API key on the clipboard, go to Settings > Forms Bridge > HTTP > Backends
on your WordPress admin page and follow this steps:
- Add a new backend with a unique name (Holded API, for example)
- Set the URL to
https://api.holded.com
- Select
JSON
as the Encoding Schema - Add
Accept
as an HTTP header withapplication/json
as value - Add
key
as an HTTP header with your API key as value
2. Form
Get your preferred form builder and create a new form. Once created, you can choose it as the target form to be bridged on the bridges panel of the addon. If your form fields does not match the target API endpoint schema, you can use bridge’s field mappers to rename them.
3. Bridge
The addon’s bridge is an extension of the generic REST bridge. Because of this they looks so similar. Like the REST bridge, the addon’s bridge requires a unique name, a backend, a form, an endpoint and an HTTP method.
The bridge endpoint has to exists on the REST API. To get a comprehensive list of the available endpoints you can check the official documentation. For example, to get your contact form bridged to your contacts address book you have to set the bridge endpoint to /api/invoicing/v1/contacts
.
The bridge allows you to use 4 HTTP methods (GET, POST, PUT, DELETE). In most cases you only want to use the POST method as it is the standard method to write entries on a system through a REST API.
Troubleshooting
To troubleshooting your bridges you can use the plugin’s debug console from the General Settings page. Enable the debug mode and submit a sample form response to see what’s going on under the hood. Take a look to our tutorial about how to use the debug console.
Common issues
- API connection failures
- Verify API key
- Confirm API key permissions
- Missing Data
- Validate field mappings
- Verify API endpoint schemas
Templates
The addon comes packed with the following templates:
Appointments 🔎
Appointments form template. The resulting bridge will convert form submissions into events on the calendar linked to new contacts.Company Contacts 🔎
Contact form for companies template. The resulting bridge will convert form submissions into new companies linked to contacts.Company Leads 🔎
Lead form template. The resulting bridge will convert form submissions into leads linked to new companies.Contacts 🔎
Contact form template. The resulting bridge will convert form submissions into contacts.Leads 🔎
Lead form template. The resulting bridge will convert form submissions into leads linked to new contacts.Product Company Quotations 🔎
Product quotations form template. The resulting bridge will convert form submissions into quotations linked to new companies.Product Quotations 🔎
Product quotations form template. The resulting bridge will convert form submissions into quotations linked to new contacts.Service Company Quotations 🔎
Service quotations form template. The resulting bridge will convert form submissions into quotations linked to new companies.Service Quotations 🔎
Service quotations form template. The resulting bridge will convert form submissions into quotations linked to new contacts.Product Orders + Sync 🔎
Product sale order bridge template. The resulting bridge will convert WooCommerce orders into product sale orders linked to new contacts. The template includes a job that synchronize products between WooCommerce and Holded by product SKUs.Product Orders 🔎
Product sale order bridge template. The resulting bridge will convert WooCommerce orders into product sale orders linked to new contacts. To work propertly, the bridge needs that your WooCommerce product sku values matches with the holded ones.
Workflow jobs
The addon comes packed with the following workflow jobs:
Appointment dates 🔎
Sets appointment start time and duration from datetime and duration fieldsContact ID 🔎
Creates a new contact and sets its ID as the contactId field of the payloadVatnumber prefix 🔎
Prefix the vat with country code, or the current locale, if it isn’t prefixedSkip if contact exists 🔎
Search for a contact and skip submission if it existsSync woo products 🔎
Search for products from the WooCommerce order by sku on Holded and creates new ones if someone does not existsFormat date fields 🔎
Gets date, hour and minute fields and merge its values into a date with format Y-m-d H:M:SISO2 country code 🔎
Gets the ISO2 country code from country names and replace its valueISO3 country code 🔎
Gets the ISO3 country code from country names and replace its valueSkip submission 🔎
Skip submission if condition is not truthy
Supported form builders
Tutorials
-
Bridge WooCommerce orders with Holded
In this tutorial we will explain how to bridge your WooCommerce orders to Holded. The resulting bridge will convert placed orders in WooCommerce to sale orders linked to new contacts. This tutorial assumes you have an active Holded account with access to the REST API. Enable the addon The first step is to enable the…
-
Using the Holded product quotations template
In this tutorial we will explain how to bridge your WordPress forms to Holded to set up a transactional form that creates product quotations. The resulting bridge will create a contact, and a new quotation linked to the former and with a product line with unit price and quantity. This tutorial assumes you have a…