Using webhooks, you can notify an external service when selected changes occur in your Wild Apricot account. For example, you could set up a webhook to notify a service when a new event is added to your Wild Apricot site, making it possible to automatically synchronize your Wild Apricot events with Google calendars or Outlook calendars.

Without webhooks, external systems have to make API requests over and over to check whether data has changed since the last API call.

As part of your webhook settings, you can choose which kinds of changes will trigger the sending of a notification.

Working with webhooks requires a certain degree of technical knowledge. If you need help setting up a webhook, you can engage the services of one of our technical partners.

Adding a webhook

To add a webhook to your Wild Apricot account, follow these steps:

  1. Hover over the Settings menu and select the Integration option.
  2. Within the list of integration options, click Webhooks.
  3. On the Webhooks screen, click Add webhook.  
  4. On the screen that appears, enter a title for your webhook, and paste the URL of the external service to be notified in the URL field.
    The external service can be a ready-to-use service provided by third-parties such as Google, Slack, Integromat, or Zapier, or a custom service.
  5. Within the Authorization settings, you specify the type of authorization required for the external service, and enter any required authorization credentials. For more information, see Authorization settings below.
  6. Within the Notification type(s) section, choose the types of changes that will trigger notifications. For more information, see Notification types below.
  7. To test your webhook, click the Test webhook button within the Test your webhook section. Once the test is complete, the test call status will be displayed. You can then click the View details link to view the test call request and response.
  8. Once you are ready to enable your webhook, click the Allow webhook toggle so that it appears blue.  
  9. Click the Save button to save your changes and enable your webhook.

Authorization settings

Within the Authorization settings section, you choose the type of authorization required for the external service, and enter any required authorization credentials. 

The following authorization types are supported.

None

No authorization credentials will be included in the call request.

Secret token (query)

A token name and token value will be included in the call request.

Basic

The user name and password you specify will be encoded within a basic authorization heading.

Notification types

Within the Notification type(s) section, you choose the kinds of changes that will trigger notifications to be sent to the external service.

The table below lists the changes that will trigger notifications for each notification type.

Type
Triggers
Contact
  • Any change to any tab of the contact details for any contact
  • Any change to common field settings
Membership
  • Any change to the membership settings for any member
  • Any change to membership field settings
  • Changes to membership level settings will not trigger notification
EventAny change to event settings except:
  • Changes to registration form
  • Changes to registration types
  • Changes to event email settings or templates
Event registrationAny change to event registration details for any registrant, including:
  • New registration
  • Canceled registration
  • RSVP response
InvoiceAny change to any invoice, including:
  • New invoice
  • Modified invoice
  • Deleted invoice
  • Voided invoice
PaymentAny change to any payment, including:
  • New payment
  • Adjusted payment
  • Canceled payment
RefundAny change to any refund, including:
  • New refund
  • Adjusted refund
  • Canceled refund

The table below shows the format of the resulting JSON message and a sample message for each notification type.

Type
Parameters
Example
ContactContact.Id
{
"AccountId":183112,
"MessageType":"Contact",
"Parameters": 
 {"Contact.Id":3427181}
}
MembershipAction:
[Enabled | Disabled |
StatusChanged | RenewalDateChanged |
LevelChanged ],
Contact.Id,
Membership.LevelId,
Membership.Status

{
 "AccountId":183112,
 "MessageType":"Membership",
 "Parameters": 
  {
   "Action":"Enabled",
   "Contact.Id":3427181,
   "Membership.LevelId": 123
  }
}
Event

Event.Id

Action: [Changed | Created | Deleted]


{
 "AccountId":183112,
 "MessageType":"Event",
 "Parameters": 
 {
  "Action":"Changed", 
  "Event.Id": 12345
 }
}
Event registrationAction: [Changed | Created | Deleted],

EventToRegister.Id,
RegistrationType.Id,
Registration.Id,
Registration.Status (absent for Action=Deleted)


{
 "AccountId":183112,
 "MessageType":
 "EventRegistration",
 "Parameters":
 {    
  "Action":"Created",
  "EventToRegister.Id":
  "3141837",
  "RegistrationType.Id":
  "4827912",
  "Registration.Id":
  "26119327"
 }
}
InvoiceDocument.Id
Action: [Changed | Created | Deleted]
{
 "AccountId":183112,
 "MessageType":"Invoice",
 "Parameters":
  {
   "Document.Id":50022474,
   "Action":"Created"
  }
}
PaymentDocument.Id
Action: [Changed | Created | Deleted]
{
 "AccountId":183112,
 "MessageType":"Payment",
 "Parameters":
  {
   "Document.Id":65785678,
   "Action":"Created"
  }
}
RefundDocument.Id
Action: [Changed | Created | Deleted]
{
 "AccountId":183112,
 "MessageType":"Refund",
 "Parameters":
  {
   "Document.Id":123456778,
   "Action":"Created"
  }
}

Testing your webhook

To test your webhook setup, before or after enabling it, click the Test webhook button within the Test your webhook section. 

Once the test is complete, the test call status will be displayed. Possible values are OK or Fail. 

You can then click the View details link to view the test call request and response. 

Status and Log

Within the Status section, you can enable or disable your webhook, and download the log of the last webhook call. 

The log will include both the request and the response of the last 1,000 calls.

Deleting a webhook

To delete an existing webhook, open it for editing, then click the Delete button at the bottom right corner of the screen.