How Sync Works: Webhooks, Historical, & Scheduled

Last updated: May 29, 2026

The integration uses three different mechanisms to keep HubSpot in sync with SmartRec. Each is best suited to a different kind of data.

At a glance

Mechanism

When it runs

Typical use

Webhook (real-time)

Immediately when SmartRec data changes

Most CRUD events on people and purchases

Historical sync

On demand (typically at setup)

Backfilling existing SmartRec data

Scheduled sync

Once a day at a fixed time

Data types webhooks don't cover

Real-time webhooks

SmartRec sends a webhook payload to the integration as soon as certain data changes. The integration processes the payload and updates HubSpot within seconds.

Webhook context

Actions

HubSpot target

Account (Members & Owners)

Create, Update, Delete

Contacts

Person

Delete

Contacts

DonationPurchased

Create

Deals

MembershipPurchased

Create, Delete

Deals

MultiPassPurchased

Create

Deals

Registration

Create

Appointments

Activity

Create, Update, Delete

Courses

About deletes: SmartRec deletes never hard-delete records in HubSpot. They archive or move them. See How Deletions & Archiving Work.

Historical sync (backfill)

Historical sync pulls data from the SmartRec REST API for initial migration or catch-up. Each runs as a paginated job that automatically continues until complete.

Data type

SmartRec endpoint

HubSpot target

Default date range

Accounts

GET /accounts

Contacts

All accounts

Activities

GET /activities?showPastActivities=true

Courses

All activities

Donations Sold

GET /donations/sold

Deals

Last 30 days

Memberships Sold

GET /memberships/sold

Deals

Last 30 days

MultiPass Sold

GET /multipass/sold

Deals

Last 30 days

Registrations

GET /registrations?showEnded=true

Appointments

Last 30 days

Scheduled sync (daily)

Scheduled jobs poll SmartRec once a day for data types that don't support webhooks or need periodic refresh. All times are in your local timezone.

Job

Time

SmartRec endpoint

HubSpot target

Window

Locations

4:00 AM

GET /locations

App Object (Locations)

All locations

Memberships

4:00 AM

GET /memberships?showHidden=true&showActiveonly=false

App Object (Memberships/MultiPasses)

All memberships

MultiPasses

4:00 AM

GET /multipass?showArchived=true

App Object (Memberships/MultiPasses)

All multipasses

Activity Occurrences

4:15 AM

GET /events?showParticipants=true&showHidden=true&showSkipped=true&showCanceled=true

Deals

Last 24h → 30 days out

Access Scans

4:30 AM

GET /AccessScans

App Events

Last 24h

Things to know

  • Webhooks beat scheduled syncs. If a piece of data is covered by a webhook, you'll see HubSpot update almost immediately. Scheduled syncs only handle the gaps.

  • Activity Occurrences look ahead 30 days. The daily sync grabs occurrences from the past 24 hours through 30 days into the future, so your HubSpot pipeline reflects upcoming sessions.

  • Access Scans are timeline-only. They show up on a Contact's activity timeline, not as searchable CRM objects. See Access Scans → Person Access Scan.

  • Skipping archived records. During an upsert, if the integration sees that the matching HubSpot record is already archived, it skips it rather than re-creating or failing.

Related articles