feat: hubspot wrapper (#35059)

* feat: slack fdw

* fix slack options

* feat: cloudflare d1 fdw

* feat: hubspot wrapper

* up minimum version

* update description and add missing objects

* fix this one again
This commit is contained in:
Alaister Young authored and GitHub committed 2025-04-16 11:04:26 +00:00
1 parent 40aceb7e68
commit 659e9130dd
3 files changed
+293

No files matched your search

@@ -21,6 +21,7 @@ export const WRAPPER_HANDLERS = {
NOTION: 'wasm_fdw_handler',
SLACK: 'wasm_fdw_handler',
CLOUDFLARE_D1: 'wasm_fdw_handler',
HUBSPOT: 'wasm_fdw_handler',
}
export const WRAPPERS: WrapperMeta[] = [
@@ -3453,4 +3454,292 @@ export const WRAPPERS: WrapperMeta[] = [
},
],
},
{
name: 'hubspot_wrapper',
description: 'Query and sync HubSpot CRM data using the Wasm FDW.',
handlerName: WRAPPER_HANDLERS.HUBSPOT,
validatorName: 'wasm_fdw_validator',
icon: `${BASE_PATH}/img/icons/hubspot-icon.svg`,
extensionName: 'HubspotFdw',
label: 'HubSpot',
docsUrl: 'https://fdw.dev/catalog/hubspot/',
minimumExtensionVersion: '0.4.0',
server: {
options: [
{
name: 'fdw_package_url',
label: 'FDW Package URL',
required: true,
encrypted: false,
secureEntry: false,
defaultValue:
'https://github.com/supabase/wrappers/releases/download/wasm_hubspot_fdw_v0.1.0/hubspot_fdw.wasm',
hidden: true,
},
{
name: 'fdw_package_name',
label: 'FDW Package Name',
required: true,
encrypted: false,
secureEntry: false,
defaultValue: 'supabase:hubspot-fdw',
hidden: true,
},
{
name: 'fdw_package_version',
label: 'FDW Package Version',
required: true,
encrypted: false,
secureEntry: false,
defaultValue: '0.1.0',
hidden: true,
},
{
name: 'fdw_package_checksum',
label: 'FDW Package Checksum',
required: true,
encrypted: false,
secureEntry: false,
defaultValue: '2cbf39e9e28aa732a225db09b2186a2342c44697d4fa047652d358e292ba5521',
hidden: true,
},
{
name: 'api_url',
label: 'API URL',
required: false,
encrypted: false,
secureEntry: false,
defaultValue: 'https://api.hubapi.com/crm/v3',
},
{
name: 'api_key_id',
label: 'HubSpot API Key',
required: true,
encrypted: true,
secureEntry: true,
urlHelper: 'https://app.hubspot.com/api-key',
},
],
},
tables: [
{
label: 'Companies',
description: 'Companies and organizations in your HubSpot CRM',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'name', type: 'text' },
{ name: 'domain', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/companies',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Contacts',
description: 'Contacts in your HubSpot CRM',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'email', type: 'text' },
{ name: 'firstname', type: 'text' },
{ name: 'lastname', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/contacts',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Deals',
description: 'Deals and transactions in your HubSpot CRM',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/deals',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Tickets',
description: 'Customer service requests in your HubSpot CRM',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'subject', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/tickets',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Products',
description: 'Products offered by your company in HubSpot',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'name', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/products',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Leads',
description: 'Potential customers in your HubSpot CRM',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/leads',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Partner Clients',
description: 'Partner clients managed by your company in HubSpot',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/partner_clients',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Feedback Submissions',
description: 'Feedback submissions from NPS, CSAT, CES, and custom surveys',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/feedback_submissions',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Custom Object',
description: 'Custom objects managed by your company in HubSpot',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
label: 'Object',
name: 'object',
placeholder: 'objects/<objectType> e.g. `objects/2-3508482`',
defaultValue: 'objects/<objectType>',
editable: true,
required: true,
type: 'text',
},
],
},
{
label: 'Goals',
description: 'User-specific quotas for sales and services teams',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/goal_targets',
editable: false,
required: true,
type: 'text',
},
],
},
{
label: 'Partner Clients',
description: 'Customers that Solutions Partners have a sold or managed relationship with',
availableColumns: [
{ name: 'id', type: 'text' },
{ name: 'created_at', type: 'timestamp' },
{ name: 'updated_at', type: 'timestamp' },
{ name: 'attrs', type: 'jsonb' },
],
options: [
{
name: 'object',
defaultValue: 'objects/partner_clients',
editable: false,
required: true,
type: 'text',
},
],
},
],
},
]
@@ -0,0 +1 @@
<svg height="2500" viewBox="6.20856283 .64498824 244.26943717 251.24701176" width="2500" xmlns="http://www.w3.org/2000/svg"><path d="m191.385 85.694v-29.506a22.722 22.722 0 0 0 13.101-20.48v-.677c0-12.549-10.173-22.722-22.721-22.722h-.678c-12.549 0-22.722 10.173-22.722 22.722v.677a22.722 22.722 0 0 0 13.101 20.48v29.506a64.342 64.342 0 0 0 -30.594 13.47l-80.922-63.03c.577-2.083.878-4.225.912-6.375a25.6 25.6 0 1 0 -25.633 25.55 25.323 25.323 0 0 0 12.607-3.43l79.685 62.007c-14.65 22.131-14.258 50.974.987 72.7l-24.236 24.243c-1.96-.626-4-.959-6.057-.987-11.607.01-21.01 9.423-21.007 21.03.003 11.606 9.412 21.014 21.018 21.017 11.607.003 21.02-9.4 21.03-21.007a20.747 20.747 0 0 0 -.988-6.056l23.976-23.985c21.423 16.492 50.846 17.913 73.759 3.562 22.912-14.352 34.475-41.446 28.985-67.918-5.49-26.473-26.873-46.734-53.603-50.792m-9.938 97.044a33.17 33.17 0 1 1 0-66.316c17.85.625 32 15.272 32.01 33.134.008 17.86-14.127 32.522-31.977 33.165" fill="#ff7a59"/></svg>

After

Width:  |  Height:  |  Size: 969 B

@@ -0,0 +1,3 @@
HubSpot is a developer and marketer of software products for inbound marketing, sales, and customer service.
The HubSpot Wrapper is a WebAssembly(Wasm) foreign data wrapper which allows you to read data from your HubSpot for use within your Postgres database.