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.*.writescopes — with one exception: HubSpot has no products schema scope, so Product properties are created throughcrm.objects.products.writeinstead. 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 #
- Connecting HubSpot — scopes and Commerce Hub gating.
- Field mappings — map any Stripe source path to any HubSpot property, including these.