← All Field Notes
GHL · Digital Marketing Agency · Oct 22, 2026

Our Consent Check Passed Every Night, Because The Tag It Was Looking For Had Never Been Created

Our Consent Check Passed Every Night, Because The Tag It Was Looking For Had Never Been Created

Key takeaways

Your CRM probably has a do not contact list. Somebody set it up with good intentions, the campaigns are built to skip it, and nobody has checked lately whether anyone can actually get onto it. We build on Go High Level in the Bay Area for our own business and for clients, and in September one of our own gates turned out to be exactly that: a list nobody could join.

What the check was supposed to do

One of the accounts we run is the social page for a networking group I belong to. A nightly build picks a clip or a photo from a meeting, cuts it, writes the caption and stages it for approval. Before any of that, it runs a consent check. Members can say they do not want to be filmed or tagged, and the build has to respect that before it touches a frame with a face in it.

The check was written the obvious way. Query the CRM for every contact carrying the "no film" tag, then for every contact carrying the "no tag" tag, and if either count comes back above zero, stop and look at who it is. From September 4 that check ran every night, logged "zero, zero", and the build went ahead. Zero meant nobody had opted out. That was the whole gate.

Diagram of the consent check from September 4 to 14: the account held 251 tags, neither consent tag was among them, the query asked for contacts carrying tags that had never been created, and ten nights of zero and zero read as clear

September 14

Ten days in, we were doing an unrelated pass on the account and pulled the full tag list. The CRM returned 251 tags. Neither of the two consent tags was on it. They were not misspelled or renamed. Nobody had ever created them.

Think about what that means for the check. A query for contacts carrying a tag that does not exist returns zero contacts, every time, forever. For ten nights the check had been incapable of failing, which is a different thing from passing. And a member who wanted to withdraw consent had nowhere to record it that the check would ever see. They could have told me in person, I could have agreed, and the next night's build would have read zero and gone ahead.

Nothing was posted that should not have been, as far as we can tell. That is luck, and I would rather not run a consent gate on luck.

What a real check looks like

Creating the two tags would have made the query mean something, and we could have stopped there. We did not. The fix was to stop asking the CRM about a category and start asking it about people.

The build keeps a roster file for the group, with each member's name and email. The real check walks that roster, looks each member up by email, and reads the tags on their actual contact record. On September 14 it found six of six members, every one carrying the group membership tags, and none carrying any film, photo or tag restriction. That is a result with information in it.

The tag query stayed in the build, demoted. It is a tripwire now: if somebody ever does create one of those tags and puts a member on it, the count goes above zero and we will notice. But its zero is never reported as clearance, because we now know exactly what its zero is worth.

Diagram of the real check: each member looked up by email from the roster and their own record read, six of six found with no restriction, the tag query kept only as a tripwire, plus the two neighbouring traps of a short chapter tag no contact carries and a generic member tag that returns the outreach list

Two neighbours of the same trap

The same pass turned up two more tags that looked like answers and were not. The group's membership lives on a long, specific chapter tag. A shorter version of that tag exists in the account's vocabulary too, and zero contacts carry it. Check the short one and the CRM tells you the members are not in the account at all, which is false. And the generic "member" tag returned 1471 contacts, which is not the group. It is the regional outreach list from a different campaign.

Of the three tags, only the long specific one gave a true count.

The honest lesson

A filter that returns nothing has told you one of two things. Either nothing matches, or the filter cannot match. From the outside those look identical, and the second one is more common than you would think, because the filter was written by someone who assumed the category existed.

Our rule since then: before a zero is allowed to mean clear, prove the check can find something. Put a test contact on the tag and watch the count go to one. If you cannot make the check fire on purpose, all you have is a log line.

What this means for Bay Area businesses running Go High Level

You do not need a nightly video build for this to bite. Any time an automation decides based on a tag, a smart list or a custom field being empty, the same question applies: can that field actually be set, and has anyone ever set it?

If you run Go High Level in the Bay Area and a gate in your account has read zero since the day it was built, it might be working. It might also be unable to do anything else. Find out which before you need it.

Want to build this yourself?

Join the On Point Tech Academy at optechsol.llc/academy. It's free, and we build live every Tuesday and Thursday.

Learn to build this yourself. Free.

The On Point Tech Academy costs nothing and never asks for a card. We build live every Tuesday and Thursday, 12:30 to 1:30 PT.

Join the Academy free ← Back to all Field Notes