Hubspot
hubspot workflows allow you to send contact, company, or deal data to jomablue in real time using the built in webhook action by configuring a workflow with a "send a webhook" step, your team can automatically push registration or lead data from hubspot to jomablue as contacts are created, updated, or meet specific criteria this approach allows you to automate the transfer of registrants or leads from hubspot to jomablue as they register or qualify reduce manual data entry and errors track which records have been successfully sent the instructions below cover setting up a hubspot workflow, configuring the webhook action, mapping the payload, authenticating, and testing prerequisites hubspot operations hub professional or enterprise — the "send a webhook" workflow action requires this subscription tier a jomablue ingest endpoint url and bearer token (provided by jomablue) 1\ create a workflow in your hubspot account, navigate to automation → workflows click create workflow choose contact based (or company/deal based depending on your use case) select your enrollment trigger — for example when filter criteria is met → lifecycle stage is equal to "subscriber" or a custom property like "event registration status" is equal to "registered" when an event occurs → contact fills out a specific form 2\ add the "send a webhook" action in the workflow editor, click the + icon to add an action in the left panel, under data ops , select send a webhook set the method to post enter your jomablue webhook url https //yourinstance jomablue com/api/webhook/ingest/{ingest endpoint uuid} 3\ configure authentication hubspot supports authenticating webhook requests using an api key in the request header to configure this for jomablue's bearer token click the authentication type dropdown and select api key set api key name to authorization set api key location to request header for the api key value, select or create a hubspot secret containing your jomablue bearer token in the format bearer eyjhbgcioi note the secret value must include the word bearer followed by a space and then your token 4\ customize the request body hubspot gives you two options for the post body include all contact properties — sends every property on the contact record jomablue can accept this and map the fields on our side, but it results in a larger payload customize request body (recommended) — lets you select specific properties and define the json key names sent to jomablue this is cleaner and easier to manage to use the recommended approach select customize request body for each field, enter the key (the json field name jomablue expects) and select the corresponding hubspot property example field mapping key hubspot property description organisation uid record id (or a custom external id) unique identifier for deduplication first name first name contact's first name last name last name contact's last name email email contact's email address company company name contact's company job title job title contact's job title mobile mobile phone number contact's mobile number dietary requirements (custom property) custom property for dietary needs you can also add static values — for example, a static key source with value hubspot to tag the origin of the record example json payload based on the mapping above, hubspot will send a payload like this to jomablue json { "organisation uid" "501", "first name" "jane", "last name" "doe", "email" "jane doe\@example com", "company" "acme corp", "job title" "marketing manager", "mobile" "+61400123456", "dietary requirements" "vegetarian", "source" "hubspot"} important hubspot's customized request body produces a flat json object — nested fields are not supported natively this is fine for jomablue's ingest api, which accepts flat payloads and handles mapping internally 5\ test the webhook hubspot provides built in testing for webhook actions in the workflow editor, click on your send a webhook action click test action select a test contact (or enter test property values if using customized body) click test review the request and response tabs to confirm the request body contains the expected fields jomablue returns a 200 response with {"success" true} you can also test externally using webhook site to inspect the exact payload hubspot sends before pointing it at your jomablue endpoint tip use the jomablue test endpoint (post /api/webhook/ingest/{uuid}/test) to validate the payload against your configured mapping without persisting any data 6\ avoid resending records (optional) to prevent the same contact from being sent multiple times create a custom contact property in hubspot — e g , sent to jomablue (single checkbox or boolean) after the webhook action in your workflow, add an action to set contact property value → set sent to jomablue to yes add a filter to your enrollment trigger or a branch condition to skip contacts where sent to jomablue is already yes 7\ error handling (optional) you can add a branch after the webhook action to handle different outcomes if the webhook succeeds (based on response status) → mark the record as sent if the webhook fails → send an internal notification, log to a list, or re enroll for retry hubspot also provides workflow action logs under automation → workflows → \[your workflow] → history where you can review individual action executions and troubleshoot failures considerations jomablue processes requests asynchronously — a 200 response means the request has been accepted and queued, not that processing is complete use a stable unique identifier (such as the hubspot record id or an external crm id) as the organisation uid to support deduplication on the jomablue side hubspot webhook payloads may send numeric looking property values as integers rather than strings — jomablue handles both formats the jomablue ingest endpoint default rate limit is 120 requests per minute — this is generally well within hubspot's workflow execution rates, but be aware if you are bulk enrolling large lists