Registration/Booking Integration Guide

If you want to add an easy to complete waiver into your customer reservation or booking workflow, you can use WaiverFile to seamlessly provide that feature. WaiverFile includes a reference ID feature to link those signatures up with your existing booking ID so you can monitor signature status automatically. In this guide we will cover the details of how you can use these features to create an easy to follow path for your customers.

The first step is to determine what your reference ID will be. This might be a booking ID, reservation ID or customer ID. You can use one or several (up to 3) ID numbers. This ID is what you will use to identify each waiver with an element in your system.

Overview Diagram

Registration System Waiver Flow Integration Diagram

  

Settings

To turn the feature on, log into your WaiverFile account (or start a free trial). Once there, go to Settings >> General Settings. Check the box for Enable Reference ID’s. A few additional options will appear:

Input Field:

  • Show and lock: This will display the reference ID on the form itself in a textbox, but it will be locked. This allows customers to see their ID and confirm it, but they cannot edit it. 
  • Show and allow editing: This displays the reference ID in a textbox on the form, and customers can edit the value if they wish. 
  • Hide - the reference ID will be hidden. No extra form fields are displayed. The value is captured in a hidden field. 

Required: 

  • All required: in order to submit the form, all reference ID(s) must be present. 
  • One required: even if multiple fields are enabled, just one is required. 
  • Optional: The form will collect the reference ID if it is available but it will allow submission even if it is blank. 

How many reference ID fields: You can choose 1-3 fields.

 

Pre-populating the reference ID field

Once you have your settings enabled, the fields will be in place. To fill in the value, you will use a custom link to pass in the value. Start with a link to your waiver form. You can link directly to a form, event, or just to the first page. The values will be handled on any page within the signing area, so you can start with a link to any spot in the flow that is appropriate for your situation.

Once you have your starting link, add one or more reference ID parameters using the names: 

refid, refid2 and refid3. Here is an example:
https://www.waiverfile.com/b/demo/Waiver.aspx?refid=ABCDEFG&refid2=12345

* If you are unfamiliar with how to work with URL parameters, check out our parameter guide.

 Once you have your link working, you can test it out by signing a test waiver. When you view the waiver in the dashboard, you will see the reference ID’s listed along with the general waiver data.

To complete your workflow, you will likely want to push or pull the data for these signatures back to your system. There are two ways to achieve this. One is by setting up a web hook, which will submit the waiver data to a URL that you control as soon as each waiver is signed. The other is to use our API methods to search for waivers by reference ID. You can use a combination of methods depending on your use case as well.

A note about multiple waivers per ID

In many booking situations, you will have groups that book together, but may require multiple separately signed waivers. You might have a family all together on one booking, but if you require a signed waiver for each adult, you may have one waiver with a parent and children on it, and then another waiver for their spouse. When you are designing your system, you ideally will want to be able to look for multiple waivers per reference ID for this reason. Then in your interface where you are viewing the booking, you can display a list of all names that have been signed for. Note also that in WaiverFile, you can sign waivers for multiple people (usually an adult and one or more children) on a single form. When you look through the waiver data, you will have one or more Participants listed. Be sure to look through these fields so that you display all the relevant data to your users.

Web Hooks

To setup a web hook, log into your dashboard and go to Settings >> API. Then select the web hooks tab. Click on New Web Hook. Name your web hook something descriptive and enter a URL. This is the address that will the data will be submitted to. You can then select which triggers are enabled. The web hook will fire when any of your selected triggers occur. Note that the skinny payloads option makes it so the ID of the related item will be sent. You must then use an API call (see below) to fetch the related data for that ID. This requires a little more setup, but is generally considered to be a more secure way to set things up.

To see a sample payload from a web hook, scroll to the bottom of this page.  

 

Developer tip for testing web hooks

When testing web hooks, it os often convenient to be able to get a look at the data that you will be receiving. A great resource to do this is: https://webhook.site  This service will provide you with a URL you can configure as a web hook. Enter that into WaiverFile and submit a test waiver and you will be able to see the data that is sent. 

 

API

To collect data via the API, view our API reference here:

https://api.waiverfile.com/swagger/ui/index

The key methods you will want to look at are GetWaiversByReferenceID and GetWaiver. 

GetWaiversByReferenceID accepts several parameters. First are API key and site ID (all calls ask for these keys). Then you can specify refID1, refID2, refID3 and refIDAny. The first 3 you can specify and it will look specifically at the first, second and third ID’s that were provided, so you can use those for specific things. Alternatively, you can leave those blank and specify the refIDAny which will look for the provided value in any of the 3 refID fields.

GetWaiver accepts the API key, siteID, and a waiverID. If you are using skinny payloads, you will just get the WaiverID. Pass this value to the GetWaiver method to get a complete block of data for that single waiver (along with one or more participants). 

  

Sample Waiver Web Hook Payload

{
  "Particpants": [
    {
      "WaiverParticipantID": "11cb2001-5714-4a0a-a010-96cac40d8970",
      "WaiverID": "5ff27e8c-411c-4ceb-b1bc-99e18f3eaec2",
      "ParticipantName": "Smith",
      "ParticipantNameFirst": "John",
      "DOB": "1/1/1753",
      "IsCheckedIn": false,
      "ValuesXml": "",
      "IsSignee": true
    }
  ],
  "Images": [],
  "Attachments": [],
  "WaiverEvent": {
    "WPObjectStatus": 1,
    "Waivers": [],
    "WaiverForms": [],
    "ManagerIDs": [],
    "ExtraParticipants": null,
    "NumSignedWaivers": 0,
    "Category": null,
    "TimesAdjustedForLocalRendering": false,
    "Settings": {
      "MaxParticipants": -1,
      "Location": "",
      "SigningCutoff": "9999-12-31T00:00:00",
      "Description": ""
    },
    "WaiverEventID": "00000000-0000-0000-0000-000000000000",
    "SiteID": "00000000-0000-0000-0000-000000000000",
    "Name": "",
    "DateStart": "1755-01-01T00:00:00",
    "DateEnd": "1755-01-01T00:00:00",
    "IsDeleted": true,
    "NumWaiverForms": -1,
    "SpotsRemaining": -1,
    "MaxParts": -1,
    "Headcount": -1,
    "ManagerEmailList": null,
    "LastModified": "2024-02-14T14:14:38.3290554Z",
    "Created": "2024-02-14T14:14:38.3290554Z",
    "IsAllDay": false,
    "WaiverEventRecurringID": "00000000-0000-0000-0000-000000000000",
    "CategoryID": "00000000-0000-0000-0000-000000000000",
    "TimeLabel": "12/31/1754 7:00 PM",
    "TimeLabelLine1": "",
    "TimeLabelLine2": "",
    "SettingsXml": "",
    "WorkflowIDs": [],
    "WaiverEventFormIDs": []
  },
  "WaiverFormInstanceObj": {
    "WPObjectStatus": 1,
    "Labels": [],
    "FieldsDoc": null,
    "ParticipantFieldsDoc": null,
    "ID": "a6eb9188-d32b-4a9b-9be8-0e58a9d4bc45",
    "WaiverFormID": "3198aab2-903e-429d-bbb9-8743306843f7",
    "DateSaved": "2023-07-20T10:49:26.71",
    "IsCurrent": true,
    "AgreementText": "A very simple waiver for testing",
    "FieldsXml": "<data><fields><label>Number test</label><field_type>number</field_type><required>true</required><field_options><integer_only>true</integer_only></field_options><cid>c6</cid></fields></data>",
    "ParticipantFieldsXml": "",
    "Options": "<Settings><setting key=\"SIGNING_OPTION_ADULT\" value=\"true\" /><setting key=\"SIGNING_OPTION_CHILDREN\" value=\"false\" /><setting key=\"SIGNING_OPTION_ADULT_CHILDREN\" value=\"false\" /><setting key=\"SMS_FORM_INCLUDE_MOBILE_NUM_ENTRY\" value=\"false\" /><setting key=\"SMS_FORM_REQUIRE_MOBILE_NUM_ENTRY\" value=\"false\" /><setting key=\"OPT_IN_SELECTION\" value=\"ASK_DEFAULT_CHECKED\" /><setting key=\"EMAIL_CONFIRM_ENABLED\" value=\"false\" /><setting key=\"EMAIL_VERIFY_ENABLED\" value=\"true\" /></Settings>",
    "LabelData": "",
    "SavedBy": "bd79e9e1-f82d-433e-b091-4b01426c2fd2"
  },
  "WaiverText": {
    "WPObjectStatus": 1,
    "Labels": [],
    "FieldsDoc": null,
    "ParticipantFieldsDoc": null,
    "ID": "a6eb9188-d32b-4a9b-9be8-0e58a9d4bc45",
    "WaiverFormID": "3198aab2-903e-429d-bbb9-8743306843f7",
    "DateSaved": "2023-07-20T10:49:26.71",
    "IsCurrent": true,
    "AgreementText": "A very simple waiver for testing",
    "FieldsXml": "<data><fields><label>Number test</label><field_type>number</field_type><required>true</required><field_options><integer_only>true</integer_only></field_options><cid>c6</cid></fields></data>",
    "ParticipantFieldsXml": "",
    "Options": "<Settings><setting key=\"SIGNING_OPTION_ADULT\" value=\"true\" /><setting key=\"SIGNING_OPTION_CHILDREN\" value=\"false\" /><setting key=\"SIGNING_OPTION_ADULT_CHILDREN\" value=\"false\" /><setting key=\"SMS_FORM_INCLUDE_MOBILE_NUM_ENTRY\" value=\"false\" /><setting key=\"SMS_FORM_REQUIRE_MOBILE_NUM_ENTRY\" value=\"false\" /><setting key=\"OPT_IN_SELECTION\" value=\"ASK_DEFAULT_CHECKED\" /><setting key=\"EMAIL_CONFIRM_ENABLED\" value=\"false\" /><setting key=\"EMAIL_VERIFY_ENABLED\" value=\"true\" /></Settings>",
    "LabelData": "",
    "SavedBy": "bd79e9e1-f82d-433e-b091-4b01426c2fd2"
  },
  "WaiverForm": {
    "CurrentInstance": null,
    "WorkflowStepFormRef": null,
    "WPObjectStatus": 1,
    "ID": "3198aab2-903e-429d-bbb9-8743306843f7",
    "SiteID": "00000000-0000-0000-0000-000000000000",
    "Name": "Simple Waiver",
    "Questions": "{\"fields\":[{\"label\":\"Number test\",\"field_type\":\"number\",\"required\":true,\"field_options\":{\"integer_only\":true},\"cid\":\"c6\"}]}",
    "NumParticipantsPerForm": 0,
    "MinAge": 18,
    "AgreementLabelText": "",
    "FieldInclude_Email": true,
    "FieldInclude_Address": false,
    "FieldInclude_Phone": false,
    "FieldInclude_DOB": false,
    "FieldRequire_Email": true,
    "FieldRequire_Address": false,
    "FieldRequire_Phone": false,
    "FieldRequire_DOB": false,
    "MinAgeParticipant": 0,
    "FieldInclude_DOB_Participant": false,
    "FieldRequire_DOB_Participant": false,
    "GeneralAdm_show": true,
    "DashIconColor": "",
    "Created": "2023-05-08T17:30:01.067",
    "LastModified": "2023-05-08T17:30:01.067",
    "LastModifiedBy": "00000000-0000-0000-0000-000000000000",
    "Status": 0,
    "LeadInText": "",
    "IncludeSignature": true,
    "AllowSigningForSomeoneElse": true,
    "MaxAgeParticipant": 17,
    "Options": ""
  },
  "Device": null,
  "OriginalDataObj": null,
  "Signatures": null,
  "WPObjectStatus": 1,
  "ExportFileRelativePath": null,
  "Expired": false,
  "EncryptedDataFetched": false,
  "WPEList": null,
  "EncryptedQRCode": "https://wfl.ink?1234567890",
  "EmailRequested": false,
  "EmailTypeTwiceVerified": false,
  "WaiverID": "5ff27e8c-411c-4ceb-b1bc-99e18f3eaec2",
  "SiteID": "00000000-0000-0000-0000-000000000000",
  "WaiverEventID": "00000000-0000-0000-0000-000000000000",
  "WaiverTextID": "00000000-0000-0000-0000-000000000000",
  "WaiverFormInstanceID": "a6eb9188-d32b-4a9b-9be8-0e58a9d4bc45",
  "DateSigned": "2024-02-14T14:14:37.467",
  "Address": "",
  "Address2": "",
  "City": "",
  "State": "",
  "Zip": "",
  "Phone": "",
  "DOB": "1/1/1753",
  "Email": "jsmith@waiverfile.com",
  "SignedName": "Smith",
  "SignedNameFirst": "John",
  "WPUserID": "bd79e9e1-f82d-433e-b091-4b01426c2fd2",
  "WPSMSMobileNumID": "00000000-0000-0000-0000-000000000000",
  "ClientIP": "192.168.0.1",
  "FieldsXml": "<data><fields><label>Number test</label><field_type>number</field_type><required>true</required><field_options><integer_only>true</integer_only></field_options><cid>c6</cid></fields></data>",
  "ValuesXml": "<data><field cid=\"c6\"><label>Number test</label><value>123</value></field></data>",
  "Age": 0,
  "DateAttending": "1753-01-01T00:00:00",
  "WaiverFormID": "3198aab2-903e-429d-bbb9-8743306843f7",
  "HasSignature": true,
  "OptIn": true,
  "ClientType": 0,
  "deviceID": -1,
  "WaiverIsDeleted": false,
  "OriginalData": null,
  "OriginalDataVerified": false,
  "WorkflowStepID": "00000000-0000-0000-0000-000000000000",
  "WorkflowSessionID": "00000000-0000-0000-0000-000000000000",
  "IsWorkflowSessionPrimary": false,
  "ReferenceID1": null,
  "ReferenceID2": null,
  "ReferenceID3": null,
  "CustomFields": { "Number test": "123" }
}
Looking for more help? Try our FAQ or Contact Us