Skip to main content

Outbound Webhook

Set up an Outbound Webhook in AEvent to send fully formatted registrant and webinar data to any endpoint, on registration or as a targeted timeline action.

Pairing AEvent with an Outbound-Webhook can get you the data you want, where and when you want, and gives you total control over HOW that happens.

You can set up Outbound Webhooks to trigger both On-Registration and a timeline action (say all Cart-Abandoners).

It's easy to set these up; every piece of data you could want is formatted and sent in the outbound webhook call.

Timeline Actions:

Adding a new Webhook as an AEvent Integration

To set up a Webhook, add it as an Integration. To do that, navigate to Integrations within AEvent, click Add Integration, and then select Webhook.

Then, name your integration as you see fit and click 'Add.' (With Webhooks, we recommend an easy identifier, as you may end up adding several Webhook integrations).

Now define the URL Endpoint of your Webhook, as well as Type, Format, Encryption and Structure.

(In general, POST, JSON, and Encryption OFF work best)


Need to include a dynamic value IN the webhook endpoint? IE Name, Email, et? You can use our personalization menu to dynamically define that value:



Our webhooks also support custom payloads, so you can design the outbound webhook call, format it, and formulate it as your endpoint is expecting to receive.

TO enable use, slide Custom Payload to On.

(NOTE: Custom Payloads require advanced developer knowledge and aren't something we can directly support when troubleshooting.)

Once your new Webhook integration has been successfully added, you will see its Connected state, and you can click on 'Test.'

A successful connection will yield a positive test result AND send a payload test packet to that endpoint. Congratulations, your Webhook is now connected to AEvent and can be set up within a campaign!

Configuring your Webhook Integration within a Campaign

In order to utilize your Webhook within AEvent, you need to activate it within the campaign you are working with. To do this, open the campaign you are working on.

Then, select Integrations, set your Webhook as Active, and click on the cogwheel.

If you do not (by default), this will send an outbound webhook with each new registration. If you want to use this within the campaign as Audience qualification, you need to disable this from occurring on registration.

And that's it. All new registrations to this campaign will make an outbound call to this Webhook Integration if set as active.

Creating a Timeline Action to Send a Webhook Action.

Within our timeline builder, you can set a Webhook action to occur at any point before, during, or after your event.

Our best practice recommendation would be to utilize Webhook timeline actions for precise audience targeting after your event.

It could be something as simple as an outbound Webhook for all attendees or non-attendees of the event. But you could go several layers deeper utilizing our Audience Segmentation options. In this tutorial, we will build a timeline action targeting Cart Abandoners.

(For a tutorial on how to setup a Cart Abandoner Audience, CLICK HERE)

Per the example above, at 8 AM the day after the Event a outbound Webhook action would trigger for anyone that was a Cart Abandoner from our event.

In this instance, I have elected to send the information Per Registrant. By selecting this, the system will send an individual Webhook call per registrant. The information would have been sent as a single payload packet if I hadn't selected this. (Generally, you want to check this unless you're a super-whiz)

New: Dynamic Suffix for Webhook URLs

Instead of creating multiple Webhook integrations with slightly different full URLs, you can now create one integration with the shared base of your URL, then dynamically append the variable portion at the action level.

In the Integration setup, enter just the shared/static portion of your URL.


Then, in the individual Timeline Action, append the unique value (such as a slug, segment ID, or token) to the end of the base URL.


Webhook Integration set up with the shared base URL


Dynamic portion appended within the Timeline Action

This reduces clutter in your Integrations list and gives you more flexibility without duplicating effort.

After clicking Create, this action is now visible on the timeline.

Advanced customization

Once you have the basics working, a Webhook can do a lot more. Everything in this section is optional. If POST, JSON, and Encryption OFF are already sending you the data you need, you can skip it.

Two places to configure a webhook

A Webhook is configured in two separate spots, and it helps to know which one owns what.

The integration setup is where the heavy configuration lives: the endpoint URL, the request method (Type), the format, encryption, custom headers, and the custom payload. You set this up once, and every campaign that uses the integration reuses it.

The timeline action is much lighter. When you drop a Webhook action onto a timeline, the only settings you configure there are the Slug (an optional value appended to the end of the base URL) and Send per Registrant. Everything else is inherited from the integration setup.

Here is the integration setup modal, where the advanced options below all live:

Custom headers (and authentication)

If your endpoint needs an authentication token or any other custom header, turn Custom Headers On, then click Manage headers. Each header is a Name and a Value pair. Click Create to add it, then Save.

A common use is authentication: set the header name to Authorization with a value of Bearer <your-token>, or use X-API-Key with your key as the value.

A couple of rules to keep in mind. A header name cannot be Content-Type (that is controlled by the Formatting option instead), and a header name cannot contain a colon.

One honest limit: header values are sent exactly as you type them. Merge tokens like {{!subscriber-email!}} do not resolve inside a header value, so a header is the right place for a fixed secret or key, not for per-registrant data.

Custom payload and token reference

By default, AEvent sends a full, pre-formatted payload for you. If your endpoint expects a specific shape, turn Custom Payload On and click Manage payload to design it yourself.

You can edit the payload two ways. The Form view gives you a Name and Value table where you add one field at a time with Add New:

Or click Edit JSON to write the raw JSON directly. Use the Personalize picker (Subscriber, Webinar, and Replay tabs) to drop tokens in, and Edit Form to switch back:

The payload is templated per registrant. Each value can be a {{!namespace-field!}} token, and you can add an optional fallback with a pipe, like {{!subscriber-firstName|there!}}. Here is a clean reference of the tokens you can use:

Subscriber: {{!subscriber-uuid!}}, {{!subscriber-firstName!}}, {{!subscriber-lastName!}}, {{!subscriber-email!}}, {{!subscriber-phone!}}, {{!subscriber-ipAddress!}}, {{!subscriber-registrationDate!}}, {{!subscriber-joinURL!}}, {{!subscriber-replayURL!}}, {{!subscriber-platformURL!}}, {{!subscriber-country!}}, {{!subscriber-timezone!}}

Webinar: {{!webinar-webinarID!}}, {{!webinar-timeZone!}}, {{!webinar-timeStamp!}}, {{!webinar-dayofweek!}}, {{!webinar-day!}}, {{!webinar-month!}}, {{!webinar-year!}}, {{!webinar-usertime!}}, {{!webinar-continental-time!}}, {{!webinar-startsIn!}}, {{!webinar-esttime!}}, {{!webinar-psttime!}}, {{!webinar-webinarTimeline!}}, {{!webinar-timelineName!}}

Replay: the same time parts as Webinar, plus {{!replay-expiresIn!}}

Calendar: {{!add_to_google_calendar!}}, {{!add_to_apple_calendar!}}

Custom fields: {{!subscriber-customFields!}}

Behavior note: setting a custom payload forces per-registrant delivery. When a custom payload is present, the Send per Registrant checkbox disappears from the timeline action and is always on, because the payload is rendered fresh for each registrant.

Formats

When the Type is POST, you can choose how the body is encoded. JSON sends application/json, STANDARD sends application/x-www-form-urlencoded, and MULTIPART sends multipart/form-data. Formatting, Encryption, and Custom Payload only appear once Type is set to POST.

Encryption

Encryption can be On or Off. When it is On, the entire body is encrypted with a shared secret that your receiving endpoint has to decrypt on its side. Leave Encryption Off unless your endpoint is specifically built to decrypt it, otherwise the receiver will get an unreadable body.

Bulk vs. per-registrant delivery

With no custom payload and the Send per Registrant box unchecked, AEvent sends one call, and the subscriber field is an array containing every matching registrant. Check Send per Registrant (or use a custom payload) and AEvent instead sends one call per registrant, with subscriber as a single object each time. A custom payload is always per-registrant.

GET mode

If you set the Type to GET instead of POST, the data is appended to the URL as query parameters rather than sent in a body. Because there is no body, an encrypted payload cannot be used with GET.

Good to know before you build:

Only GET and POST are supported as request types.

Attendance is not a field in the payload. To treat attendees and non-attendees differently, build two separate Webhook actions with different audiences rather than looking for an attended flag.

A Webhook that fails is only retried when the endpoint responds with a rate-limit (429). Each call uses an 8-second connect timeout and a 15-second total timeout.

How to remove your Webhook from AEvent

If you want to remove your Webhook integration from AEvent, navigate to Integrations, locate your Webhook integration, and click on the trashcan icon.

You will then be prompted to confirm the deletion.

(NOTE: Removing this integration will immediately affect its use with any campaigns that it is active in.)

If you are experiencing issues with this integration but do not desire to REMOVE it, we recommend reconnecting it instead. This will allow its configuration to

continue as set within your campaigns.

Once you confirm removal, the integration within AEvent no longer exists.

Layout of our Webhook payload (Per Registrant, customfields on the end)

{
"subscriber": {
"uuid": "registrant uid",
"firstname": "First Name",
"lastname": "Last Name",
"email": "Email",
"phone": "Phone Number",
"ipaddress": "IP Address",
"registrationdatetime": "Registration Date Time",
"joinurl": "https://joinevent.link/tenantid/registrantuid",
"customGroups": "Attendee, GroupName",
"timezone": "Timezone",
"country": "Country"
},
"webinar": {
"webinarID": "Gotowebinar True Webinar ID",
"timeZone": "America/Denver",
"timeStamp": "Webinar Start time",
"dayofweek": "Day of the week",
"dayofmonth": "Day and Month",
"day": "Day",
"month": "Month",
"year": "Year",
"esttime": "Time in Eastern Timezone",
"pasttime": "Time in PST Timezone"
},
"replay": {
"webinarID": "Gotowebinar True Webinar ID",
"timeZone": "America/Denver",
"timeStamp": "Webinar Start time",
"dayofweek": "Day of the week",
"dayofmonth": "Day and Month",
"day": "Day",
"month": "Month",
"year": "Year",
"esttime": "Time in Eastern Timezone",
"pasttime": "Time in PST Timezone",
"replayURL": "Replay URL"
},
"customfields": {}
}
Did this answer your question?