- System type: Marketing Operations, CRM Data Quality, Lifecycle Marketing and Lead Intelligence
- Architecture: Platform-agnostic; event-driven intake with scheduled engagement and scoring checks
- Connected workflows: (1) New Subscriber Segmentation; (2) Inactive Subscriber Re-Engagement; (3) Lead Score Decay Cleanup
1. Business problem and objective
A subscriber joins through a website form, product sign-up, webinar, or CRM import, but their audience segment often remains unchanged as behavior evolves. A formerly active subscriber may stop interacting while still receiving frequent campaigns; a stale lead score may keep an inactive contact at the top of an SDR queue; a customer who recently re-engaged may incorrectly enter a win-back sequence.
Build one subscriber lifecycle operations layer that ingests trusted sign-up and engagement data, assigns explainable segments, manages appropriate re-engagement, and recalculates lead scores over time. Its purpose is to keep CRM/CDP audiences and handoff decisions aligned with verified current behavior, not to maximize the number of messages sent.
Core principle: The subscription or identity system owns contact permissions; approved segmentation rules assign audience membership; timestamped activity provides evidence; scoring policy determines points; automation synchronizes systems and audits changes. AI may summarize or suggest campaigns, but cannot infer marketing consent or override suppression rules.
2. One integrated lifecycle
Source event → Verify identity & permissions → Enrich verified history → Assign segment → Monitor inactivity → Recheck eligibility → Re-engage if permitted → Record engagement → Recompute score → Reconcile CRM and lists → Audit.
These workflows must not operate as separate campaigns: intake creates the normalized subscriber record used by the inactivity monitor; a re-engagement response feeds the engagement history and may restore the active segment; score decay updates qualification and routing but never independently removes someone from a consent record or invents a new subscription permission.
Sample lifecycle states
- IDENTITY_UNRESOLVED — source or contact identity is insufficient.
- PERMISSION_UNKNOWN — contact may be stored operationally but is not eligible for permission-dependent marketing.
- NEW / ACTIVE / ENGAGEMENT_DECLINING / INACTIVE — derived engagement states using versioned rules.
- REENGAGEMENT_ELIGIBLE / REENGAGEMENT_RUNNING / REENGAGED / REENGAGEMENT_CLOSED — a separate campaign journey state.
- SUPPRESSED / UNSUBSCRIBED / HARD_BOUNCED — permission or deliverability states that override marketing routing.
- SALES_REVIEW / SALES_READY / NURTURE — qualification states driven by business-controlled fit and engagement rules.
A contact can simultaneously be a customer, a newsletter subscriber, and a sales lead. Model these as separate attributes, not mutually exclusive guesses about the person's identity.
3. Interchangeable systems and ownership
The design does not assume every tool supplies equivalent event details or API capabilities. Implement provider adapters for webhook, polling, and permitted import paths. If data is absent, tag the metric as UNKNOWN rather than substituting zero activity.
4. Configuration and normalized data
Subscriber fields: subscriber_id, crm_contact_id, provider_contact_ids, normalized_email_or_identity, source_system, source_record_id, source_campaign, acquisition_timestamp, contact_owner, country/timezone when provided, lifecycle_status, marketing_purpose, channel permission status, consent_source, consent_timestamp, unsubscribe_timestamp, bounce_status, last_synced_at.
Engagement fields: event_id, subscriber_id, event_type, provider, event_occurred_at, ingested_at, related_campaign_id, source_reference, event_quality, event_version. Events can include verified signup, email click, site conversion, product activation, purchase, meeting booked, reply, and unsubscribe. Treat email opens cautiously because privacy features and prefetching can distort them.
Segmentation rules: rule_id, version, acquisition_source, declared interests, product/account characteristics, fit tags, required evidence, priority, precedence, audience_name, expiration/recheck policy.
Inactivity rules: engagement_type, inactivity_days, eligible audience, allowed channels, message cadence, exclusions, contact frequency limit, quiet hours and reassessment requirements.
Scoring rules: point grants, decay interval, decay step or multiplier, minimum/maximum score, qualifying events, reset conditions, negative signals, score tiers, rule_version and approval owner.
Operational records: segment_assignment_id, segment_version, journey_id, campaign_step, next_action_at, last_eligibility_check_at, current_score, scoring_snapshot_id, latest_event_watermark, sync_status, workflow_execution_id, idempotency_key.
Illustrative normalized intake event
{
"event_id": "evt-signup-1048",
"event_type": "SUBSCRIBER_CREATED",
"source_system": "WEBSITE_FORM",
"source_record_id": "form-entry-1048",
"subscriber": {
"email": "[email protected]",
"declared_interest": "sales_automation"
},
"permission": {
"email_marketing": "UNKNOWN",
"evidence_reference": null
},
"occurred_at": "2026-10-18T10:00:00Z"
}
Illustrative only. UNKNOWN permission means no marketing invitation is authorized until the appropriate lawful basis and platform rules are verified. Do not infer consent from the presence of an email address.
5. Unified node map
[TRIGGER] Signup / Engagement Webhook / Scheduled Evaluation
↓
[LOOKUP/FETCH] Subscriber + Identity Mapping + Source Evidence
↓
[ROUTER/FILTER] Duplicate? Missing Source? Permission/Suppression?
↓
[ACTION] Normalize + Upsert Subscriber + Record Event
↓
[LOOKUP/FETCH] Engagement History + Segment Rules + Score Policy
↓
[ROUTER/FILTER] New / Active / Declining / Inactive / Suppressed
├── New → [ACTION] Set Initial Segment
├── Inactive + Eligible → [ACTION] Start Re-Engagement Journey
├── Active → [ACTION] Cancel Stale Re-Engagement Steps
└── Unknown/Suppressed → [ACTION] Hold for Review / Suppress
↓
[LOOKUP/FETCH] Authoritative Activity + Score Snapshots
↓
[ROUTER/FILTER] Decay Due? Recent Qualifying Event?
↓
[ACTION] Compute Score + Update CRM Qualification
↓
[LOOKUP/FETCH] Latest State; Verify Downstream Sync
↓
[ACTION] Append Audit Event + Update Dashboard
6. Workflow A — New Subscriber Segmentation
Objective: Bring subscribers from any approved source into a coherent CRM/CDP record and apply evidence-backed segmentation rules without merging unrelated people or enrolling in unauthorized marketing.
Trigger: [TRIGGER] new subscriber event from form, ESP, webinar, CRM, product account, or scheduled incremental import.
- Authenticate and deduplicate. [LOOKUP/FETCH] webhook signature/source ID, previously received event IDs, provider contact ID. If the same event was processed, return the prior result. An email match may be a candidate identity link, but ambiguous identities must receive manual review rather than forced merging.
- Validate contact and acquisition. Confirm allowed identity fields, acquisition time, and source mapping. Missing source should produce SOURCE_UNKNOWN and an exception; do not invent “organic” or “paid.” Missing email should not block a legitimate non-email identity from existing, but cannot create an email audience membership without an eligible address.
- Resolve permissions. [LOOKUP/FETCH] current channel-specific subscriptions and opt-outs from their authority, including origin, purpose, status and timestamp. [ROUTER/FILTER] suppressed/unsubscribed/hard-bounced/unknown permission → prohibit applicable campaign enrollment; retaining a necessary administrative record does not create marketing authorization.
- Load matching history. [LOOKUP/FETCH] declared interests, relevant verified product activity, relevant CRM attributes, existing segments, and timestamped engagement. Guard against stale imports superseding newer data.
- Apply versioned rules. [ROUTER/FILTER] choose acquisition cohort, topic interest and lifecycle segment; keep separate dimensions rather than collapsing every attribute into one score. Sample: new verified “operations” interest → OPERATIONS_INTEREST; returning customer → CUSTOMER; insufficient source → SOURCE_UNVERIFIED.
- Write and verify. [ACTION] upsert subscriber and segment membership, set initial score only under approved scoring policy, save rule_version and evidence references; then fetch authoritative CRM membership to verify. Failures queue an independent sync retry.
- Handoff. Schedule a later activity/inactivity evaluation and expose the subscriber to Workflow B only when rules and permission permit. A newly opted-out record stays suppressed despite a new duplicate signup event.
Outputs: canonical subscriber_id, source mapping, contact permission state, segment_assignment_version, CRM sync result, next_evaluation_at, audit entries.
Illustrative event: “New sign-up from a business automation webinar” enters a topic segment only after source and permission validation. It must not automatically become SALES_READY or a qualified prospect.
7. Workflow B — Inactive Subscriber Re-Engagement
Objective: Identify contacts whose relevant engagement has declined, attempt appropriate re-engagement through permitted channels, and promptly stop journeys when activity or permission changes.
Trigger: [TRIGGER] scheduled daily cohort scan, or a reliable activity event that changes eligibility.
Illustrative configuration: engagement window 30 days; declining 30–59 days; inactive at 60+ days; one initial outreach and one optional follow-up after seven days. These are company-adjustable examples, not universally appropriate cadences.
- [LOOKUP/FETCH] active subscribers, last qualifying engagement, message sends, active journeys, lifecycle ownership, bounce status, current permissions.
- [ROUTER/FILTER] exclude unsubscribed/hard-bounced/restricted, existing equivalent journeys, and customers subject to contact-frequency limits or special policies.
- [LOOKUP/FETCH] the authoritative engagement events through the evaluation cutoff. Prefer meaningful interactions such as verified clicks, qualified replies, product usage or purchases over email opens alone.
- [ROUTER/FILTER] ACTIVE → maintain active membership and cancel stale reminder jobs; DECLINING → optionally flag for low-frequency nurture; INACTIVE + permission verified → create one journey; UNCERTAIN_DATA → re-sync or review, not a claim of inactivity.
- [ACTION] create journey record with exact cohort, rule version, customer timezone, channel and next scheduled step. Do not create duplicate sequence instances for repeated scanner runs.
- Before each actual message, [LOOKUP/FETCH] current subscription, latest events, CRM/customer state, quiet-hour policy and prior delivery; [ROUTER/FILTER] eligibility again. Suppress on unsubscribe, engagement recovery, prior message, active support hold or expired campaign.
- [ACTION] send an informative re-engagement message appropriate to the recipient's declared interests, without fake urgency, invented offers, or unwarranted personalization.
- [LOOKUP/FETCH] provider result; record SENT/ACCEPTED/BOUNCED/UNKNOWN separately. An API timeout is not proof that an email was never accepted; reconcile message ID before retrying.
- At next evaluation, [ROUTER/FILTER] meaningful engagement → mark REENGAGED, stop remaining steps, restore an appropriate active segment, notify Workflow C to recalculate; no engagement → proceed only if allowed, otherwise close or suppress.
- [ACTION] update CRM and campaign queue; verify and audit.
Illustrative message:
Subject: Still interested in improving your operations?
“We've been sharing new practical guides on [approved interest]. If they're still relevant, here's a recent resource. You can also update your preferences at any time.”
Do not target people merely because their mail provider did not register opens, and do not treat a missing tracking event as evidence of disinterest when the upstream event feed is delayed.
Outputs: journey status, send history, last qualification event, restored/declining/inactive segment, message and workflow audit.
8. Workflow C — Lead Score Decay Cleanup
Objective: Prevent scores from permanently overstating current buying engagement by recalculating time-sensitive points and synchronizing CRM qualification with verified behavior.
Trigger: [TRIGGER] scheduled daily or weekly scoring run, plus optional qualified activity events.
Model: Keep fit (job-role/account suitability) distinct from engagement/intent (recent evidenced actions). A good-fit buyer who went quiet should not lose truthful firmographic attributes merely because their engagement points decayed.
- [LOOKUP/FETCH] active lead records, scoring policy version, existing score snapshot, last qualifying engagement, source event watermark, account assignment and sales ownership.
- [VERIFY] event completeness before scoring. If the engagement source is delayed or unavailable, mark SCORE_PENDING_RECONCILIATION rather than treating activity as zero.
- [ROUTER/FILTER] qualified recent activity → award only approved, deduplicated event points; no qualifying activity past decay threshold → apply decay policy once per window; opted-out customer → suppress marketing but retain permitted operational scoring according to retention policy.
- Illustrative rule: engagement component 40 points; after a full 30-day inactivity window, subtract 5 points per completed interval, minimum 0. A verified high-intent event uses defined positive scoring and may reset the decay clock. Configure exact windows, weightings, caps, and sales routing thresholds.
- [LOOKUP/FETCH] most recent scoring version and event ledger; calculate changes atomically. Re-running the same period must not deduct points again.
- [ROUTER/FILTER] score tier changed? If yes, update CRM lifecycle/queue according to sales-owned policy. Do not automatically unassign an active opportunity or send sales outreach solely because a score crosses a threshold.
- [ACTION] store previous/new scores, breakdown (fit vs engagement), policy version, event references, effective time and reason codes. Sync appropriate segment and next-action fields to CRM; verify destination state.
- [ACTION] reconcile misclassified high-score inactive leads, expired temporary interests, stale segment flags and duplicates through controlled cleanup tasks. Destructive deletion is not the default cleanup mechanism.
- [ACTION] notify sales/marketing operations on material routing changes or unresolved score discrepancies, then audit.
Example: A lead with fit score 35 and engagement score 40 may have its engagement score reduced to 35 after the qualifying inactivity period; the fit score stays 35. If a verified product-demo booking arrives before a queued downgrade is committed, re-fetch and apply the newer activity before changing the CRM stage.
Outputs: latest scoring snapshot, score_reason_codes, CRM qualification tier, reconciliation status, activity watermark and audit event.
9. Coordination, concurrency and business rules
Use one central contact identity and event ledger. A single qualifying event may (a) update subscriber history, (b) cancel an inactive journey and (c) raise the engagement score; these updates must share versioned identity and timestamp references.
Precedence: UNSUBSCRIBED / HARD_BOUNCED / NO_PERMISSION blocks applicable marketing regardless of segment or score. New verified engagement takes precedence over a stale scheduled win-back send. Active opportunity ownership and manual CRM overrides follow explicit authorized policy.
Race-condition example: 09:00 inactivity scan queues a reminder; 09:02 subscriber clicks a campaign; 09:03 reminder worker wakes. Worker must refetch current activity and suppress the reminder, not trust the saved 09:00 eligibility result.
In-flight provider uncertainty: never retry a campaign send without resolving whether the provider accepted the previous message. Assign a stable idempotency key: subscriber_id + journey_id + step + channel + content_version. Segment and score updates likewise use event IDs, policy versions and calculation-period keys.
Identity conflict: two contact IDs with the same email may represent a migration, shared address or a duplicate. Prefer verified provider identifiers and configured identity resolution; escalate uncertain merges. Re-run downstream workflows only after a canonical mapping is confirmed.
10. Failure recovery and exception routing
Track each step as PENDING, RUNNING, WAITING_RETRY, MANUAL_REVIEW, VERIFIED, or FAILED_FINAL. Keep last_successful_step, retry_count, next_retry_at, external_message_id, and provider_response. Use exponential backoff for transient API failures; never blindly replay external sends.
11. Human control, compliance and vault
Marketing operations owns scoring and segmentation definitions; sales operations approves qualification thresholds; authorized campaign owners approve outbound content and channel usage as required. AI can draft copy and suggest categories, but it must not infer consent, fabricate browsing events, promise offers or override suppression.
Keep tokens and OAuth credentials in a vault, never task descriptions or event logs. Authenticate source webhooks, restrict service accounts to minimum rights, segregate marketing vs CRM permissions, and minimize personal data passed to AI. Respect regional electronic-marketing rules, unsubscribe processing, retention policies and platform terms. No scoring/segmentation workflow should erase consent evidence or create marketing eligibility implicitly.
Core audit events: SUBSCRIBER_RECEIVED, SOURCE_UNRESOLVED, IDENTITY_MATCHED, PERMISSION_VERIFIED, SEGMENT_ASSIGNED, SEGMENT_CHANGED, INACTIVITY_DETECTED, REENGAGEMENT_ELIGIBLE, REENGAGEMENT_SENT, REENGAGEMENT_SUPPRESSED, SUBSCRIBER_REENGAGED, SCORE_DECAY_CALCULATED, SCORE_TIER_CHANGED, CRM_SYNC_VERIFIED, OPT_OUT_RECEIVED, DUPLICATE_EVENT_PREVENTED, MANUAL_REVIEW_REQUIRED, RETRY_COMPLETED.
Each audit record should include org_id, subscriber_id, source_event_id, workflow_id, rule_version, prior/new state, actor/authority, source timestamp, processed timestamp, destination operation ID and outcome.
12. Operations dashboard and measurement
Acquisition: new contacts by verified source, SOURCE_UNKNOWN rate, permission-verified contacts, initial segment distribution, duplicate resolution queue.
Engagement: active/declining/inactive populations, re-engagement eligibility, messages sent vs suppressed, meaningful reactivation rate, bounce and opt-out outcomes. Avoid overstating email opens as reliable engagement.
Scoring: score distributions by cohort, number of decays, leads re-qualified after verified activity, pending reconciliation, CRM mismatches and scoring version changes.
System health: event ingestion latency, late events, delivery unknowns, retried step counts, duplicate actions prevented and unresolved owner mappings. Separate reported conversions from proven incremental uplift; holdout tests may be used for the latter.
13. Acceptance tests
- Verified new subscriber: create one canonical contact, apply evidence-backed segments, preserve permission state and source.
- Same signup event twice: one event, one enrollment, no duplicated campaign.
- Existing unsubscribed contact signs up via another tool: do not override suppression without independently valid updated permission.
- Source metadata absent: retain contact with SOURCE_UNKNOWN and route for correction.
- Subscriber is active within inactivity threshold: no win-back journey or email.
- Contact clicks while reminder is queued: cancel scheduled win-back message before send.
- Mail event source delayed: set data-uncertain state; do not infer inactivity or decay from missing events.
- Score decay job runs twice: apply the same interval only once; preserve audit.
- New demo booking arrives during score downgrade: reconcile newer event, recalculate, avoid false downgrade.
- Email API times out: reconcile external status before sending again.
- CRM update fails after source snapshot succeeds: retry only CRM synchronization.
- Hard bounce received after first message: suppress remaining journey steps.
- Two ambiguous identities match one email: do not merge automatically; request review.
- A customer is both a prospect and a newsletter subscriber: keep lifecycle and permission dimensions distinct; apply approved audience rules.
14. Uptune positioning and implementation
Suggested architecture: subscriber adapters (webhooks/API) → normalized PostgreSQL event and permission ledger → n8n/Make/Python orchestration → CRM/CDP segments and engagement score fields → ESP campaign queue → exception and reporting dashboard. Operators should configure rules without rewriting provider-specific business logic.
Roll out in stages: (1) source and permission mapping, (2) new subscriber segmentation with safe CRM sync, (3) re-engagement with last-second state checks, (4) versioned lead score decay and sales routing, (5) cross-workflow monitoring and audit.
Value proposition: A CRM can contain thousands of contacts while still being wrong about who is active, interested or eligible for outreach. This system continuously reconciles how contacts entered, what they actually did, and whether the current score and audience assignment still make sense.
Uptune principle: Better marketing automation starts with trustworthy lifecycle data—not more automated emails.