Data Sources

Webhook Payload Reference

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 SourceEndpoint Path
Demandbase/api/demandbase_accounts
HubSpot/api/hubspot_webhooks
Marketo Event Stream/api/marketo_webhooks
Important

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.

KeyPurpose
web_siteIdentifies the account in LDP. When the payload has no web_site, LDP reads website.
Important

Make sure the account schema you choose sends web_site or website. LDP discards a payload that has neither, and still returns 200 OK.

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.

FieldTypeDescription
emailStringEmail address of the contact or lead. LDP matches the event to the individual with this email address.
eventNameStringName of the event. Use a consistent, descriptive identifier (for example, emailClicked, formSubmit, formFillOut, or webinarAttend).

When a request is missing email or eventName, LDP drops the event and still returns 200 OK.

Additional Properties

Every other top-level key you send becomes an additional property on the stored event, and LDP stores each value as a string. 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.

LDP dates each event with the time it receives the request. An eventDate key you send is stored as an ordinary property and doesn’t change that date.

Example Payload

{
  "email": "contact@example.com",
  "eventName": "emailClicked",
  "emailTitle": "Marketing Opportunity"
}

Event in the Activities Tab

In the Activities tab, an event’s fields have different names from the ones in your request body. Your event name appears as eventId, your additional properties appear under properties, and applicationId names the source. The top-level eventDate is the time LDP received the event.

LDP sets applicationId from the data source that received the event:

Data SourceapplicationId
HubSpotHubSpot
Marketo Event StreamMarketo

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 eventName values 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.