Reconciling Trial Audience Counts After Duplicate Imports
Northstar Analytics is a B2B SaaS company with 420,000 Marketo person records synced to Salesforce. Marketing Ops notices that the 'Active Trial' engagement program audience shows 18,400 people in Marketo but only 11,200 leads/contacts in Salesforce. The segment 'Enterprise - Active Trial' shows 4,900, yet the smart list behind the same criteria shows 6,150. Recent form submissions from existing customers created new person records because the form uses work email while Salesforce uses personal email; 2,700 records have no CRM ID. The team imports webinar lists monthly with only email and company; last month's file added 9,800 records, of which 1,300 matched existing people by name but not email. Sales complains about receiving duplicate alerts. The CMO wants a single 'active trial' audience for all paid media and nurture.
1. Reconcile the three audience counts: 18,400 program members, 11,200 Salesforce leads/contacts, and 4,900 segment members versus 6,150 in the equivalent smart list. What checks would you run before changing the campaign?
Read the worked answer
Define each number first. The 18,400 is a program member count, which is cumulative. People remain members after they no longer qualify, and manual additions or old statuses inflate it. Check membership dates and program statuses; count only current 'Active Trial' status, not all members. The 11,200 is a CRM count, filtered by lead/contact status, sync filters, conversion, and duplicate records. The 2,700 records without a CRM ID may be unsynced, failed, or deliberately excluded; they will not appear in Salesforce. The 4,900 versus 6,150 gap is likely a definition or refresh issue: segment membership updates as records change and only includes people with a value in the segmentation field, while the smart list may include blanks, newly created records not yet segmented, or a different filter logic. Segment counts can also lag.
Checks. Build four diagnostic smart lists: current trial status; CRM ID is empty; duplicate email normalized; and segment membership is empty while smart-list criteria are true. Sample 50 records from each. Compare filter logic side by side. Check whether the segment excludes records without a value in the segmentation field. Check sync errors and CRM duplicate rules. Do not use program membership as the current-state audience; use a smart list with explicit status and date filters. Then decide whether the CMO needs a live audience, a cumulative program report, or both.
2. Design a deduplication and import process for the 9,800-record webinar list and the 2,700 records without CRM IDs. What should be merged, what should not be, and how do you prevent recurrence?
Read the worked answer
Stage, normalize, match. Import into a staging list, not directly into the live database. Normalize email to lowercase and trim spaces; standardize company and country; preserve the original source and consent. Match first on CRM ID, then on normalized email, then on a high-confidence combination of name plus company domain. Name-only matches should go to manual review, not auto-merge. For the 9,800 webinar records, suppress anyone who already exists by email, then review name/company matches. Update only fields with a legitimate source; do not overwrite a validated title or consent with a webinar form.
Merge policy. Merge when you are confident it is the same person and the merge preserves consent and activity history. Do not merge records that share a generic email, a shared inbox, or a name but have different companies. Do not merge a known customer into a new lead just because the emails differ; resolve through CRM ID or a verified identity. For the 2,700 without CRM IDs, diagnose whether sync is failing; if they are real people, route them through the normal sync path rather than leaving orphan records.
Prevention. Add hidden CRM ID and source fields to forms where possible, use progressive profiling, and require work email for business segments. Build an import template with dedupe rules and a post-import exception report. Run a weekly duplicate report and a monthly CRM-Marketo reconciliation. Use API upsert with a stable key where the integration supports it, and document the master source for each field.
3. The CMO wants one active-trial audience for paid media and nurture. Propose the operational definition, segmentation, refresh cadence, and controls to avoid stale program membership.
Read the worked answer
Operational definition. Define active trial as a CRM-backed trial with a start date, an end date, and a status of active or ending soon. Use CRM as the system of record for contract/opportunity status; use product usage only if it is reliably synced. Exclude closed-lost, expired, competitor, and internal domains. State the definition in one sentence and get sales and finance to sign off.
Segmentation. Create a 'Trial Lifecycle' segmentation with Active Trial, Trial Ending in 14 Days, Trial Expired, and Converted. Segment membership should drive nurture and paid audiences, but the smart list should be the source of truth for current state. For paid media, sync a daily audience of hashed emails from the active-trial smart list; do not rely on a static list built once.
Refresh and controls. Run a nightly reconciliation between CRM and Marketo. Use smart campaigns to add and remove people from the paid-media list when status changes. Monitor match rate, list size drift, and suppression volume. Use program status, not program membership, for lifecycle reporting. Keep a suppression list for customers, open opportunities, and opt-outs. Document the refresh time and the fallback if the sync fails. This gives the CMO one definition without pretending that a cumulative program member count is a live audience.