KamoCRM

The do-not-block list, the allowlist beside the do-not-contact list

Featurekamo-shared-library
Shipped
October 18, 2026 at 5:19 AM UTC
Author
Kamo
Commit
d854086

Owner 2026-10-15: "remove it and add it to a do-not-block list" (the company's own main line had been put on the do-not-contact list by a test call). For an organization's own numbers and staff lines, so a test call or a misheard phrase never blocks them. - DO_NOT_BLOCK (unique ORG_ID, CHANNEL, ADDRESS; CHANNEL CALL | SMS | EMAIL | ALL, ALL = a phone number's calls and texts, an address's email) and the append-only DO_NOT_BLOCK_EVENT trail (ADDED, REMOVED with its required reason, SKIPPED). - DoNotBlockList: add (idempotent; refused while the do-not-contact list holds the address on a covered channel: remove it there first, with a reason), removeById (reason of 3+ characters), protecting/isProtected, search, history, activity, entriesFor, recordSkipped. - DoNotContactList now takes the DoNotBlockList (constructor change; VOIPService, EmailService and kamoai-service declare both beans in the same push): find/isBlocked/filterBlocked never block a protected address on its channels; add() of a protected address SKIPS an automatic opt-out (VOICE_OPT_OUT, SMS_STOP, EMAIL_UNSUBSCRIBE) with a SKIPPED note and Added(null, false, keptBy), and REFUSES a person's add (MANUAL, IMPORT) with field doNotBlock and the sentence "{address} is on the do-not-block list for {channel} ({note}), so it can't be added to the do-not-contact list. Take it off Settings -> Phone -> Do not block first." DDL: voipservice **************** (applied 2026-10-18 04:16Z). Tests: DoNotBlockListTest (7, RED: did not compile on origin/main), DoNotContactListTest, **************** (both repositories' finders), SharedLibBeanSafetyTest.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing