PDF Monkey - Customized Itinerary PDF
While we do not offer Itinerary customization, you can manage your own custom templates by setting up a personal instance of PDF Monkey.
Once you’ve subscribed to PDF Monkey, simply provide us the API token of your instance and the template ID. We will connect it to your Consumer and, from there, you can test your custom template and start using it for your own “Itinerary PDF”.
It will work outside of the box and you will be able to tweak the templates in your own PDF Monkey instance as you wish.
A few things to keep in mind:
- Make sure to create a template that includes the logic for creating PDFs for All passenger and by each passenger, so it can work out of the box with the setup we have in BookingPad
- It is important for you to familiarize yourself with our OrderRetrieve response, as only the data available there will be possible to include in the PDF Generation
- If you include a parameter that is not supported in our OrderRetrieveRS, it will not be included on the PDF
- As PDF Monkey fall outside our product, we are not able to provide direct support for it.
We are able to add your agency logo and color to your template. If you require further customization, you’ll need to send us the new template done with Liquid so we can add it to your agency.
It’s possible to customize both, PDF and email templates.
Fields that can be used in templates for customization
- subject -> Subject of the mail
- agencyLogo -> agency’s logo url served from our systems
- providerLogo -> provider’s logo url served from our systems
- pnr -> order PNR
- status -> booking status
- passengers -> list of passengers with many information inside which can be looped in template
- passenger.data.title -> title of the passenger (Mr, Mrs…)
- passenger.data.name -> name of the passenger
- passenger.data.surname -> surname of the passenger
- passenger.data.birthdate -> passenger birthdate (if set)
- passenger.data.email -> passenger email (if set)
- passenger.data.phone -> passenger phone (if set)
- passenger.travelerReference -> passenger traveler reference from the airline
- passenger.document.documentType -> main document associated to the passenger type (passport, visa…)
- passenger.document.documentID -> main document associated to the passenger number
- passenger.documents -> list of documents associated to the passenger which can be looped in template
- document.documentType -> document type (passport, visa…)
- document.documentID -> document number
- agencyData -> information related to the agency with many fields inside
- agencyData.agency -> agency name
- agencyData.email -> agency email
- agentEmail -> email of agent responsible for the booking
- price.consumer.total -> total price paid by consumer
- price.consumer.currency -> consumer currency
- marketingProviderData -> holds details about airline in charge of the order
- marketingProviderData.name -> airline name
- marketingProviderData.id -> IATA code of airline
- flights -> list of flights which can be looped in template
- flight.segments -> list of segments inside a flight which can be looped in template
- flight.departure.date -> date of departure for that flight
- flight.departure.airportCode -> flight departure airport code
- flight.arrival.airportCode -> flight arrival airport code
- flight.arrival.airportName -> airport name property
- flight.departure.airportName -> airport name property
- flight.baggageAllowance.carryOn -> list of carry on baggages allowed for current
- bookingflight.baggageAllowance.options[0].quantity -> allowed number of carry on baggages for a given traveler
- flight.baggageAllowance.passengerRefs -> reference to the passenger associated to that carry on baggage
- flight.baggageAllowance.checked -> same as carry on but for carry on baggage
-
flight.key -> reference key of that flight
-
segment.originDestination.departure.airportCode -> airport code for that segment origin
-
segment.originDestination.arrival.airportCode -> airport code for that segment arrival
-
segment.originDestination.departure.city
-
segment.originDestination.departure.airportName
-
segment.operatingCarrier.airlineID -> airline IATA code for the operating carrier of that segment
-
segment.equipment.aircraftCode -> aircraft code for that segment (it can be a plane number, train, bus…)
-
segment.originDestination.departure.date -> segment departure date
-
segment.originDestination.departure.time -> segment departure time
-
segment.originDestination.arrival.date -> segment arrival date
-
segment.originDestination.arrival.time -> segment arrival time
-
segment.detail.duration -> duration of that segment
-
segment.originDestination.arrival.terminalName -> name of the terminal in the arrival
-
segment.detail.classOfService.code -> class of service code for that segment
-
segment.detail.classOfService.cabinDesignator -> class of service cabin designator for that
-
segment.disclosures -> list of disclosures which can be looped in template
-
seats -> list of seats for passengers
-
seat.segment -> reference to segment ID
-
seat.passengerRefs -> passenger assigned to seat
-
seat.location.row
-
seat.location.column
- services -> list of services
- service.name
- service.segmentReferences
- service.travelerReferences
- service.isSSR -> a boolean which indicates if the service is an SSR
- passenger.data.fqtvInfo.number.account
- passenger.data.fqtvInfo.airlineID
- disclosures.descriptions -> list of descriptions in each disclosure
- disclosures.descriptions.originDestinationReference -> origin destination reference (flight keys)
- disclosures.descriptions[].category -> category of the disclosure (cancellation, change…)
- disclosures.descriptions[].text -> text of the disclosure
- disclosuresPerCategories -> map of disclosures based on categories
- disclosuresPerCategories.category_name.[].descriptions -> list of descriptions in each disclosure
- disclosuresPerCategories.category_name.[].descriptions.[].text -> text of the disclosure
- disclosuresPerCategories.category_name.[].descriptions.[].category -> category of the disclosure
- disclosuresPerCategories.category_name.[].descriptions.[].originDestinationReference -> reference of the disclosure
- disclosuresPerCategories.category_name.[].descriptions.[].units -> unit of the disclosure
- comments -> order-level message
- agencyData.alert -> agency-level message
Most airlines return disclosures for these categories:
BAGGAGE_CARRYON
BAGGAGE_CHECKED
EXCHANGE
MILES
SEAT
SERVICE
UNKNOWN (here we add all those we don’t know how to include in any of the rest)
For instance, if you want to show all checked baggage disclosures, you could use:
You can see an example in the attached article with our default template.