Custom fields

The sync writes some Stripe-specific values to custom HubSpot properties named stripe_*. These are opt-in: we never modify your portal automatically. You choose when to create them from the Custom fields panel on the HubSpot connection card, or you can add them yourself using the exact internal names below.

The managed stripe_* properties #

These properties span five objects (Companies, Contacts, Subscriptions, Products, and Invoices):

Companies #

Internal name Label Type
stripe_customer_id Stripe Customer ID text
stripe_total_paid Stripe Total Paid number
stripe_last_invoice_status Stripe Last Invoice Status text
stripe_last_payment_date Stripe Last Payment Date date
stripe_deleted Stripe Deleted checkbox
stripe_deleted_date Stripe Deleted Date date

Contacts #

Internal name Label Type
stripe_customer_id Stripe Customer ID text
stripe_deleted Stripe Deleted checkbox
stripe_deleted_date Stripe Deleted Date date

Subscriptions #

Internal name Label Type
stripe_subscription_id Stripe Subscription ID text
stripe_churn_reason Stripe Churn Reason text
stripe_mrr Stripe MRR number
stripe_arr Stripe ARR number
stripe_deleted Stripe Deleted checkbox
stripe_deleted_date Stripe Deleted Date date

Products #

Internal name Label Type
stripe_product_id Stripe Product ID text
stripe_price_id Stripe Price ID text
stripe_deleted Stripe Deleted checkbox
stripe_deleted_date Stripe Deleted Date date

The stripe_deleted / stripe_deleted_date pair is the tombstone used by the “Mark as deleted” delete policy. They’re only written when that policy is selected for the object, so you only need to create them if you use it.

Invoices #

Internal name Label Type
stripe_invoice_id Stripe Invoice ID text
stripe_invoice_number Stripe Invoice Number text
stripe_invoice_status Stripe Invoice Status text
stripe_amount_due Stripe Amount Due number
stripe_amount_paid Stripe Amount Paid number
stripe_invoice_pdf Stripe Invoice PDF text
stripe_hosted_invoice_url Stripe Hosted Invoice URL text

Heads-up: the Subscriptions properties only exist on Commerce Hub portals. On portals without it, creating them fails gracefully and is recorded as non-fatal — every other object’s properties still get created.

The Custom fields panel #

On a connected HubSpot card, the Custom fields panel loads the current status automatically and shows each stripe_* property as present or missing, grouped by object.property. When any are missing, a Create N missing field(s) button appears. Creating them is idempotent — properties that already exist are treated as success.

Creating properties needs the crm.schemas.*.write scopes — with one exception: HubSpot has no products schema scope, so Product properties are created through crm.objects.products.write instead. If your OAuth connection wasn’t granted these, the button is disabled and you’ll be prompted to reconnect with them (see Connecting HubSpot) or add the fields manually using the internal names above. In Private App mode the app can’t tell in advance, so it lets you try.

Endpoints #

GET   /v1/connections/hubspot/properties/status
POST  /v1/connections/hubspot/properties/ensure
  • status reports which stripe_* properties exist per object. It never creates anything.
  • ensure creates the missing properties. Run it only when you opt in.

Where to next #