Webhook Payload Reference
Liferay Data Platform 2026.Q2+
This reference describes the webhook payload fields Liferay Data Platform (LDP) accepts from Demandbase, HubSpot, and Marketo. Each source identifies the profile to update with a required field. Demandbase sends account data from its own schema, while HubSpot and Marketo send custom events you define.
Endpoints and Delivery
Each webhook data source generates its own endpoint URL when you add it in LDP. Copy the value LDP shows rather than building the URL yourself. Endpoints accept POST requests with a Content-Type of application/json, authenticated with the LDP-provided token in an Authorization: Bearer <token> header.
To generate the endpoint URL and token, follow the setup steps for Demandbase, HubSpot, or Marketo.
| Data Source | Endpoint Path |
|---|---|
| Demandbase | /api/demandbase_accounts |
| HubSpot | /api/hubspot_webhooks |
| Marketo Event Stream | /api/marketo_webhooks |
LDP forwards the payload to its ingestion service without inspecting the response, and returns 200 OK for every request it accepts. A successful response confirms delivery, not ingestion, so validate your payload before sending it. To confirm that events are landing, check the Activities tab for an individual or account.
Demandbase Account Fields
Demandbase sends account and firmographic data to LDP via webhook, and LDP maps it to unified account profiles. Demandbase builds the payload from its own account schema, which you choose when you set up the integration. For the full set of account, firmographic, and calculated fields Demandbase can send, see the field documentation in your Demandbase account.
| Field | API Name | Purpose |
|---|---|---|
| Domain | domain___e | Matches incoming account data to a unified account profile in LDP. |
Include domain___e in your payload. LDP uses the domain to match Demandbase account data to the correct unified account profile.
HubSpot and Marketo Event Fields
LDP treats HubSpot and Marketo events as custom events, so there is no predefined event schema. You define the JSON payload entirely on the sending side, in a HubSpot workflow webhook action or a Marketo Event Stream webhook, and LDP ingests whatever you send as long as the required fields are present. Both sources use the same payload contract.
Required Fields
Send both fields at the top level of the request body.
| Field | Type | Description |
|---|---|---|
email | String | Email address of the contact or lead. LDP uses this to match the event to an existing unified individual profile. |
eventName | String | Name of the event. Use a consistent, descriptive identifier (for example, emailClicked, formSubmit, formFillOut, or webinarAttend). |
Optional Fields
| Field | Type | Description |
|---|---|---|
eventDate | String | Date and time the event occurred. No format is enforced, and LDP stores the value as a string. |
Additional Properties
Every other top-level key you send becomes an additional property on the stored event. There’s no nested object to build: send extra context as flat top-level keys alongside the fields above (for example, campaign name, asset title, or form ID), and LDP groups them under properties when it displays the event.
Example Payload
{
"email": "contact@example.com",
"eventName": "emailClicked",
"emailTitle": "Marketing Opportunity"
}
Event in the Activities Tab
The Activities tab lays the event out differently from the request body you send. It uses email for identity matching, shows your event name as eventId, groups your additional properties under properties, and labels the source with applicationId. An eventDate field appears when the event carries one.
LDP sets applicationId from the data source that received the event:
| Data Source | applicationId |
|---|---|
| HubSpot | HubSpot |
| Marketo Event Stream | Marketo |
A HubSpot event looks like this in the tab:
{
"applicationId": "HubSpot",
"eventDate": "Wed Jun 10 12:01:33 GMT 2026",
"eventId": "emailClicked",
"properties": {
"emailTitle": "Marketing Opportunity"
}
}
Use this shape to interpret an event in the Activities tab for an individual or account.
Best Practices
- Use a consistent naming convention for
eventNamevalues across all your webhooks, because LDP groups events by this name. - In HubSpot, add the webhook to a separate workflow for each event type you want to track.
- Pass only the additional properties you actively use in LDP. Unused fields still count against payload size.