External Data Sources
Connect external data sources so your forms and events can pull in data from other systems. For example, connect an employee directory from your HR system -- then use it as a dropdown in your forms so customers can select a contact person.
This area depends on your plan. If not available, the section is visible but locked.
How it works
You configure an API endpoint, Eventyflow fetches the data, and it becomes available as field options in the Form Builder. Your forms always show up-to-date data from the external system.
What you can do
- Create and edit data sources.
- Set up usage purpose, HTTP method, timeout, and login method.
- Block or unblock a source.
- See which forms are using a source.
Login methods
Pick how the external system verifies your connection:
- None -- open endpoints without authentication.
- Basic Auth -- classic login credentials.
- Bearer Token -- a single access token.
- API Key -- a key provided by the external service.
Saved passwords and tokens are hidden when you edit later. After saving, the system automatically tests the connection.
Deleting a source
If a source is currently used by forms, you get a warning before deleting. The warning shows which forms are affected so you can update those forms before you delete the source.
Status and monitoring
You can track:
- Current status (approved, blocked, or pending).
- How many requests succeeded or failed.
- Overall success rate.
- When the last check ran.
Configuration tabs
When you edit a data source, the basic connection settings -- URL, HTTP method, timeout, authentication, and additional headers -- sit at the top. Below them, the detailed configuration is split into three tabs:
- Request -- request parameters and multi-date settings.
- Response -- data mapping for transforming the API response.
- Booking -- booking configuration (only for room availability sources).
Server certificate verification
Eventyflow verifies the external server's certificate by default. Keep this verification on whenever possible.
If a connection test reports a certificate problem, ask the operator of the external system to provide a complete, valid certificate chain. An endpoint can still open in a browser even when its certificate chain is incomplete for server-to-server connections.
If the external system cannot be corrected immediately, you can create a temporary exception:
- Open the data source. You find the setting in the connection settings above the configuration tabs.
- Turn on Allow insecure TLS connections.
- Read the displayed security warning and save the data source.
- Check that the automatic connection test succeeds.
This setting disables server certificate verification for all requests made through this data source, including data, availability, and booking requests. Credentials and transferred data could be intercepted if the server certificate is manipulated. Turn the setting off again as soon as the external system's certificate chain has been fixed.
Request parameters
Define parameters that are sent with each API request. Parameters can be static values or dynamic values from form fields.
For room availability sources, the following context values are automatically available as parameter sources:
- Event Date -- the date selected by the customer.
- Start Time -- the start time selected by the customer.
- End Time -- the end time selected by the customer.
- Attendees -- the number of attendees entered by the customer.
Each parameter can have a format applied (e.g., date format conversion).
Multi-date queries
When date alternatives are enabled (see Date alternatives), you can configure how multiple dates are sent to the external API:
| Mode | Description | Example |
|---|---|---|
| Separator | Dates joined with a separator character | date=01.08;02.08 |
| Date Range | Separate from/to parameters | from=01.08&to=05.08 |
| JSON Array | Dates as a JSON array in the request body | ["01.08", "02.08"] |
| Repeated parameter | Same parameter repeated for each date | date=01.08&date=02.08 |
Additional HTTP Headers
In the connection settings of a data source you can send extra headers with every request, beyond the standard login fields. Use this when the external system expects a header to identify or route your request, such as a custom client ID.
- Open the data source.
- Scroll to Additional HTTP Headers in the connection settings above the configuration tabs.
- Click Add Header for each header you need.
- Enter the header Name (for example
X-Custom-ID) and its Value. - Save the data source.
Header values are stored securely. After saving, a value is masked and shown as dots when you reopen the source. To keep an existing value, leave the masked field untouched -- only type a new value if you want to replace it. Use the eye icon next to a value to reveal what you typed.
Make sure each header name and value match exactly what the external system expects before you use the source in live forms.
Data mapping
When a third-party system uses a different data format than Eventyflow expects, you can set up mapping rules to transform the data automatically.
Visual mapping editor
For room availability sources, a visual mapping editor lets you map API fields to Eventyflow fields by clicking -- no manual path entry required. The editor discovers available fields from a sample JSON response and shows them alongside Eventyflow's semantic slots.
Semantic slots are the target fields Eventyflow needs for room availability:
| Slot | Description |
|---|---|
| Room ID | Which field identifies the room. |
| Dates | Which field contains the dates (expected format: YYYY-MM-DD). |
| Time From | Start time of the booking slot (optional, expected format: HH:mm). |
| Time To | End time of the booking slot (optional, expected format: HH:mm). |
Click a field in the API response column, then click the matching semantic slot to create a mapping. The editor automatically detects date and time formats from sample values and suggests the correct transformer.
Sample JSON
To discover the available fields from the external system, you can:
- Paste a sample JSON response into the text area.
- Fetch from API -- click the button to make a real test request and load the response automatically.
The discovered fields are listed with their data types and example values.
Inbound mapping (response)
Transform data coming back from the external system into the format Eventyflow needs. For example, if the external system returns dates as "25.12.2026", you can convert them to the standard format "2026-12-25".
- Open the Response tab.
- Turn on Map API response to Eventyflow format.
- Add mapping rules. Each rule has:
- Source (API response) -- where to find the value in the external response.
- Transformers -- optional conversions like date format, value mapping, or type casting.
- Target (Eventyflow) -- where to place the value in Eventyflow format.
Available transformers
| Transformer | What it does | Example |
|---|---|---|
| Date Format | Converts between date formats | "25.12.2026" to "2026-12-25" |
| Boolean Coerce | Converts text to on/off values | "yes" to on, "no" to off |
| Map Values | Replaces values using a lookup table | "frei" to "available" |
| Type Cast | Changes the data type | Text "42" to number 42 |
| Default Value | Fills in a fallback when data is missing | Empty to "ZRH1" |
| To Array | Wraps a single item in a list | "item" to ["item"] |
| Concat | Adds text before or after a value | "123" to "ROOM-123" |
| Template | Builds text from multiple values | "Room 3, 2nd Floor" |
| Split Text | Splits a text value at a separator into a list | "A;B;C" to ["A", "B", "C"] |
Live preview
After saving a data source with mapping rules, you can test the mapping without making real API calls. Open the Live Preview section, paste sample JSON from the external system, and see the transformed result instantly.
Import and export
You can export a mapping configuration as a JSON file and import it into another data source. This lets you share configurations between sources or tenants.
Booking (room availability only)
For room availability sources, you can configure Eventyflow to send a booking request to the external system when a form is submitted. The booking happens before the submission is saved -- if the booking fails, the submission is not created.
- Open the Booking tab (only visible for room availability sources).
- Turn on Send booking on form submission.
- Enter the Booking URL (must be HTTPS).
- Set the HTTP method and timeout.
- Add request mapping rules to format the booking data.
- Define a success condition to check if the booking was accepted (e.g., field "status" equals "confirmed").
- Add response mapping to extract the booking reference from the response.
Booking authentication
By default, the booking request uses the same login as the availability request -- you don't have to set anything up again. Turn on Use separate authentication only when the booking endpoint needs different credentials than the availability endpoint.
When the toggle is off, the booking request reuses the availability login automatically. When you turn it on, a Booking Authentication section appears where you choose a method just like in the connection settings:
- None -- no authentication.
- Basic Auth -- username and password.
- Bearer Token -- a single access token.
- API Key -- a key sent in a header you name.
- URL Parameter -- a token added to the booking URL as a query parameter.
Saved passwords and tokens are masked when you reopen the source. Leave a masked field untouched to keep the current value.
Booking headers
By default, the booking request sends the same Additional HTTP Headers as the availability request. Turn on Use separate headers only when the booking endpoint needs different headers.
When the toggle is off, the booking request reuses the availability headers automatically. When you turn it on, a Booking Headers section appears where you add header Name/Value pairs the same way as in the connection settings. Header values are stored securely and masked after saving -- leave a masked value untouched to keep it.
Success condition operators
| Operator | Description |
|---|---|
| equals | Value matches exactly. |
| not equals | Value does not match. |
| is one of | Value is in a list. |
| is none of | Value is not in a list. |
| contains | Value contains the text. |
| does not contain | Value does not contain the text. |
| exists | Field exists in the response. |
Date alternatives
For room availability sources, you can enable date alternatives so that Eventyflow queries nearby dates when the customer's chosen date has no available rooms. This helps customers find the next available slot without manually trying different dates.
Date alternative settings are configured per data source and depend on the multi-date query mode (see Request parameters).