Keeping two systems in sync is really two problems: reacting to changes quickly, and never drifting. We solve them with two complementary mechanisms.
Real-time: webhooks #
When something changes in Stripe — a new subscription, a paid invoice, a canceled plan — Stripe sends a webhook and we sync just that record. HubSpot reflects the change within seconds, no polling required.
Accuracy: nightly reconcile #
Webhooks can be missed (downtime, replays, edge cases). So every night a reconcile re-syncs everything currently in Stripe — catching anything real-time missed. It can also archive HubSpot records whose Stripe source has disappeared, but that’s opt-in and off by default: unless you switch a record type’s When deleted in Stripe policy to Archive or Mark, deletions aren’t propagated.
Why both #
| Real-time | Reconcile | |
|---|---|---|
| Latency | seconds | nightly |
| Catches deletions | no | yes, when enabled |
| Self-heals gaps | no | yes |
Together they give you a HubSpot that’s both fresh and trustworthy. You can also trigger a reconcile by hand anytime from the Sync screen.