Ingest HubSpot events directly into your RisingWave database for real-time processing and analytics.
Parameter or clause | Description |
---|---|
data JSONB | Defines the name of column to store the JSON payload from the webhook. Currently, only JSONB type is supported for webhook tables. |
is_batched | Optional, set to true to enable batch ingestion of multiple JSON lines in a single request. |
SECRET <secret> | Use an existing secret to verify incoming webhook requests. This is optional. You can also use a raw string to verify. |
headers->>'...' | Extracts the signature provided by HubSpot in the x-hubspot-signature HTTP header. In secure_compare() function, the whole HTTP header is interpreted as a JSONB object, and you can access the header value using the ->> operator, but only the lower-case header names in the ->> operator, otherwise the verification will fail. |
encode(...) | Computes the expected signature by concatenating the secret, HTTP method (POST ), RisingWave Webhook URL (http://127.0.0.1:4560/webhook/dev/public/ in this example), and the request body converted from UTF-8 data . It then takes a SHA-256 hash of this string and encodes it in hex. |
secure_compare(...) | Validates requests by matching the header signature against the computed signature, ensuring only authenticated requests are processed. The secure_compare() function compares two strings in a fixed amount of time, regardless of whether they are equal or not, ensuring that the comparison is secure and resistant to timing attacks. |
Parameter | Description |
---|---|
HOST | The hostname or IP address where your RisingWave instance is accessible. This could be a domain name or an IP address. |
database | The name of the RisingWave database where your table resides. |
schema_name | The schema name of your table, typically public unless specified otherwise. |
table_name | The name of the table you created to receive webhook data, e.g., wbhtable . |
secure_compare
expression defined in RisingWave. Different methods generate signatures in distinct ways, so you may need to adjust your validation logic accordingly.
data->'field_name'
in SQL queries.
You can create a materialized view to extract specific fields from the JSON payload.
hubspot_events
like a regular table to perform analytics, generate reports, or trigger further processing.