funnel.travel® - Extensions

The corporate post-booking travel management tool

Purpose of booking properties

The terms used when describing extensions:

Source domainThe system which issues the booking reference number
SupplierThe system which will invoice the purchased travel services
ProviderThe entity actually providing the travel service, typically an airline code, hotel chain or similar. For ad-hoc packages, this is often equal the 'Supplier'
AgencyTravel agency identifier
ProductProduct key, most commonly catalog number for a packaged tour

AERTiCKET

The AERTiCKET extension processes Matrix XML from AERTiCKET.

Execution triggerNeeds to be set to "WEBHOOK", as XMLs are pushed via the funnel.travel dataexchange server.
Agency numberProvided by AERTiCKET, also referred to as "KIM".
Customer systemThe AERTiCKET extension allows to read a customer reference from the AERTiCKET "Interne Vorgangsnummer". If set, the customer number will be set using the provided 'customer system'. This is relevant for any downstream extensions looking for a system-specific customer number. Example: if sending data on to Gestour, the agent can enter a Gestour customer number, and configure "Customer system" to "Gestour".
Only invoicedIf set, unticketed flights are discarded

Further processing rules:

Custom field names

This extension provides custom field values:

branchTaken from AFW2BRANCH remark, if present
invoiceNumberTaken from the latest AER XML

Booking properties

Source domainBooking platform used, e.g. Amadeus
SupplierAERTiCKET
ProviderAirline code
AgencyAER agency number
Productempty

Amadeus A.I.R.

The "Amadeus AIR files" extension allows to read PNRs from files created by the Amadeus ProPrinter. The extension can work both as "pull" or "push".

If you'd like the extension to "pull" AIRs, you need to set up an SFTP server with username/password access. Configure the extension with "Time" event, set your desired CRON expression, and configure the SFTP properties. Per execution, the extension will read all available files, and subsequently delete them from the SFTP server..

If you'd like to "push" files to the extension, configure the extension with "Webhook" event and leave the file store controls empty. Once the extension settings are saved, funnel.travel provides you with a webhook URL. Upload files as multipart (using 'file' as parameter name). An example Windows Powershell script which uploads files can be found here.

Data scope settings

Process ghost segmentsIf checked, GK segments will be included in the generate booking data
Include travel preferencesIf checked, seat and meal information will be included in the generate booking data if present in the PNR
Include passport dataIf checked, SR DOCS will be included in the generate booking data
Include remarksIf checked, AIAN/RM/RX will be included in the generate booking data

Booking properties

Source domainAmadeus
SupplierAmadeus
ProviderAirline code
AgencyOID
Productempty

Atriis

The Atriis extension uses the Atriis "Get Trip" to periodically fetch new and updated trips.

Execution triggerNeeds to be set to "TIME", as Atriis has no "push" mechanism.
Currency handling
  • Use display currency price items will be in "display currency" (=retail currency) (unless only "default currency" (=system currency) is provided)
  • Use system currency price items will be in "default currency" (=system currency)
  • Buy in system currency, sell in display currency price items will have retail prices in "display currency" and purchase prices in "default currency"
Discard from sourcesAllows to list Atriis source systems for which services should be dropped. E.g. setting "Amadeus" will then discard all travel services booked in the Amadeus GDS. Multiple entries should be separated by comma or semicolon
Discard flights onlyAllows to restrict above 'Discard from sources' setting to service type 'flight' only
Allow cross-modifiesIf set and configured together with other producer extensions such as e.g. Sabre WS, funnel.travel will allow modifying an Atriis-generated booking by a Sabre PNR import.
Access credentialsAgency ID, endpoint, username, password and "shared key for credit card" will be provided by Atriis

Further processing rules:

Booking properties

Source domainAtriis
SupplierAtriis
ProviderSupplier code if 1 service booked, otherwise 'Atriis'
AgencyCorporateReference or OrganizationUnitId
Productempty

ATOL

The "ATOL" extension allows to create an ATOL PDF and send it to a standard email address.

Protecting ATOL holderThe name of the ATOL holder, i.e. the company financially responsible.
ATOL Certificate issuerName of the ATOL Certificate issuer, the company the traveler is dealing with
ATOL numberThe ATOL number
Incl. flight-onlyBy default only single-package ATOLs are created, i.e. the extension looks for a flight plus an additional service. By activating this setting, the extension will also issue flight-only ATOLs
Include unconfirmedBy default, only confirmed services are considered. For agencies selling trips in the far future, flights or other services might remain open, but the ATOL must be issued immediately. In these cases including unconfirmed is required
Send to email(s)Comma-separated list of recipients

These custom field mappings are available:

If the "agentEmail" is present it is set as CC on the ATOL email. If "agentFirstName" and/or "agentLastName" are present, the name will be added to the email subject.

The "category" can be used together with the Nezasa field "atolClassification" to force a certain ATOL type.

Bexio

The "Bexio" extension allows to create and update quotes, invoices and purchase records in Bexio.

API tokenAccess token generated in Bexio
Create quoteIf set, the booking will be mapped to a Bexio quote
Create retail invoiceIf set, the booking will be mapped to a Bexio invoice
Revenue accountThe default revenue account number (usually 4 digits). Only needed when creating invoices.
Create purchase invoiceIf set, the booking will be mapped to a Bexio purchase entry
Expense accountThe default expense account number (usually 4 digits). Only needed when creating purchases.
Default customerIdentifies a default customer for quotes/invoices. Syntax is
<searchfield>:<searchterm>
see the Bexio documentation for possible 'searchfield'. Typically 'nr' is used, as in 'nr:123456'.
On customer multi-match If the booking has a customer reference which results in multiple customers being found, should the system:
  • Use default customer: use the above 'Default customer' setting
  • Use first match: just take the first search result

CETS WDM files

The "CETS WDM files" extension allows to read XML files from CETS created by the WebDataMover (WDM). The extension can work both as "pull" or "push".

The behavior and handling is identical to the Amadeus AIR files extension.

cytric cCBD

The cytric cCBD extension allows to receive booking updates from the "cytric Companion for Booking Data" (cCBD)

While the setup of cCBD in funnel.travel is straightforward, the required setup in cytric is not trivial, so please contact us if you're interested in connecting cytric to funnel.travel.

Also see the funnel.travel Using cytric blog post.

Data filter

The Data Filter extension allows to selectively delete parts of a booking, or even an entire booking. This is useful if the entire data stream needs some data removed.

Filter agenciesComma-separated list of travel agency IDs
Agency filter typeFilter logic for the listed agencies
  • Keep these, delete all others: treat the list as a whitelist, bookings for all other agencies are deleted
  • Delete these, keep all others: treat the list as a blacklist, bookings for these agencies are deleted
Overriding keep remark patternIf non-empty and a remark matching the regular expression is found, processing is aborted. If the remark is on service-level, processing for that service is aborted. If the remark is on booking-level, processing for the booking is aborted. This setting takes precedence over any other.
Check custom field nameNavigate to Custom fields, and add a name of your choice for the "Data filter" extension. Then, enter that name in the "Custom field name" setting.
Custom value patternRegular expression to match custom field values against.
  • If a match is found on an entry on booking-level, the entire booking is deleted
  • If a match is found on an entry on service-level, the corresponding service is deleted
Filter services with system referenceComma-separated list of systems (Service > References) to check for
Match logicMatching logic for the systems listed above
  • All entries: delete if all references match
  • Any entry: delete if any reference matches
  • No entry: delete if no reference matches ("keep")
Only service typeOptionally restrict filter logic to a certain service type
Except for reference agency/OIDDisregard references (Service > References) with one of the listed agency/OID
Delete priceitems matchingIf non-empty, deletes price items with a description matching the regular expression

Confirmation E-mails

The "Confirmation E-mails" extension connects to an IMAP email account, reads all emails for a given folder, and uses a third-party provider to parse the email.

E-mail server (IMAP)A server name, optionally with a port number (default is 993). The connection uses SSL/TLS.
UsernameUsername for the email server access
PasswordPassword for the email server access
E-mail folderFoldername, use INBOX for the root folder
E-mail parserThird-party system to use for the actual parsing:
  • Amadeus Trip Parser
  • Traxo Email Parsing
  • OpenAI Parsing
Amadeus Traxo OpenAI
Parser key IDClient IDClient IDnot used
Parser secretClient secretClient secretAccess token
Parser container not used Mailbox ID The parser container in an OpenAI context can be several things:
  • Prefixed "model:", e.g. model:gpt-4o. Defines which model to use. This is the default for OpenAI if no prefix is provided.
  • Prefixed "deployment:", e.g. deployment:our-gpt-deployment. Defines which deployment to use. This is the default for Azure OpenAI if no prefix is provided.
  • Prefixed "prompt:", e.g. prompt:pmpt_68be. Defines which Prompt to use (for both OpenAI and Azure OpenAI).
Parser endpointAmadeus hostAPI endpointBase URL

As an alternative to providing access to your own email server, we're also happy to provide you with a dedicated email address on our server. With this setup, it is your responsibility to forward any confirmation emails to the provided address.

Using this extension can be GDPR relevant, please make sure all the necessary approvals are in place before activating.

Using Azure OpenAI

When using the OpenAI parser with an Azure setup, there are a few details to note:

Booking properties

Source domain'Email'
Supplier'Email'
Providerempty
AgencyEmail address used to retrieve the email
ProductOriginating email domain

File dump

The "File dump" extension allows to export trip data as JSON or XML to a remote server.

Target URLThe target URL of your server. The server must be publicly accessible. While the URL format does allow for adding username and password, use the additional fields in order to prevent exposing the password. Allowed protocols are ftp, sftp and https. Use of FTP is discouraged.
UsernameUsername for authentication to your server
PasswordPassword for authentication to your server
File formatOne of: 'XML', 'JSON'
Pattern for target fileThe target filename can use a date pattern like tripdata-${yyyyMMdd-HHmmss}.xml.

Galileo MIRs

The "Galileo MIR files" extension allows to read PNRs from files created by the Galileo Print Manager. The extension can work both as "pull" or "push".

The behavior and handling is identical to the Amadeus AIR files extension.

Gestour

The Gestour extension allows to push booking data to the Amadeus Gestour 360 midoffice.

Agency codeProvided by Gestour
Default customerAllows to set a default customer to receive bookings. Valid syntax is
  • Identify by email, e.g. max.mustermann@want.ch
  • Identify by Gestour-internal ID, using syntax key:123456 (where 123456 is the Gestour ID in this example)
  • Identify by account, e.g. H78MM
JM84D2
BrandOptional, provided by Gestour
Ticket stock codeProvided by Gestour
On customer multimatchDefines how customer handling should be the intial customer search finds zero or more than one matches
  • Use default customery use the customer defined above as "Default customer"
  • Use first match use the first match found

Further processing rules:

Common errors

Gestour has various settings which need to fit the bookings running through funnel.travel. This table gives an overview of the most common errors.

Message Cause
Problème d'enregistrement, la clé d'un item inséré est manquante. A coded entry of the booking is not known in Gestour. Typically this is either an airline or a destination code.
Type de prestation du segment 0 incompatible avec son contenu A fairly general-purpose error indicating that the Gestour segment data is deemed inconsistent. Check the booking data in funnel.travel for empty fields such as airline or destination.
Le montant RTU doit être inférieur ou égal au montant client This error indicates a negative ticket amount. While this could occur when importing a refund for which the original ticket is missing, leading to a negative total amount. If the booking seems to be consistent, contact us so we can investigate.
Il manque le montant This might occur on exchanges with a price 0.00. Make sure Gestour accepts a zero amount.
Erreur pendant la création d'une émission de titre General-purpose error message that the booking couldn't be processed. Contact Gestour to get more information.

HtoH

The "HtoH" extension allows to send booking data to HtoH (Home-to-Home), a specialized travel management app and a business travel tool designed to create seamless, door-to-door itineraries.

Hubspot

The "Hubspot" extension allows to send customer and booking data to Hubspot. The integration uses Hubspot Service keys (BETA).

API URLThis is typically https://api.hubapi.com/
Service KeyCreate in Hubspot via Settings > Account Management > Integrations > Service keys. Required scopes are crm.objects.custom.write, crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.custom.read

Lambus

The "Lambus" extension allows to send booking data to Lambus, your All-In-One Travel Planner.

MB3M

The MB3M extension allows to push booking data to the MB3M midoffice solution.

RecepteurProvided by MB3M
Target URLProvided by MB3M
Username + passwordProvided by MB3M

MCTO

The MCTO extension allows to send booking data in the MCTO format.

RecepteurProvided by the midoffice partner
MCTO typeDefine MCTO content type
  • Full: all services are added to a single MCTO
  • Partial: services (and tickets) are split into multiple MCTO
XML processorThis setting allows for a few proprietary MCTO customizations
  • - : standard MCTO
  • IGA T-9: MCTO with IGA-specific remarks
  • ViaXeo B2C: MCTO with ViaXeo-specific details for a B2C record
  • ViaXeo B2B: MCTO with ViaXeo-specific details for a B2B record
Additional delivery attributeOny needed for IGA
Target URLProvided by the midoffice partner
Username + passwordProvided by the midoffice partner

Midoco

The Midoco extension uses the Midoco "AnnounceBookingMessage" to create and update bookings in Midoco.

Organization unit, username, password and tokenCredentials for a technical Midoco user with webservice access
Include exploringIf set, all booking data is sent to Midoco. If not set, only status 'CONFIRMED' and 'CANCELED' are sent.
ABM strategyAllows to specify a custom strategy to create the AnnounceBookingMessage towards Midoco.
Duplicate supplier+refMidoco needs unique combinations of LT code + booking reference. If there are duplicate entries:
  • Add ref.-no. suffix: will add a '-1', '-2', ... suffix to reference numbers
  • Create leisure mix: will group all affected services into one Midoco booking
CommentsAllows to specify how remarks from Nezasa should be passed on to Midoco.
Import payments from query IDAllows to enable a payment import from Midoco based on a user query.

Be sure to whitelist funnel.travel on the Midoco webservice user, activate the web service support, and to allow imports on the org. unit.

Field mapping and custom field names

Midoco ABM import

The Midoco ABM import extension allows to import booking data using the Midoco ABM format. Configure the extension as a webhook, and communicate the endpoint as SOAP endpoint to the producer of the ABM.

If configuring locators such as org. unit locators, be sure to use "MidocoImport" as source and not "Midoco", as the latter is used for the ABM export.

Myclimate

The Myclimate extension takes flight data and adds CO2 information.

API URLProvided by Myclimate
UsernameProvided by Myclimate. Note that Myclimate typically only offers access if there is also a compensation scheme in place.
PasswordProvided by Myclimate

Nezasa

The Nezasa extension provides a webhook for Nezasa to trigger booking imports.

Distribution channel IDOne or several distribution channels (separated by comma or semicolon) for which funnel.travel will register webhooks.
API URLUsually https://api.nezasa.com/
UsernameThe username of the Nezasa API user.
PasswordThe password of the Nezasa API user.
Webhook eventsNezasa events for which funnel.travel should retrieve and process a booking. Multiple events can be listed comma-separated.
Preferred reference systemIf set, funnel.travel will import agency and supplier information with a preference for the configured external system. If using this setting, make sure your reference data in Nezasa is adequately maintained.
Price importAllows for different pricing scenarios. Most commonly the selection "Touroperator / Reseller" is used.
Sales price matching Booking change in Nezasa can be handled with updating the sales amount, or keeping the original sales amount:
  • 'none' : will disregard the itinerary sales amount and only use component amounts
  • 'Match unrounded' : will make sure the customer sales amount is matched, unrounded
  • 'Match rounded' : will make sure the customer sales amount is matched, rounded
Create date fieldAs extension settings can be restricted by booking create date, this setting allows to use either the 'created' or 'firstBooked' as create date.
Missing travel datesNezasa allows for a generic adhoc service without travel dates. As a downstream extension might require travel dates, this setting allows for:
  • Leave empty: leave the service without travel dates
  • Use itinerary start/end date: take the overall booking travel dates, and map start/end resp.
  • Use itinerary start date: use the overall booking start date for any missing travel date
  • Use itinerary end date: use the overall booking end date for any missing travel date
Write-back midoffice numberIf enabled and the account has a configuration with an extension setting the "Midoffice no.", this entry will be published back to Nezasa.
Add product discoveryIf enabled, funnel.travel will attempt to retrieve additional travel service information
Add agency infoIf enabled, funnel.travel will attempt to retrieve additional agency information

Nezasa webhooks: Nezasa notifies attached system of bookings and booking changes via a webhook call. funnel.travel registers webhooks for the booking status "booking_completed", "booking_change_completed" and "cancellation_completed". Note that there is no trigger for a booking in status "booking_initiated". This means that purely offered/quoted bookings will not be pushed to funnel.travel.

Field mapping and custom field names

Booking properties

Source domainNezasa
SupplierDistribution channel
ProviderProvider of single service if 1 service booked, otherwise 'Nezasa'
AgencyAgency external reference, depending on setting 'Preferred reference system'
ProductNezasa tour type, e.g. 'Individual'

Repackage suppliers

The 'Repackage suppliers' extension allows to overwrite suppliers; the use case is typically with dynamic packaging where a tour operator presents itself as supplier..

Set booking supplierIf set, the booking supplier will be overwritten to this value
Set service supplierIf set, the first found travel service reference system will be overwritten to this value
Service supplier exceptionsComma-separated list of travel service reference systems which should not be touched

Sabre IUR files

The "Sabre IUR files" extension allows to read IURs from files created by the Sabre Printing Module (SPM). The extension can work both as "pull" or "push".

The behavior and handling is identical to the Amadeus AIR files extension.

Sabre Webservice

The "Sabre Webservices" extension allows to read PNRs from a Sabre queue.

The behavior and handling is identical to the Amadeus AIR files extension.

Slack

The Slack extension allows to set up notifications using Slack web hooks.

Webhook URLThe URL your Slack admin setup in https://api.slack.com/incoming-webhooks
Displayed usernameSlack notifications display a username. If this field is left empty, the default username defined on the web hook will be used
MessageLike most extensions, the Slack extension receives a full booking data structure. Explore the structure at the funnel.travel API definition to compose messages. Some examples:
  • Just booked trip ${header}
  • ${participants[0].firstname} ${participants[0].lastname} will be traveling on ${departuredate}
ChannelWebhooks have a default channel (used if this field is left empty), but can post on any channel.
Emoji iconAny emoji code supported by slack (https://www.webfx.com/tools/emoji-cheat-sheet/). If left empty, the extension default :airplane: is used.

TravelCompositor

The TravelCompositor extension provides a webhook for TravelCompositor to trigger booking imports.

Microsite (optional agency)The TravelCompositor microsite name. The name can optionally have an agency external ID as a prefix in the format
agency ID @ microsite
Price importThe price mapping to be used:
  • Marketplace/Operator: import in "operator" currency, only operator-prices are imported
  • Microsite direct collection (paid by traveller): import in "microsite" currency, all prices are imported. The purchase-side is managed to reflect to "operator" sale prices
  • Microsite agency collection (paid by agency): import in "microsite" currency, all prices are imported except agency fees. The purchase-side is managed to reflect to "operator" sale prices
  • Agency retail: import in "microsite" currency, all prices are imported. The purchase-side is managed to reflect to "microsite" sale prices
  • Marketplace + Microsite: import in "operator" currency for purchase, and "microsite" currency for sales. All prices are imported. The purchase-side is managed to reflect to "operator" purchase prices
Package supplierOptional, allows to override the booking supplier
API URLThe base TravelCompositor URL, e.g. https://tripdesigner.myholidays.fr/
UsernameThe username of the TravelCompositor API user.
PasswordThe password of the TravelCompositor API user.
API user micrositeSet if the microsite of the API user is not the same as "microsite".
Broadcast webhookIf the TravelCompositor booking data should be processed by multiple setups within funnel.travel:
  1. Define one setup with "Broadcast webhook" = true.
  2. Configure the webook of above setup in TravelCompositor
  3. Define one or more additional setups with "Broadcast webhook" = false
Then the incoming webhook payload will be broadcast to all additional settings with a microsite matching that of the webhook.

TravelCompositor webhook: TravelCompositor requires a manual setup of the webhook in the microsite configuration. Copy the webhook URL from the funnel.travel extension settings (once saved).

Field mapping and custom field names

Booking properties

Source domainTravelC
SupplierPackage supplier from settings, if present, otherwise microsite
ProviderOperator
AgencyAgency externalID
ProductTravelC trip type, e.g. 'ONLY_TICKET'

TravelOperations

The TravelOperations extension allows to push booking data to the TravelOperations midoffice.

Commission productThe TravelOperations "ItemNumber" for a commission (booking-level 'SUPPLIER_ONLY' price items with a negative purchase)
Surcharge/discount productThe TravelOperations "ItemNumber" for a other booking-level amounts (any booking-level price item which is not a commission)
Customer templateThe template key to create direct customers (B2C), e.g. '0003'
XML processorAllows for configuration of a proprietary processing logic
EndpointProvided by TravelOperations
API keyProvided by TravelOperations

The extension will initially send all services, and then incrementally only send updates on any changed service.

Field mapping and custom field names

TravelOperations allows for a definition of product template IDs. The TravelOperations extension will send:

Travel service type Product template ID
Flight FLIGHT
Hotel ACCOM
Rental car CAR
Bus BUS
Ship SHIP
Train TRAIN
Misc / Transfer TRANSFER
Misc / Insurance INSURANCE
Misc / Event ACTIVITY (as ProductsOTHER)
Misc / Other ADHOC

The TravelOperations "ItemNumber" is derived from the service type plus vendor, e.g. a hotel with vendor ATI will result in an ItemNumer "hotel-ati".

To distinguish B2B from B2C bookings, the following ruleset is in place:

These custom field mappings are available:

Umbrella.net

The Umbrella.net extension allows to push booking data to the Umbrella.net midoffice.

Agency mappingAllows to influence the origin and agency ID sent to Umbrella.net
  • Use original agency sends the producer's Booking source (e.g. 'Atriis') and the booking's agency ID as agency ID
  • Use passive GDS agency attempts to find a GDS entry in the service references and uses that reference. Furthermore, a matching GDS entry will be sought in the agency locators.
Default agency IDDefault agency ID, see processing rules below.
Only confirmed/invoicedIf true, only confirmed and/or ticketed services are sent to Umbrella.net
EMD-A as ticketAllows to define whether EMD-A should be imported as "ticket" in Umbrella.net, or as a simple price position.
Remark processorSetting a 'remark processor' allows for processing Atriis
  • Standard processes savings ('UMB-SV/') and fare paid ('UMB-FP/') remarks, and sets the B2B 'guiding customer' if using a profile system
  • Hero extends 'Standard' with a series of RM-entries (please contact us for detailed information).
Low cost service codeIf set, "Non-BSP flight" services will use this product code
Smart modifyIf set, bookings changes which do not affect Umbrella.net are dropped. While this can reduce data if the producer sends updates irrelevant to Umbrella.net, enabling this feature may not be advisable if the producer has some sort of "Sync with midoffice" function, where the agent expects a reaction in Umbrella.net.

Further processing rules:

Custom field names

This extension processes custom field values:

ship.routeWrites B2B 'route' on ship service
ship.accommodationWrites B2B 'accommodation1' on ship service

ViaXeo

The "ViaXeo" extension allows to send booking data to ViaXeo. Note that while ViaXeo also supports the more general MCTO format, this extension uses ViaXeo webservices which provide better data accuracy and processing flexibility.

Victoury

The "Victoury" extension allows to send flight tickets to Victoury ticket stock.

Further extensions

There are several more extensions being developed or in pilot-phase. If you're looking for a specific extension, contact us.