LensReading which lens this session carries.
All contracts

CTR-MKT-AUTOMATION · version 1

Marketing Automation — Campaign engagements

Consent is the whole question. An engagement feed under a consent basis needs a withdrawal path that propagates into the platform, and none exists.

In reviewNever checked

What the contract says

These are the terms the connector is generated against. A source that stops matching them is a drift finding, not a silent data change.

Entity
Campaign engagement · bidirectional
Primary key
activityId
Declared volume
210,000 records a day
Freshness commitment
2 h
Owner
C. Delgado · Marketing Operations
Vendor
Marketo Engage · medium criticality · modeled
Cardinality
One campaign to many engagements. One engagement to at most one known person, and the contract admits anonymous engagements without inventing an identity.
Write-back rule
Campaign membership and suppression are in scope once the privacy review lands. Outbound send is excluded.

Review state

Neither review is performed by the team that wrote the contract.

Security reviewApproved
D. Contreras · Jun 11, 2026
Privacy reviewIn review
Maitre Olivier Lascaux · Jul 4, 2026

Validation and drift

Drift is only detectable on a contract that has been read against a sample.

Last validatedNever
No sample has been read against this contract.
Privacy review is the blocker, not the shape. No sample has been requested.

The field list

5 fields · 1 key · 2 personal. The validation rule on each row is what admits or rejects a record at the staging boundary.

FieldSourceTargetTypeFlagsDriftValidation
Activity idactivity.idengagement.refstring(24)
keyinternal
Never checkedSource-generated.
Campaign idcampaign.idengagement.campaignRefstring(24)
internal
Never checkedMust resolve to a campaign.
Activity typeactivity.typeengagement.kindenum(12)
internal
Never checkedTwelve declared types.
Person idlead.idengagement.personHashstring(64)
nullablepersonalrestricted
Never checkedPseudonymized, nullable for anonymous engagement. The consent basis is why the privacy review is open.
Consent statelead.consentStatusengagement.consentStateenum(4)
personalrestricted
Never checkedMust be present on every non-anonymous row. A missing consent state rejects the record outright rather than quarantining it.

What has passed the staging boundary against this contract

1 batch · 5,610 arrived · 5,406 admitted · 0 quarantined · 204 rejected

BatchArrivedInAdmittedQuarantinedRejectedResultGate
STG-0025Aug 18, 07:005,6105,4060204Partly admitted5,406 admitted · 0 quarantined · 204 rejected outright.

Rejects raised against these batches

1 reason covering 204 records. Each one names a field, what was observed and what the contract expected.

Consent state absent on a non-anonymous row204 records · 2 h oldFix at source
Observed: Absent on 204 contact records
Expected: A consent state on every non-anonymous row
STG-0025 · field consentState · queue reject · C. Delgado

Replay windows

No replay has been requested against this contract.

Write-back routes into this system

1 route designed against Marketing Automation.

suppress-from-campaign · ContactDesigned, never live
WB-MKT-01 · agent · authority MK5-AUTH-A1 · policy LG9-POL-200
2 attempted · 0 written to a production system
What this contract is, and what it is not

A contract, a validation rule, a freshness commitment and a replay path are real mechanisms and they are what this wave builds. What they are not is a connection. No connector on this estate is attached to a customer instance, so every batch, every replay and every write-back attempt recorded here ran against a modeled extract or a sandbox, and the registry keeps saying modeled.

This contract has never been validated against a sample. Every type, every cardinality statement and every validation rule on this page is a declaration taken from documentation, not an observation. Its drift state is unknown rather than clean.