Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Anchor
top
top

By setting up a web hook, TimeTap can send you notifications anytime your clients or staff members book an appointment for your business.


Our Notification service consists of a 3-step process:

  1.  A client or staff member books an appointment
  2.  TimeTap posts the notification with the appointment information as a JSON object to your webserver endpoint
  3.  Your webserver application processes the JSON object

Requirements:

  • A webserver running an endpoint application capable of receiving a POST request

In this guide, we'll cover the steps to:



Anchor
webserver
webserver

Webserver Requirements

To receive a notification from TimeTap, you'll need to set up an endpoint to handle a POST request from our system. The post request will contain a JSON object (example shown below) with appointment data.



Return to Top


Anchor
connect
connect

Example Appointment

JSON

Object

When you're endpoint is setup, simply contact us to provide the URL, and we'll set up the POST.

Here's an abbreviated example of what the Appointment Notification JSON object looks like:

Code Block
languagexml
titleAppointment JSON Object
linenumberstrue
	{
		"calendarid":10390617,
		"businessId":20398,
		"startTime":800,
		"endTime":845,
		"clientStartTime":800,
		"clientEndTime":845,
		"reason":{
				"professional":{"reasonId":96439,
				"businessId":20398,
				"visitMinutes":45,
				"reasonDesc":"Service3"
		},
		"client":{
				"clientId":2530974,
				"firstName":"Jon",
				"lastName":"Snow",
				"emailAddress":"jsnow@castleblack.mil",
				"city":"Victoria",
				"notes":"Jon would like a notification before his appointment.",
		},
		"staff":{
			"professionalId" : 42441,
			"businessId":20398,
			"userName":"DrJones2",
			"email": "djones2@marshallcollege.edu"
			"timeZoneCode":{
				"timeZoneId":78,
				"timeZoneCode":"America/New_York",
				"timeZoneDesc":"America/New_York",
			},
			"location":{
				"locationId":29945,
				"locationName":"MyOffice",
				"businessId":20398,
				"locationType":"Office"
			},
		"fields": [
      	{
        	"required" : false,
        	"reasonserviceIds":{ : [
          		107292
        	],
        	"reasonIduserDefinedField" :96439 false,
        	"dataType" : "AREA",
        	"active" : true,
        	"code" : "UDF",
        	"visibleOnScheduler" : true,
        	"validationRegex" : null,
        	"sortOrder" : 21,
        	"businessId" :20398,
				"visitMinutes":45,
				"reasonDesc":"Service3"
			},
			"client":{
				"clientId":2530974,
				"firstName":"Jon",
				"lastName":"Snow",
				"emailAddress":"jsnow@castleblack.mil",
				"city":"Victoria",
				"notes":"Jon would like a notification before his appointment.",
			}
		}
	}
Return To Top
 23144,
        	"hint" : null,
        	"filterByService" : true,
        	"oldFieldIds" : null,
        	"createdUser" : "mpbtest138",
        	"labelTag" : "%CUSTOM_FIELD_107740_LABEL%",
        	"modifiedDate" : 1488575155000,
        	"tagName" : null,
        	"modifiedUser" : "MPBTEST138",
        	"label" : "Comments",
        	"createdDate" : 1488394066000,
        	"value" : "These are comments ",
        	"extendedValue" : "These are comments ",
        	"validationError" : null,
        	"fieldValues" : null,
        	"visible" : true,
        	"schedulerPreferenceFieldDefnId" : 107740,
        	"mode" : "APPT",
        	"valueTag" : "%CUSTOM_FIELD_107740%"
      	},
      	{
        	"required" : null,
        	"serviceIds" : null,
        	"userDefinedField" : true,
        	"dataType" : "TXT",
        	"active" : true,
        	"code" : "UDF",
        	"visibleOnScheduler" : true,
        	"validationRegex" : null,
        	"sortOrder" : 22,
        	"businessId" : 23144,
        	"hint" : null,
        	"filterByService" : false,
        	"oldFieldIds" : null,
        	"createdUser" : "MPBTEST138",
        	"labelTag" : "%CUSTOM_FIELD_108594_LABEL%",
        	"modifiedDate" : 1488575322000,
        	"tagName" : null,
        	"modifiedUser" : "MPBTEST138",
        	"label" : "My Custom Field",
        	"createdDate" : 1488575322000,
        	"value" : "Custom field value",
        	"extendedValue" : "Custom field value",
        	"validationError" : null,
        	"fieldValues" : null,
        	"visible" : true,
        	"schedulerPreferenceFieldDefnId" : 108594,
        	"mode" : "APPT",
        	"valueTag" : "%CUSTOM_FIELD_108594%"
      	}
    	],
	}

Object Values
Anchor
objectValues
objectValues

Appointment objects have several top-level properties, whose types can be viewed here: Appointment Object Values

In addition, appointment objects also have nested child objects for Reasons (Service or Class), Client, Staff, Location, and Custom Fields.


Reason Object

Reason object value types can be found here: Reason Object Value Types

Code Block
"reason" : {
      "modifiedUser" : "MPBTEST138",
      "internalDisplayName" : "Service 1",
      "serviceLocations" : null,
      "reasonId" : 107292,
      "apptHrMin" : null,
      "emailInstructions2" : null,
      "taxable" : false,
      "professionalServiceList" : null,
      "businessId" : 23144,
      "rescheduleType" : null,
      "maxWaitListPerClass" : null,
      "visitMinutes" : 60,
      "customWorkSchedule" : 0,
      "reasonType" : "SERVICE",
      "numberSessions" : null,
      "bufferBefore" : null,
      "personal" : false,
      "privateUrl" : null,
      "embedCode" : null,
      "screeningQuestion" : null,
      "emailInstructions" : null,
      "currencySymbol" : null,
      "apptDayMax" : null,
      "professionalId" : null,
      "durationList" : null,
      "quotaType" : null,
      "allowOnline" : true,
      "allowWaitList" : false,
      "active" : true,
      "price" : null,
      "color" : null,
      "discountedPrice" : null,
      "sortWeight" : 0,
      "customFieldForm" : null,
      "bufferAfter" : null,
      "internalName" : null,
      "quotaFilled" : null,
      "depositAmount" : null,
      "allowPrePay" : false,
      "reasonDetail" : null,
      "quota" : null,
      "reasonDesc" : "Service 1"
    }