Holded
Holded is a cloud-based invoicing software designed to help small and medium-sized businesses streamline their operations.
The Holded add-on enables seamless synchronization of WordPress posts with Holded’s various modules, including products and services, contacts, projects and events.

The add-on
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 add-on works with an extension of the generic REST bridge class.
A Holded bridge will synchronize your posts with the database of your ERP.
With Posts Bridge introspection API you’ll be able to inspect each module fields to easily map them to your post fields and taxonomies.
How to use
The first step to use the add-on is to activate it on the add-ons 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:

Bridge 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 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 “Posts 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 > Posts 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 - Add
keyas an HTTP header with your API key as value
3. Post type
Posts Bridge allows you to bridge any registered post type from your WordPress site. If you’ve not registered it yet, you can register it with Posts Bridge. Go to the CPTs tab and create a new custom post type. The registration form will inherit the registration defaults, but you can modify its values at any time. The only required fields are Name, Label and Singular label.
3. Bridge
The add-on’s bridge is an extension of the generic REST bridge with some predefined defaults. Like the REST bridge, the add-on’s bridge requires a post type, a backend, and an endpoint.
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 Holded contacts synchronized as posts in WordPress, you have to use the /api/invoicing/v1/contacts endpoint.
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