Appearance
What Stripe Sync writes to HubSpot
The exact footprint: every object we create, every property we touch, and — just as important — what we never touch. If you ever wondered "will this overwrite my data?", the answer is on this page.
All custom fields live in one clearly-named property group (ampdeck_stripe), created automatically at install. New fields are added over time by automatic migration — existing fields are never renamed or deleted.
If the object already exists
Stripe Sync adopts your existing data; it doesn't duplicate it.
| Object exists in HubSpot | What happens |
|---|---|
| Contact with the same email as a Stripe customer | Adopted. Billing properties are added/updated; the contact's name is never overwritten (names are only set when we create a contact). |
| Company associated with that contact | Rollup properties (MRR, revenue, refunds, dispute losses) are written to it. We never create companies — rollups follow the Contact → Company associations you manage. |
| HubSpot Product matching a Stripe Price | Linked (1 Stripe Price = 1 HubSpot Product). Linking writes nothing to the product. A new product is only created when you choose Create (or opt into auto-create). |
| Deal (yours, any pipeline) | Never adopted, never modified. The app only ever touches deals it created itself, in its own two pipelines. |
| Same subscription event delivered twice | Deduplicated. One booking deal per subscription (the Stripe Subscription ID is a unique field); one delta deal per change event. Retries never duplicate records. |
Contacts
One contact per Stripe customer, matched by email (created if missing).
| Field | What it holds |
|---|---|
| Email, first/last name, phone, address | Copied from the Stripe customer on create only. Names are never overwritten afterwards. |
| Stripe Currency | The customer's currency. |
| Stripe Metadata (JSON) | The customer's Stripe metadata, as JSON. |
| Stripe Account Status | active, or deleted if the customer was deleted in Stripe. Deletion in Stripe never deletes the HubSpot contact — it only sets this flag. |
| Stripe MRR (Contact) | Current MRR across the customer's active subscriptions (active, trialing, past due, paused). Recomputed on every billing event. |
| Stripe Gross Revenue | Total captured charges, lifetime. |
| Stripe Total Refunds | Total refunded amount, lifetime. |
| Stripe Dispute Losses | Total amount lost to disputes. |
| Stripe Net Revenue | Captured − refunds − lost disputes. The customer's net LTV. |
| Stripe Latest Invoice Status | Status of the most recent invoice. |
| Stripe Has Active Dispute | true while any open dispute exists for this customer. |
| Stripe Delinquent | true when Stripe flags the customer (latest payment failed or subscription past due). |
| Stripe Last Payment Failure Date | When the most recent payment failed — the dunning trigger. |
Deals — booking deals
One deal per subscription, in the Stripe Subscriptions pipeline, stage Closed Won (revenue is booked when it happened). The native deal amount records the booking; the Stripe properties stay current with Stripe. Deals are named Subscription sub_… and associated to the contact.
| Field | What it holds |
|---|---|
| Stripe Subscription ID | Unique — the dedup key back to Stripe. |
| Stripe Customer ID / Name / Email | The customer behind the deal, denormalized so deal views work without the contact. |
| Stripe Subscription Status | Mirrored live from Stripe (active, past_due, trialing, paused, canceled…). |
| Stripe MRR / ARR | Current values, updated on every change. |
| Stripe Billing Interval | Monthly, annual, etc. |
| Stripe Billing Cycle Start / End | The current period (= next renewal date). |
| Stripe Start Date | When the subscription started (also sets the deal's close date). |
| Stripe Quantity | Total seats/items across line items. |
| Stripe Products | Comma-joined product names on the subscription. |
| Stripe Discount | Applied promotion code, e.g. EARLYBIRD20 (20%off). |
| Stripe Trial End | When the trial ends, if any. |
| Stripe Cancel at Period End / Canceled At | Scheduled or actual cancellation. |
| Stripe Paused Until / Pause Collection Active | Pause state and resume date. |
| Stripe Collection Method | charge_automatically or send_invoice. |
| Stripe Latest Invoice Amount / Status / Date | The most recent invoice. |
| Stripe Total Invoices Paid | Lifetime sum of paid invoices. |
| Stripe Total Refunds | Lifetime refunds on this subscription. |
| Stripe Has Active Dispute | true while an open dispute exists. |
| Stripe Checkout URL | The generated checkout link, if any. |
| Stripe Subscription Metadata (JSON) / Item IDs | Raw metadata and si_… correlation keys. |
| Stripe Transaction Count | Number of charges for this customer. |
Each deal carries line items mirroring the subscription items: product (via the mapped HubSpot Product), quantity, price, and recurring-billing metadata — so HubSpot's product and revenue reports populate correctly.
Deals — delta deals (Subscription Changes)
When a subscription changes (upgrade, downgrade, item added/removed, pause, cancel), a delta deal is recorded in the Stripe Subscription Changes pipeline, also Closed Won:
- Stripe MRR holds the signed change — positive for expansion, negative for contraction. Summing this field gives your net revenue movement, with churn below the axis.
- The native deal amount holds the absolute value of the change (HubSpot amounts can't be negative).
- Line items show exactly which items changed and at what price.
- Deal type is always existing business (it's a change to an existing subscription, not new revenue).
Both deal types can be switched off independently in Settings; history is never rewritten either way.
Products
Products are only ever written when you decide:
- Link — no write at all; just an internal mapping.
- Create (manual, or opt-in auto-create) — creates a HubSpot Product with the Stripe product's name and description, the price's amount as the unit price, and the recurring billing interval in the name (e.g. "Pro Plan (Monthly)") so one product exists per Stripe Price.
Renaming a Stripe Product never renames the linked HubSpot Product — HubSpot owns its marketing copy.
Products carry no custom Stripe Sync fields and are never deleted.
Companies
Never created. For each existing company associated with a customer's contact, these rollups are recomputed on every billing event (and daily):
- Stripe MRR (Company) — current MRR across all members.
- Stripe Gross / Net Revenue (Company) — lifetime money in.
- Stripe Total Refunds (Company) / Stripe Dispute Losses (Company).
Money that was booked while a contact belonged to a different company stays counted there (history is never re-attributed); re-associating a contact moves future activity to the new company. See Company rollups.
What Stripe Sync never does
- Never creates or modifies your deals — only its own, in its own pipelines. Your pipelines and stages are yours.
- Never moves a deal between stages — not even its own (bookings land in Closed Won and stay there).
- Never overwrites a contact's name after creating it.
- Never deletes anything in HubSpot — a customer deleted in Stripe is a status flag, not a deletion.
- Never creates companies.
- Never writes to your Stripe account without an explicit, audited user action.
Everything lands as properties and objects — plain HubSpot data you can filter, report on, and use in workflows the moment it arrives.