CSV Injection
If your organizer does not use S-360 to inject and manage tickets, TIXNGO provides another solution which is CSV injection to allow the organizer to inject up to 20'000 tickets at a time.
Inject tickets by CSV file
- Get an example template
Go to CSV Injection > Click CSV template at section 02
The minimal template contains all mandatory values that you need to inject tickets successfully to TIXNGO.
The full template contains all possible values that you can provide when injecting tickets to TIXNGO.
- Upload CSV file
Go to CSV Injection > Choose file > Submit
What you should know:
General set-up:
- CSV File Specifications:
- Maximum tickets per CSV file: 20,000 tickets
- The CSV file must be encoded in UTF-8.
- All dates must follow the RFC3339 standard for date and time.
- Template Options:
- Minimal Required Fields Template (CSV Minimal Template): Contains the minimum required fields.
- Complete Template (CSV Full Template): Includes all possible ticket fields to assist with CSV setup.
- Multilingual Template (CSV Full Template for Multilingual): Supports injecting with multilingual option.
- With these 3 templates, please exclude "injection" from the file name to avoid any error
- When using the Multilingual option, please ensure that you save your CSV file with the suffix "-multilingual".
- If you failed to inject your CSV file, check out some points below to figure out what's the rootcause:
- The CSV file must be encoded in UTF-8 to make sure your data format is valid
- Instead of leaving unused columns empty, please delete them from the file. These empty cells will cause the errors of wrong formatting.
- When saving your CSV file using Excel, please be cautious of a common issue where quotation marks ("") may be doubled. This duplication can cause errors when uploading the file.
- By ensuring that quotation marks are not doubled, you can prevent potential errors during the file upload process. To avoid this problem, follow these steps after saving the CSV file:
- Open the CSV file using a text editor or spreadsheet software.
- Search for any instances where quotation marks are doubled ("").
- Remove the duplicate quotation marks, leaving only single quotation marks (").
- Save the modified CSV file.
Tracking status:
- On this page, you will find a comprehensive list of all CSV injection jobs sent by the organizer, along with their respective statuses (COMPLETED/FAILED/IN PROGRESS).
- It is essential for organizers to review the output file to verify the actual status of each injected ticket, whether it is ACCEPTED or REJECTED
- Both the uploaded CSV file and the output file are available for download. The output file provides detailed information about the status of injected tickets, including any associated errors in case of failures.
- For more details on each field of the file, please check here for better understanding.
Understand each fields in CSV:
online activation method is only available if allow.activation-method.online = true, by default this setting key was set to false. TIXNGO mobile app supports offline activation perfectly, and we do not recommend using this activation method that requires our spectators must stay online during the gate opening.
Variable Name | Mandatory | Variable Type | Value length | Variable usage/description | Examples |
activationParameters.groupId | No | string | 50 char | The activation group to which the ticket belongs to. Tickets sharing the same activation id will have the same activation method & decryption code. | activation-id |
activationParameters.method | Yes | string | "online"/"offline"/"beacon" | The method using to activate the ticket. online : when activationTime is reached (backend clock), the backend activates the tickets and sends push notifications to trigger a GET /spectator/tickets on the app. offline: the mobile application activates the tickets when time is reaches (mobile clock). Online requires the user to be online, Offline does not. More on Ticket activation: /wiki/spaces/TNG/pages/48627957 | offline |
activationParameters.time | No | string | Date follows RFC 3339 standard | If online is chosen, define the time at which the tickets are activated (decrypted). | 2020-10-05T11:19:24+01:00 |
activationParameters.instanceId | No | string | 128 char | If offline is chosen, define the bluetooth instance id that the mobile app should listen to to get the decryption key. | |
image | No | string | 256 char | The uri to the image that will be displayed to the user with its ticket. It must have a width:length ratio of X:Y (to be defined). (displayed on the "Ticket" view). | https://r.tixngo.io/tng/Concert%20Asset%20300x240.png |
event.id | Yes | string | 256 char | ID representing the event (unique). | event-id-101 |
event.address.site | Yes | string | 200 char | Name of the site the Event will take place. | TIXNGO Stadium |
event.address.line1 | No | string | 200 char | Address line 1 | |
event.address.line2 | No | string | 200 char | Address line 2 | |
event.address.line3 | No | string | 200 char | Address line 3 | |
event.address.city | Yes | string | 200 char | City where the event takes place | Lausanne |
event.address.countryCode | No | string | 200 char | Country code for the Address | CH, FR, DE, etc |
event.address.region | No | string | 200 char | Region where the Event takes place | Bavaria |
event.address.zip | Yes | string | 50 char | Zip code where the Event takes place | |
event.address.longitude | No | double | double | Longitude where the Event takes place | |
event.address.latitude | No | double | double | Latitude where the Event takes place | |
event.name | Yes | string | 128 char | Name of the Event | “Team A vs Team B” |
event.startTime | Yes | string | Date follows RFC 3339 standard | Time at which the event starts. Used for app logic such as reminders etc... Date Format: 2022-12-12T16:11:00Z | 2023-10-05T11:19:24+01:00 |
event.expirationDate | No | string | Date follows RFC 3339 standard | Time at which the event expire. Expired event cannot be used anymore. | 2023-10-06T11:19:24+01:00 |
event.bluetoothPreparationRibbonDisplayTime | No | string | Date follows RFC 3339 standard | Time at which a ribbon displays on the mobile app to notify spectator turn on Bluetooth on the phone | 2023-10-05T11:21:24+01:00 |
event.bluetoothPreparationRibbonEndTime | No | string | Date follows RFC 3339 standard | Time at which a ribbon disappear on the mobile app | 2023-10-05T13:21:24+01:00 |
event.metadata | No | list | list of key-value metadata | Specific "key-value" fields provided to Organizer for special information about the event. Reserved Keys :
| [{"key": "BARCODE_POSITION", "value": "CENTER"},{"key": "CANCEL_RESALE_TICKETSHOP_URL", "value": "https://ticketshop.secutix.com/account/tickets?cancelResaleTicketId="}, {"key": "RESALE_TICKETSHOP_URL", "value": "https://ticketshop.secutix.com/account/resale/resellTickets?ticketIds="}] |
event.group.id | No | string | 256 char | Id of the Group. Every Event with this Group ID will be part of that Group. | GROUP-ID-101 |
event.group.name | No | string | 128 char | Name of the Group. | CHAMPION LEAGUE |
event.group.image | Yes | string | 256 char | The Image of the Group (displayed on the "My Events" view). | https://r.tixngo.io/tng/Concert%20Asset%20300x240.png |
purchaseDetails.price | Yes | double | double | The Ticket's price. (Example 30, 55.50, 120.55,..._) | 45.50 |
purchaseDetails.currency | Yes | string | 20 char | The currency used in the transaction using ISO-4217 standard (example: CHF, VND, USD). | EUR |
purchaseDetails.date | Yes | string | Date follows RFC 3339 standard | The date at which the Ticket was initially bought. | 2023-10-04T11:19:24Z |
purchaseDetails.priceCategory | Yes | string | 512 char | Examples of price category are adult, child, student, senior, VIP, etc. | ADULT, CHILD, etc |
purchaseDetails.taxationNumber | Yes | string | 512 char | (UUID) taxation number of the Ticket. | tax-num-1234 |
ticketDetails.main | No | list | list of key-value metadata | Free "key-value" fields usually used to define spectator seating information such as: gate:A, row:2, seat:7 (Displayed on the "front" of the Ticket). | [{"key": "Gate", "value": "A"},{"key": "Row", "value": "54"}, {"key": "Seat", "value": "A5"}] |
ticketDetails.extra | No | list | list of key-value metadata | Free "key-value" fields usually used to define extra information (Displayed on the "back" of the Ticket). Reserved Keys : file_id : optional field set by the Organizer at injection. | [{"key": "File", "value": "123"},{"key": "Special Note", "value": "No Re-Entry"}, {"key": "Parking", "value": "Included"}] |
ticketDetails.hidden | No | list | list of key-value metadata | Free "key-value" fields usually used to add hidden information, ex: used between Organizer and TIXnGO (Not displayed on the Ticket). Reserved Keys : transfer_extra : optional field set by the sender during a ticket transfer in transferOrder.extra background_color : optional field set by the Organizer at injection. Define the background color of the ticket. hosp_room: optional field set by the Organizer at injection. Define the hospitality room of the ticket. show_price: optional field set by the Organizer at injection. Define to show or not show the price on ticket extra at_icon: optional field set by the Organizer at injection. Define to show extra icon on the top-left of ticket layout ticketDetailMainNotInBoxes: optional field set by the Organizer at injection. Define how many fields (of ticketDetails.main) that will not stay in boxes (count from the last one) specialColor: optional field set by the Organizer at injection. Define the horizontal stripe color on QRcode part ticket layout Furthermore, you can override the all the event.metadata keys on a per ticket level. | [{"key": "background_color", "value": "#010101"},{"key": "show_price", "value": "false"}, {"key": "ticketDetailMainNotInBoxes", "value": "2"}] |
security.barcode | Yes | string | 512 char | Barcode of the Ticket. | 1234567890 |
DEPRECATED | |||||
spectatorDetails.residenceCountry | No | string | ISO Alpha-2 format | Initial spectator's residence country. | |
spectatorDetails.phoneNumber | No | string | 50 char | Initial spectator's phone number. | |
spectatorDetails.email | Yes | string | 256 char | Initial spectator's email. | user1234@domain.com |
spectatorDetails.firstName | Yes | string | 50 char | Initial spectator's first name. | Michael |
spectatorDetails.lastName | Yes | string | 100 char | Initial spectator's last name. | Harry |
spectatorDetails.gender | No | string | 1 char (m/f/u/x) | Initial spectator's gender. m, f, u or x (For Male, Female, Other, Unknown) | m |
spectatorDetails.dateOfBirth | No | string | Date follows RFC 3339 standard | Initial spectator's birth date. | |
spectatorDetails.nationality | No | string | ISO Alpha-2 format | Initial spectator's nationality. | |
spectatorDetails.passportNumber | No | string | 200 char | Initial spectator's passport number. | |
spectatorDetails.idCardNumber | No | string | 200 char | Initial spectator's ID card number. | |
spectatorDetails.spectatorStatus | No | string | "Activated" / "Not activatied" | If the initial spectator is registered in the TIXnGO system. | |
spectatorDetails.ticketHolder.identity.firstName | No | string | 50 char | Ticket Holder's first name. | |
spectatorDetails.ticketHolder.identity.lastName | No | string | 100 char | Ticket Holder's last name. | |
spectatorDetails.ticketHolder.identity.gender | No | string | 1 char (m/f/u/x) | Ticket Holder's gender m, f, u or x(For Male, Female, Other, Unknown) | |
spectatorDetails.ticketHolder.identity.dateOfBirth | No | string | Date follows RFC 3339 standard | Ticket Holder's birth date. | |
spectatorDetails.ticketHolder.identity.nationality | No | string | ISO Alpha-2 format | Ticket Holder's nationality. | |
spectatorDetails.ticketHolder.identity.passportNumber | No | string | 200 char | Ticket Holder's passport number. | |
spectatorDetails.ticketHolder.identity.idCardNumber | No | string | 200 char | Ticket Holder's ID card number. | |
spectatorDetails.ticketHolder.identity.email | No | string | 256 char | Ticket Holder's email. | |
spectatorDetails.ticketHolder.identity.phoneNumber | No | string | 50 char | Ticket Holder's phone number. | |
spectatorDetails.ticketHolder.identity.birthCity | No | string | 50 char | Ticket Holder's birth city. | |
spectatorDetails.ticketHolder.identity.birthCountry | No | string | ISO Alpha-2 format | Ticket Holder's birth country. | |
spectatorDetails.ticketHolder.identity.residenceCountry | No | string | ISO Alpha-2 format | Ticket Holder's residence country. | |
spectatorDetails.ticketHolder.identity.address.line1 | No | string | 200 char | TIcket Holder's address line 1. | |
spectatorDetails.ticketHolder.identity.address.line2 | No | string | 200 char | Ticket Holder's address line 2. | |
spectatorDetails.ticketHolder.identity.address.line3 | No | string | 200 char | Ticket Holder's address line 3. | |
spectatorDetails.ticketHolder.identity.address.city | No | string | 200 char | Ticket Holder's residence city. | |
spectatorDetails.ticketHolder.identity.address.countryCode | No | string | 200 char | Ticket Holder's country code. | |
spectatorDetails.ticketHolder.identity.address.zip | No | string | 50 char | Ticket Holder's zip code. | |
spectatorDetails.ticketHolder.extraInfo1 | No | string | 100 char | Free field of extra info about the Ticket Holder. | |
spectatorDetails.ticketHolder.extraInfo2 | No | string | 100 char | Second free field of extra info about the Ticket Holder. | |
spectatorDetails.ticketHolder.reason | No | string | 512 char | Reason of why the assignment happen. Can be modified later by the spectator. (Optional) | |
spectatorDetails.organizerSpectatorPreference.allowPromoEmail | No | boolean | boolean | Default false. Spectator accept promotional email from TIXnGO. | |
spectatorDetails.organizerSpectatorPreference.allowPromoThirdPartyEmail | No | boolean | boolean | Default false. Spectator accept promotional email from Third-Party. | |
spectatorDetails.organizerSpectatorPreference.allowTracking | No | boolean | boolean | Default false. Spectator accept to be tracked and data matching. | |
ticketId | Yes | string | 256 char | Ticket ID differentiating each ticket. It must be unique (UUID). | tng-1234567890 |
lang | No | string | 5 char ISO 639‑1 format | The default language for the Ticket. Injection communications will be sent in this language. Example: fr, en, de, it, es | |
transferRules.groupId | No | string | 256 char | Transfer rules can technically be different for every ticket. Organizer might want to chose to have different transfer rules for different types of ticket (ex: Adult, child, VIP, etc…). This GroupID is the Transfer rules group ID representing a group of transfer rules applied to certain tickets. If Organizers want to apply the same rules to every tickets, by default this groupID is set to the EventID and every ticket will be in this group. | |
transferRules.maxNumberOfTransferPerTicketInGroupId | No | integer | integer | Total amount of transfers per Ticket (-1 feature is disabled). | |
transferRules.assignTransferLimit | No | integer | integer | Define upper bound of ticket's transfer level for the "Assign" function | |
transferRules.allowTransfer | No | boolean | boolean | Enables or Disables transfer functionality for given match (Send menu item in the ticket view hidden or displayed). | |
transferRules.allowTransferMainApplicant | No | boolean | boolean | Enable or Disable transfer functionality for Main Applicant ticket's. | |
transferRules.allowTransferAfterActivation | No | boolean | boolean | Enables or Disables transfer functionality for given match for Activated Tickets (Send menu item in the ticket view hidden or displayed). | |
transferRules.allowTransferAfterActivationByBT | No | boolean | boolean | Enables or Disables transfer functionality for Checked Tickets (Send menu item in the ticket view hidden or displayed). | |
transferRules.allowTransferAfterControl | No | boolean | boolean | Enables or Disables transfer functionality for given match for Controlled Tickets (Send menu item in the ticket view hidden or displayed). | |
transferRules.allowReturnToOrganizer | No | boolean | boolean | Allow to release ticket to resale / allow ticket shop resale | |
transferRules.allowReturnToOrganizerForInitialSpectator | No | boolean | boolean | Only Initial Spectator can release ticket to resale | |
transferRules.keepOneInGroupId | No | boolean | boolean | Force ALL ticket wallet holders to keep at least 1 ticket per given Match. | |
transferRules.keepOneAtInjectInGroupId | No | boolean | boolean | Force ticket wallet holder to whom tickets were originally injected to keep at least 1 ticket per given Match. E.g. all his transfer guests will be able to forward all the tickets they received. | |
design.id | No | string | 256 char | The Design Id applies to the ticket. | |
design.backgroundColor | No | string | 7 char hexadecimal color code | The background color of the corresponding design. | |
design.secureColor | No | string | 7 char hexadecimal color code | The secure color of the corresponding design, which will be displayed on the event day. | |
design.secureImage | No | string | 256 char | The secure image of the corresponding design, which will be displayed on the event day. | |
ticketInjectionDate | No | string | Date follows RFC 3339 standard | The date at which the ticket was injected. | |
mainApplicant | No | boolean | boolean | Optional Main Applicant flag (SecuTix) | |
sortingKey | No | string | 256 char | A key to sort the tickets in the spectator view. The tickets will be sorted according to this key in alphabetical order. | |
mobileAppId | Yes | string | 256 char | Mandatory Mobile Application App Id to use associated invitation email template (used by organizer using their own app or branded apps). | io.tixngo.app |
contingent | No | string | 256 char | The type of contingent applies to the ticket |
© TIXNGO 2023 - Login