Deeplink Integration for Travel
The Deeplink Integration allows Concur Travel users to have direct access to the Shopping Results page (for a flight, car, hotel, or train search), respectively the itinerary page (for an itinerary deeplink) in one click.
Prerequisites
Users must have an account in Concur Travel and they need to authenticate or be logged in. Authentication methods supported are username / password and SSO SAML2.
The company must be part of the new Concur Travel.
Limitations
When using SAML2 IdP-Initiated flow there is the caveat that IdP must support setting relayState
with the encoded deeplink path. Example for SAP Cloud Identity Services (CIS):
{IdP_URI}?sp={concur_URI}&relayState=%2Fgoto%2Fair-shop%3Fdeparturedate%3D2023-11-10%26departureLocation%3DJFK%26returndate%3D2023-11-15%26returnlocation%3DLAX
Deeplink Integration is not available for mobile and currently it only supports flight / car / hotel / train search and itinerary lookup.
Integration Details
Search
Deeplink Integration allows users to perform a search in Concur Travel without having to manually fulfill the information in the UI. Search parameters like location and time are incorporated in the URL.
In case of errors, the user is redirected to an error message page with a link to the Concur Travel home page from which a regular search can be started.
Itinerary
Deeplink Integration allows users to lookup an itinerary in Concur Travel without having to manually navigate on the UI, providing instant access to detailed trip data.
The deeplink only allows redirection to users authorized to view the itinerary. Authorized users are the traveler, a travel arranger, or an approver. An approver user will see the approver’s view of an itinerary, while the traveler and the arranger will see the traveler’s view of an itinerary.
This integration streamlines the user experience, making trip management more efficient and user-friendly. In the event of any errors encountered during redirection, users will be seamlessly redirected to the Concur Travel home page.
Single Sign-On (SSO)
When a deeplink is shared with users from one company, add the query parameter companyuuid
to the deeplink. This way users are automatically guided to the appropriate identity provider for SSO (if configured). If the deeplink is shared with users from different companies or SSO is not configured for them, don’t add the query parameter companyuuid
.
Example of Usage
https://www.concursolutions.com?companyuuid=1abc2345-6789-123d-45e6-f7a8b91cd2ef
Query Parameters
Name | Type | Format | Description |
---|---|---|---|
companyuuid |
string |
UUID |
(Optional) The unique identifier of a company, to which the user belongs. |
Flight Search
Users can search for round-trip flights by entering a departure date, origin / departure airport, a return date and a destination / return airport. If searching for a one-way flight, they must enter the departure information and destination airport; however, they shouldn’t provide a return date.
Users are able to omit one of the airports (departure or return) when they want to departure from or return to their home airport. For this, they need to have a preferred departure airport configured in their Travel Profile — under Air Travel Preferences, set Preferred Departure Airport. Or, they can select an airport while following the deeplink. In case the departure airport is missing in the deeplink, they also have the option to save the selected airport to the profile.
URI Template
https://www.concursolutions.com/goto/air-shop?departurelocation={departurelocation}&departuredate={departuredate}&departuretime={departuretime}&returnlocation={returnlocation}&returndate={returndate}&returntime={returntime}&cabintype={cabintype}
Example of Usage
https://www.concursolutions.com/goto/air-shop?departurelocation=POA&departuredate=2024-08-04&departuretime=13:00&returnlocation=SDU&returndate=2024-08-20&returntime=09:00&cabintype=ECONOMY
Query Parameters
Name | Type | Format | Description |
---|---|---|---|
departurelocation |
string |
Location Format | Required if returnlocation is not informed Airport where the departure flight will take place. |
departuredate |
string |
YYYY-MM-DD |
Required Departure flight date. |
departuretime |
string |
hh:mm |
(Optional) Departure flight time in 24-hour format. Minutes are disregarded: 16:50 becomes 16:00 . |
returnlocation |
string |
Location Format | Required if departurelocation is not informed Airport where the return flight will take place. For one-way trips, this will be considered as the destination airport, see Example: One-way trip. |
returndate |
string |
YYYY-MM-DD |
(Optional) Return flight date. |
returntime |
string |
hh:mm |
(Optional) Return flight time in 24-hour format. Minutes are disregarded: 16:50 becomes 16:00 . |
cabintype |
string |
Cabin Types | (Optional) The section of the aircraft that the user wants to travel in. |
The airport can be identified in different ways:
- IATA Code: a three-letter code that represents the airport, for example,
LAX
for Los Angeles International Airport. - Geographic Coordinates: latitude and longitude for a geopoint.
Format:{lat},{long}
, with no blank space in between. Example:48.85694273527786,2.3501079080340315
for Paris. With these coordinates a search for airports in a radius of 100 km is performed and the closest airport is used in the flight search.
The supported cabin types are:
ECONOMY
PREMIUM_ECONOMY
BUSINESS_OR_FIRST
Example: Round-Trip
https://www.concursolutions.com/goto/air-shop?departurelocation=OPO&departuredate=2024-06-01&departuretime=02:00&returnlocation=BER&returndate=2024-06-02&returntime=03:00&cabintype=BUSINESS_OR_FIRST
This deeplink will perform a search for a departure flight from OPO to BER airport, on June 1st, 2024, at 02:00AM ±2 and a return flight from BER to OPO, on June 2nd, 2024 at 03:00AM ±2. The search will bring flight offers in Business or First class.
Example: One-way Trip
https://www.concursolutions.com/goto/air-shop?departurelocation=48.85694273527786,2.3501079080340315&departuredate=2024-06-01&departuretime=02:00&returnlocation=SDU
This deeplink will perform a search for a flight from LBG (airport in Paris) to SDU, on June 1st, 2024 with departure time at 02:00AM ±2.
Example: Omitting Departure or Return location
In this example, we are considering that the user has defined LAX as their preferred airport.
On the deeplink below the user is omitting the desired departure location. Therefore, they will be taken to the search results page, showing departure flights from LAX (preferred airport) to BER. The next page will show return flights, from BER back to LAX.
https://www.concursolutions.com/goto/air-shop?departuredate=2024-06-01&returnlocation=BER&returndate=2024-06-02
In this next example the user omitted returnlocation
. This will result in a search for a flight from LBG (airport in Paris) to LAX.
https://www.concursolutions.com/goto/air-shop?departurelocation=48.85694273527786,2.3501079080340315&departuredate=2024-06-01
Car Search
Users can search for cars by requesting a pickup date, time and location, a drop-off date, time and location. If pickup and drop-off location should be the same, the drop-off location can be omitted.
URI Template
https://www.concursolutions.com/goto/car-shop?pickuplocation={pickuplocation}&pickupdate={pickupdate}&pickuptime={pickuptime}&dropofflocation={dropofflocation}&dropoffdate={dropoffdate}&dropofftime={dropofftime}
Example of Usage
https://www.concursolutions.com/goto/car-shop?pickuplocation=48.85694273527786,2.3501079080340315&pickupdate=2024-06-01&pickuptime=12:00&dropofflocation=50.035467,8.562884&dropoffdate=2024-06-02&dropofftime=18:00
Query Parameters
Name | Type | Format | Description |
---|---|---|---|
pickuplocation |
string |
Location Format | Required Location where the car will be picked up. |
pickupdate |
string |
YYYY-MM-DD |
Required Date when the car will be picked up. |
pickuptime |
string |
hh:mm |
Required Time when the car will be picked up. Uses the 24-hour format. |
dropofflocation |
string |
Location Format | (Optional) Location where the car will be dropped off. If it is not provided, it will default to pickuplocation . |
dropoffdate |
string |
YYYY-MM-DD |
Required Date when the car will be dropped off. |
dropofftime |
string |
hh:mm |
Required Time when the car will be dropped off. Uses the 24-hour format. |
- Geographic Coordinates: latitude and longitude for a geopoint.
Format:{lat},{long}
, with no blank space in between. Example:50.038432519565845,8.562138820315441
for Frankfurt airport. With these coordinates, a search for a location in a radius of 10 km is performed and the closest location is used in the car search.
Hotel Search
Users can search for hotels in a certain distance around the location by informing a check-in and checkout date, search center location, a distance around the location and a unit for the distance.
Users are able to omit the unit or distance or both when they want to use default values. Omitting the distance will default to a distance of 5mi. Omitting the unit will default to the value set in their Travel Profile — under Profile Settings, System Settings, mile/km.
URI Template
https://www.concursolutions.com/goto/hotel-shop?checkindate={checkindate}&checkoutdate={checkoutdate}&location={location}&locationsource={locationsource}&distance={distance}&unit={unit}
Example of Usage
https://www.concursolutions.com/goto/hotel-shop?checkindate=2024-08-01&checkoutdate=2024-08-02&location=50.050686,8.565997&distance=15&unit=mi
Query Parameters
Name | Type | Format | Description |
---|---|---|---|
checkindate |
string |
YYYY-MM-DD |
Required Date when to check in to the hotel. |
checkoutdate |
string |
YYYY-MM-DD |
Required Date when to check out of the hotel. |
location |
string |
Location Format | Required Location of the search center. |
locationsource |
string |
one of {northstar , giata , leonardo , amadeus , sabre , galileo , cwt , expedia , hrs , booking.com , omnibees } |
Required if location is a Hotel Property ID. Source of the Hotel Property ID. For geo-coordinates and Concur Travel Internal Hotel ID, omit this query parameter. |
distance |
integer |
one of {1 , 2 , 3 , 4 , 5 , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45 , 50 , 55 , 60 , 65 , 70 , 75 , 80 , 85 , 90 , 95 , 100 } |
(Optional) Distance around the location . If not set, it will default to 5 mi distance and radius as search radius. |
unit |
string |
km or mi |
(Optional) Unit for the distance . If not set, the value will be taken from users profile - under Profile Settings, System Settings, mile/km. |
The hotel location can be informed in different ways:
- Hotel Property ID: Hotel property ID provided by one of the following sources:
northstar
,giata
,leonardo
,amadeus
,sabre
,galileo
,cwt
,expedia
,hrs
,booking.com
,omnibees
. See the documentation of Direct Connect - Hotel Service. Format: alpha-numeric string. Example:TLLAX308
from amadeus or56521
from booking.com for Travelodge LAX South in El Segundo, CA. With this Hotel Property ID, a search for hotels is performed and the hotel corresponding to the ID is highlighted at top of the search results. The Hotel Property ID value is case sensitive and should be exactly as given by the source. - Geographic Coordinates: latitude and longitude for a geopoint.
Format:
{lat},{long}
, with no blank space in between. Example:48.85694273527786,2.3501079080340315
for Paris. With these coordinates, a search for hotels in a radius ofdistance
unit
is performed. - Concur Travel Internal Hotel ID: Concur Travel internal ID of a hotel.
Format: alpha-numeric string. Example:1907825ad1f728ccafb22942d61a2715
for Econo Lodge Inn & Suites in Arkansas. With this internal ID, a search for hotels is performed and the hotel corresponding to the ID is highlighted at top of the search results.
The internal hotel ID should only be used inside of Concur Travel, for example, Concur Travel MS Teams integration.
Example: Hotel Property ID location
https://www.concursolutions.com/goto/hotel-shop?checkindate=2024-11-02&checkoutdate=2024-11-03&location=708752&locationsource=hrs
This deeplink will perform a search for the hotel Travelodge LAX South in El Segundo (CA) and hotels nearby in the 5 mi default radius, with check-in date on November 2nd, 2024 and checkout date on November 3rd, 2024. It uses the Hotel Property ID from HRS as location.
Example: Concur Travel Internal Hotel ID location
https://www.concursolutions.com/goto/hotel-shop?checkindate=2024-11-02&checkoutdate=2024-11-03&location=1907825ad1f728ccafb22942d61a2715
This deeplink will perform a search for the hotel Econo Lodge Inn & Suites in Arkansas and hotels nearby in the 5 mi default radius, with check-in date on November 2nd, 2024 and checkout date on November 3rd, 2024. It uses a Concur Travel Internal Hotel ID as location.
Add Hotel to Existing Trip
Users are able to provide a trip ID in a hotel deeplink and omit the check-in and check-out dates. Then the hotel search and subsequent hotel booking will be part of the specified trip, instead of a separate new trip. If only a trip ID is provided without a specific location, the user will end up on the hotel search page with pre-filled search criteria based on the trip’s bookings.
If in addition to the trip ID a specific location is provided, the user will directly get to the search results based on this location.
The check-in and check-out dates are taken over from the arrival of the first air booking and the departure of the last air booking of the specified trip. In case of a one-way flight the check-out date is taken over from the trip end date. If the trip contains no air booking then the trip start and end dates are used.
URI Template
https://www.concursolutions.com/goto/hotel-shop?tripid={tripid}&location={location}&locationsource={locationsource}&distance={distance}&unit={unit}
Example of Usage
https://www.concursolutions.com/goto/hotel-shop?tripid=9be19dda-bf33-4110-ac48-bf840878cd3c&location=50.050686,8.565997&distance=15&unit=mi
Query Parameters
Name | Type | Format | Description |
---|---|---|---|
tripid |
string |
UUID |
Required Unique identifier of the trip, formatted as a UUID. |
location |
string |
Location Format | (Optional) Location of the search center with default search radius of 5 mi. |
locationsource |
string |
one of {northstar , giata , leonardo , amadeus , sabre , galileo , cwt , expedia , hrs , booking.com , omnibees } |
Required if location is provided and is a Hotel Property ID. Source of the Hotel Property ID. For geo-coordinates and Concur Travel Internal Hotel ID, omit this query parameter. |
distance |
integer |
one of {1 , 2 , 3 , 4 , 5 , 10 , 15 , 20 , 25 , 30 , 35 , 40 , 45 , 50 , 55 , 60 , 65 , 70 , 75 , 80 , 85 , 90 , 95 , 100 } |
(Optional) Distance around the location . If not set, it will default to 5 mi distance and radius as search radius. |
unit |
string |
km or mi |
(Optional) Unit for the distance . If not set, the value will be taken from users profile - under Profile Settings, System Settings, mile/km. |
Example: Only trip ID
https://www.concursolutions.com/goto/hotel-shop?tripid=a7f172cd-8587-48d5-8533-5ddb7ff5c26c
This deeplink will redirect the user to the hotel search form to add a booking to the trip with id a7f172cd-8587-48d5-8533-5ddb7ff5c26c
. Search proposals based on the content of the trip are available in the search form.
Example: Hotel Property ID location
https://www.concursolutions.com/goto/hotel-shop?tripid=a7f172cd-8587-48d5-8533-5ddb7ff5c26c&location=708752&locationsource=hrs
This deeplink will perform a search for the hotel Travelodge LAX South in El Segundo (CA) and hotels nearby in the 5 mi default radius. It uses the Hotel Property ID from HRS as location. The check-in and check-out dates are taken from the corresponding trip with trip ID a7f172cd-8587-48d5-8533-5ddb7ff5c26c
. Either the trip contains air bookings, then the arrival date of the first flight will be used as check-in date for the hotel search and the departure date of the last flight will be used as check-out date, or the trip start and end dates will be used as check-in and check-out dates, respectively. The user will get directly to the search results.
Train Search
Users can search for train round-trips by informing a departure date, time and location, a return date, time and destination/return location. If searching for a train one-way trip, they must inform departure information and destination location; however, they shouldn’t provide a return date or time.
URI Template
https://www.concursolutions.com/goto/rail-shop?departurelocation={departurelocation}&departuredate={departuredate}&departuretime={departuretime}&returnlocation={returnlocation}&returndate={returndate}&returntime={returntime}
Example of Usage
https://www.concursolutions.com/goto/rail-shop?departuredate=2024-06-12&departuretime=15:00&returndate=2024-06-13&returntime=07:00&departurelocation=41.378696,2.140457&returnlocation=41.380057,2.138956
Query Parameters
Name | Type | Format | Description |
---|---|---|---|
departurelocation |
string |
Location Format | Required Location where the train will depart from. |
departuredate |
string |
YYYY-MM-DD |
Required Date when the train will depart. |
departuretime |
string |
hh:mm |
Required Time when the train will depart. Uses the 24-hour format. |
returnlocation |
string |
Location Format | Required Location where the train will return to. For one-way trips, this will be considered as the destination location. |
returndate |
string |
YYYY-MM-DD |
(Optional) Date when the train will return. |
returntime |
string |
hh:mm |
(Optional) Time when the train will return. Uses the 24-hour format. |
- Geographic Coordinates: latitude and longitude for a geopoint.
Format:{lat},{long}
, with no blank space in between. Example:41.37891483977241,2.1398877111090844
for Barcelona-Sants. With these coordinates a search for train stations in a radius of 25 km is performed and the closest station is used in the train search.
Troubleshooting
Possible scenarios:
# | Issue | Error message | Possible solution |
---|---|---|---|
1. | User doesn’t have access to Concur Travel | “Sorry, you don’t have the right permissions to shop travel” | Contact your company admin to enable Concur Travel for your user. This will only work if your company purchased Concur Travel. |
2. | User is not setup for new Concur Travel or this specific transportation type | “Sorry, you don’t have the right permissions to use this feature” | Contact your company admin to enable new Concur Travel for the transportation type, which is specified in the deeplink. For example, if a car deeplink isn’t working, make sure to be eligible and enabled to use the new Concur Travel car. Deeplinks are not supported in the legacy experience of Concur Travel. |
3. | Invalid search input | “The link you followed to start your travel search was not properly formatted” | Make sure there are no typos in your deeplink. Check that the query parameter values are properly formatted, all required parameters are set and the dates are in the future. |
4. | Invalid Hotel Property ID | “The property requested was not found” | In a hotel deeplink check that the Hotel Property ID belongs to the specified locationsource and that there are no typos in the values. The Hotel Property ID needs to be exactly the same as defined in the source. |
5. | No search results | “No offers found for your search criteria” | Depending on the transportation type, try to extend the time intervals, date ranges or location radius of your search. If applicable, double check your geo-coordinates and choose them as close to the desired location as possible. Maybe the next airport is farther away from the specified geo-coordinates than the default 100km search radius in an air deeplink. Contact your travel admin to figure out if the required vendor is enabled for the route you are searching for. Maybe only a Spanish train vendor like Renfe is configured for your company, but the train deeplink is pointing to a connection in Germany e.g. Berlin to Munich. In case of a hotel deeplink with Hotel Property ID as location, make sure that the locationsource is set. Otherwise, the location will be treated as a Concur Travel Internal Hotel ID. |
6. | General error following a deeplink | “Sorry, something went wrong while we were getting your travel options” | Try again later and make sure the deeplink is properly formatted as described in scenario 3 above and the dates are in the future. |
If the previous steps didn’t solve the issue, go to the Concur Travel home page and start a search from there by entering the search criteria yourself.
Itinerary
Deeplink Integration allows users to look up an itinerary in Concur Travel without having to manually navigate the UI, providing instant access to detailed trip data.
The deeplink only allows redirection to users authorized to view the itinerary. Authorized users are the traveler, a travel arranger, or an approver. An approver user will see the approver’s view of an itinerary, while the traveler and the arranger will see the traveler’s view of an itinerary.
This integration streamlines the user experience, making trip management more efficient and user-friendly. In the event of any errors encountered during redirection, users will be seamlessly redirected to the Concur Travel home page.
The deeplink requires the trip uuid, which will be soon available in the PNR.
URI Template
https://www.concursolutions.com/goto/trip/{tripid}
Name | Type | Format | Description |
---|---|---|---|
tripid |
string |
UUID |
Required Unique identifier of the trip, formatted as a UUID. |
This deeplink URL facilitates accessing detailed trip information in SAP Concur solutions through either SSO or username/password authentication when launched from third-party applications, seamlessly redirecting users to the corresponding itinerary.
Example:
https://www.concursolutions.com/goto/trip/779a324d-6e1d-4fe8-8f98-9362be994766