Subscriptions
To start receiving webhook messages from EventsAir, you will need to create a subscription. The GraphQL API provides mutations and queries to create, update, delete, and list webhook subscriptions.
A webhook subscription must:
- include a unique endpoint URL - you cannot re-use the same URL in another subscription
- include at least one event type
- include a description
A webhook subscription may optionally include one or more filters.
By default, there is a limit of 10 webhook subscriptions per customer.
Creating a webhook subscription
The createWebhookSubscription
mutation allows you to create a webhook subscription by specifying the endpoint URL, a description and one or more event types. For example:
mutation CreateWebhookSubscriptionExample {
createWebhookSubscription(
input: {
url: "https://www.example.com/webhooks"
webhookEventTypeNames: ["Event.Contact.Created", "Event.Contact.Updated"]
description: "Example webhook subscription"
}
) {
webhookSubscription {
id
}
}
}
This operation will create a webhook subscription that sends messages to https://www.example.com/webhooks
for the Event.Contact.Created
and Event.Contact.Updated
event types and return the identifier of the newly created subscription.
Updating a webhook subscription
The updateWebhookSubscription
mutation allows you to update a webhook subscription by specifying the subscription identifier and the new values for the subscription. For example:
mutation UpdateWebhookSubscriptionExample {
updateWebhookSubscription(
input: {
id: "<string>"
url: "https://www.example.com/webhooks"
webhookEventTypeNames: ["Event.Contact.Created", "Event.Contact.Updated"]
description: "Updated webhook subscription"
}
) {
webhookSubscription {
id
}
}
}
Deleting a webhook subscription
The deleteWebhookSubscription
mutation allows you to delete a webhook subscription by specifying its subscription identifier. For example:
mutation DeleteWebhookSubscriptionExample {
deleteWebhookSubscription(input: { id: "<string>" }) {
success
}
}
This operation will delete the webhook subscription with the specified identifier and returns a Boolean indicating whether the operation was successful.
Listing webhook subscriptions
The webhookSubscriptions
query allows you to list all webhook subscriptions. For example:
query ListWebhookSubscriptionsExample {
webhookSubscriptions {
edges {
node {
id
url
description
webhookEventTypeNames
isDisabled
filters {
type
identifier
}
createdAt
createdBy
lastModifiedAt
lastModifiedBy
}
}
}
}
Disabling a webhook subscription
In some cases, you may wish to disable a webhook subscription without deleting it. This stops it from receiving any notifications of activities in EventsAir. The disableWebhookSubscription
mutation allows you to disable a webhook subscription by specifying its subscription identifier. For example:
mutation DisableWebhookSubscriptionExample {
disableWebhookSubscription(input: { id: "<string>" }) {
id
isDisabled
}
}
Enabling a webhook subscription
If you have disabled a webhook subscription and wish to re-enable it, you can use the enableWebhookSubscription
mutation. For example:
mutation EnableWebhookSubscriptionExample {
enableWebhookSubscription(input: { id: "<string>" }) {
id
isDisabled
}
}
Retrieving the signing secret for a webhook subscription
To verify the signature of a webhook message, you need the signing secret associated with the webhook subscription. You can use the webhookSubscriptionSigningSecret
query to retrieve the signing secret for a webhook subscription by specifying the webhook subscription identifier. For example:
query WebhookSubscriptionSigningSecretExample {
webhookSubscriptionSecret(id: "<string>") {
secret
}
}
See verifying the message signature for further details on how to use the signing secret to verify incoming webhook messages.
Webhook subscription filters
In some situations, for example if your company manages events for a variety of clients, you may want to filter the messages you receive to only those that are relevant to a specific event or contact store in EventsAir. You can create a webhook subscription with filters to achieve this.
The following GraphQL mutation creates a webhook subscription with two filters, one for a specific event and one for a specific contact store:
mutation CreateWebhookSubscriptionWithFiltersExample {
createWebhookSubscription(
input: {
url: "https://www.example.com/webhooks"
webhookEventTypeNames: ["Event.Contact.Created"]
description: "Example webhook subscription with filters"
filters: [{ identifier: "<guid>", type: EVENT }, { identifier: "<guid>", type: CE_CONTACT_STORE }]
}
) {
webhookSubscription {
id
}
}
}
There is a limit of 10 filters per subscription.