Consent-Revocation Suppression Integrity Automation: Whoever Revoked Kept Being Contacted

The interface said "revoked." The database never received a row that said the same.
A consent-revocation feature can be implemented correctly at every layer a person actually sees — a clear toggle, a confirmation message, an updated status on screen — and still fail entirely at the one layer nobody sees directly: whether the specific database write meant to enforce that choice going forward actually succeeds. When that write is silently rejected and nothing downstream notices, the interface and the database tell two different stories, and only the database's version is the one that determines whether a message actually goes out.
How the underlying problem shows up before you fix it
A suppression or opt-out table is designed around one way of identifying a person (an e-mail address or phone number, paired with which kind it is), while the code writing to it assumes a different identifier (an internal contact ID) that the table was never built to store.
A revocation-handling function inserts a record and does not check whether the insert actually succeeded, so a database-level rejection and a successful write look identical to the interface reporting the outcome to a person.
A feature that reads as fully implemented from the user interface down to the confirmation message can still be entirely non-functional at the one database write that actually changes future behavior.
The absence of a suppression record produces no negative signal anywhere a person would normally look — the contact simply continues to appear eligible for outreach, which looks identical to a contact who never opted out at all.
A schema-validation gate built for one category of defect (a table name that does not exist) does not automatically catch a related but distinct defect (the right table, with the wrong set of fields) until the gate is specifically extended to check field names, not just table names.
How a database-level rejection with no visible symptom was traced back to a mismatched schema, and confirmed live
The consent-revocation handler's job is straightforward in principle: when a contact revokes consent, write a record that future outreach logic will check and refuse to act against. The handler did exactly that — it just wrote the record using the wrong shape. It supplied the contact's internal ID and a field describing which type of consent was revoked, when the actual suppression table identifies a record by the contact's e-mail address or phone number directly, tagged with which of the two it is, and carries no field for consent type at all. Because the database's own schema enforces this strictly, every attempted write was rejected outright.
The fix restructures the write to match what the table actually expects: before inserting a suppression record, the handler now looks up the contact's own e-mail and phone number directly, and writes the suppression keyed to whichever of the two identifies the revoking contact — populating both the identity type and the identity value the table's own schema actually requires. This is a structurally different lookup than the original code performed, not a renamed field on the same shape, because the suppression table was designed around identifying a person by a reachable address, not by an internal record id that a downstream send-check would have no reason to look up on its own.
This specific defect was found only after a broader schema-comparison gate — built to catch a database write pointed at a table name that does not exist — was itself extended to also verify the shape of what a write sends: comparing field names, not merely table names, against the live database's real schema. That extension is what surfaced this defect and several siblings in the same investigation, none of which the original, narrower version of the gate could see.
What is actually built today
When a contact revokes consent, Centriu Flow looks up that contact's own e-mail address and phone number directly, rather than relying on an internal identifier the suppression table was never built to store.
The suppression record is written with the identity type and identity value fields the real table actually requires — matching the table's own design rather than an assumption about it.
A schema-comparison gate now verifies field names, not merely table names, for every insert and upsert in the codebase — the extension that surfaced this specific defect and its close relatives in the same investigation.
The fix is a corrected identity lookup and write, not a new suppression mechanism — the same downstream send-check logic that was always meant to consult this table now has a real record to find.
This automation is specifically about the database write that turns a stated revocation into an enforced suppression — distinct from Centriu TrustOps's own separate consent-governance and audit-trail layer, a different system entirely.
No change to how a contact revokes consent from their own side — the interface and confirmation flow they interact with were already correct; the fix is entirely on the write that used to fail silently underneath it.
A revocation that looked processed and changed nothing (illustrative framing of the actual measured finding)
A contact clicks to revoke marketing consent, sees a confirmation, and reasonably assumes the matter is settled. Before the fix, the suppression record meant to enforce that choice fails to write, silently, and the very next scheduled campaign still considers that contact eligible — the revocation changed nothing about what actually happens next. After the fix, the identical revocation resolves the contact's e-mail or phone directly and writes a suppression record the send-check logic can actually find, and the next campaign correctly excludes them.
What changes operationally
A contact who revokes marketing consent through Centriu Flow now has an actual, enforceable suppression record created at the moment they revoke it — closing a gap where the interface reported success while the underlying database write silently failed every time.
When this is not the right fit
This automation governs the specific database write that turns a consent revocation into an enforced suppression inside Flow — it is not a general compliance-governance or audit-trail product; Centriu TrustOps serves that broader purpose as a separate system.
A feature that looks finished from the interface vs. one verified at the database it depends on
Confirming a consent-revocation feature works by checking that the interface shows a confirmation message tests exactly one layer of a multi-layer system — and it is precisely the layer least likely to reveal a database-level rejection happening underneath it. Centriu's fix was found and verified at the layer that actually determines behavior: whether the record a send-check depends on was ever really written, confirmed against the database's own live schema rather than assumed from how the interface responds.
Related systems
Main system: Centriu Flow.
What it does NOT do
- Does not change how a contact revokes consent from their own side — the interface and confirmation flow were already correct; the fix is the database write underneath it.
- Does not retroactively create suppression records for revocations that failed to write before this fix shipped — a workspace should audit its own historical revocations if this gap concerns a specific past period.
- Does not replace Centriu TrustOps's own consent-governance and audit-trail capabilities — this automation is specifically the database write inside Flow that enforces a revocation operationally.
- Does not suppress a contact for any reason other than an actual, recorded consent revocation — it does not add new criteria for who gets suppressed.
- Does not guarantee every possible consent-related defect in Flow has been found — this fix closes the specific, measured suppression-write gap found in this investigation.
- Does not change how outreach logic checks the suppression list — it ensures a real record exists there to be checked in the first place.
Security and governance
The suppression write resolves and matches a contact's own e-mail or phone number within the requesting account's own data before writing; no suppression record can be created against a contact belonging to a different account. Any business or contact data referenced remains subject to Brazil's LGPD (Law No. 13,709/2018). Full detail on access control lives at /governanca and /iso.
Pricing and contracting
Available by monthly subscription, with tiered plans. Values and terms come from the official pricing table at /precos (Centriu's central source — never restated here).
Frequently asked questions
Why did a consent revocation not actually stop outreach?
The handler tried to write a suppression record using a contact ID and a consent-type field, but the real suppression table identifies records by e-mail or phone number and has no consent-type column — every write was rejected, silently.
How was this found?
A schema-comparison gate built to catch writes pointed at nonexistent tables was extended to also compare field names, not just table names, against the live database schema — this defect and several related ones surfaced from that extension.
Is this the same as Centriu TrustOps's consent and compliance features?
No — TrustOps provides a separate governance and audit-trail layer; this automation is specifically the database write inside Flow that turns a revocation into an enforced suppression.
Were any revocations before this fix lost permanently?
The suppression records that failed to write before the fix were never created — a workspace concerned about a specific past period should review its own historical revocation requests directly.
Does a contact need to do anything differently to revoke consent now?
No — the interface and confirmation flow a contact interacts with were already correct; nothing about how a person revokes consent has changed.
What does Centriu Flow cost?
It is sold by subscription with a published starting price — exact current values are on the central pricing page.
See how Centriu Flow enforces a consent revocation the moment it happens
Reach our commercial team directly, or leave your details below — we'll follow up with guidance for your case.
