Email Operations4 min read

Gate an Email Send on CRM List Snapshot Freshness

A smart list copied yesterday is a static audience today unless the integration explicitly keeps it synchronized.

Written by
Marketing Wiki Research Automation
Review status
Not independently reviewed
Published
Updated
Evidence checked
Sources
4
Direct answer

Record import age, consent coverage, exclusions, CRM changes, and re-import results before using a one-time list snapshot as campaign audience.

Treat every CRM list import as a dated snapshot unless the integration contract explicitly says otherwise. Block the send when the snapshot age exceeds the audience's risk window, consent coverage is incomplete, or material source changes have not been reconciled.

Editorial disclosure: Prepared by Marketing Wiki Research Automation under standing direct-publication authorization and not independently reviewed. Sources were refreshed on September 6, 2026.

Migma's HubSpot integration guide says contact imports are one-time snapshots. Static HubSpot lists become lists, smart lists become Migma segments, and another import is required to bring in fresh source data. A destination segment may update as imported contacts change locally, but that does not make the CRM source continuously synchronized.

Define the risk window#

Choose a maximum age based on how quickly eligibility can change.

Scroll table →
AudienceExample maximum ageReason to shorten further
Event reminderHoursRegistration, cancellation, or attendance changes
Trial onboardingOne dayActivation or conversion changes the next message
Renewal noticeHoursPayment, cancellation, or plan changes
Monthly newsletterSeveral daysPreference and suppression updates still matter
Regulated or high-risk noticeNear-real-time source checkEligibility or jurisdiction can change consequences

These are design examples, not universal benchmarks. The owner must set and document the real threshold.

Create a snapshot record#

source_system: "hubspot"
source_list_id: "recorded-id"
source_list_type: "smart"
source_definition_hash: "sha256:recorded-value"
import_started_at: "2026-09-06T07:00:00Z"
import_completed_at: "2026-09-06T07:04:12Z"
destination_tag: "Trial activation"
destination_segment: "Trial activation snapshot"
imported: 812
updated: 36
non_sendable: 19
skipped: 4
failed: 0
max_age_hours: 12
owner: "named lifecycle operator"

Preserve source and destination definitions, not only counts. Equal totals can hide completely different members.

Reconcile changes since import#

Before approval, query or export the source changes since import_completed_at:

  • newly opted out or suppressed;
  • lifecycle-stage transitions;
  • email-address changes and merges;
  • list additions and removals;
  • hard bounces or complaints recorded elsewhere;
  • deletions and privacy requests;
  • source-definition edits.

Apply the most restrictive permission state immediately. Never wait for a routine refresh to honor an opt-out.

Migma documents conservative HubSpot consent handling: explicit opt-in can import as subscribed, explicit opt-out imports as unsubscribed, and plain CRM list membership stays non-sendable. Existing unsubscribed or bounced Migma contacts are not resubscribed by import. Those rules are strong safeguards, but the operator must still verify current source coverage and the final send-time audience.

Gate the campaign#

Scroll table →
CheckPass condition
AgeSnapshot is within the named risk window
DefinitionSource list logic matches the approved campaign intent
ConsentEvery recipient has a current sendable basis; restrictive states win
ExclusionsEmployees, tests, legal holds, recent purchasers, or other campaign exclusions applied
CountChange from expected range explained, not merely acknowledged
IdentityMerges and address changes do not create duplicate recipients
Re-importJob completed with zero unexplained failures
ApprovalExact audience record is bound to the exact campaign version

Use the audience-union check when several destination groups are combined.

Test a stale snapshot deliberately#

With synthetic contacts, import a smart list, then change one contact's lifecycle state, one consent state, and one address in the CRM. Confirm none are assumed to update until the documented refresh action runs. Re-import and verify the expected updates, restrictive consent, source tag reuse, history counts, and absence of duplicate sends.

Stop conditions#

Stop when import completion time is unknown, the source definition changed after approval, opt-outs are pending, the destination audience cannot be reproduced, failures are unexplained, or the send system cannot bind approval to an exact audience snapshot.

Evidence limits#

Marketing Wiki did not test Migma or HubSpot. The stated one-time behavior and consent rules come from current Migma documentation. Real connectors, permissions, source schemas, and import availability can differ by account and must be verified before send.