GoHighLevelNotes

Custom values and fieldsMail merge is broken because the data model is a junk drawer

Most teams open a CRM and call it a system. Contacts pile up. Automations fire on junk tags. Reporting becomes a screenshot someone does not believe. The software is not the failure. The missing spec is.

00

The short version

Intern through CEO

Read it once, then stop negotiating with it. Custom values and fields for operators is a wiring job: see it → spec it → install it → review it. Objects, then edges, then one test conversion. You do not need a new tool to start. You need the first writer to land on one contact this week.

  1. 01

    Operators do not have a Custom values and fields problem because they lack GoHighLevel. They have it because mail merge is broken because the data model is a junk drawer.

  2. 02

    Wire these objects first: Custom fields (contact), custom values (account/location merge), field owner, form mappings, mail-merge templates, dead-field graveyard.

  3. 03

    Then these edges, in order: Form question → named custom field with an owner; never a new duplicate field · Account-level custom value → merge in emails/SMS; not stored as a contact tag · Mail merge send → test render using the spec fields; blanks are bugs · Dead field → removed or hidden; templates updated so they cannot call it

  4. 04

    Done looks like a test you can repeat: Submit a form that should fill three fields. Open the contact: names match the spec, no extras. Send a test email using custom values and fields. If merge is blank, fix mapping before adding a new field. Delete or hide one dead field the same day.

  5. 05

    Start here: Fields have owners

In even plainer words

Operators already have GoHighLevel. The leak is not a missing feature. Mail merge is broken because the data model is a junk drawer. Software did not cause it. A missing write-in did: the person exists in one tool and not in the pipeline.

Here is how you actually wire it. Name the objects: Custom fields (contact), custom values (account/location merge), field owner, form mappings, mail-merge templates, dead-field graveyard. Then connect these edges, in order: Form question → named custom field with an owner; never a new duplicate field · Account-level custom value → merge in emails/SMS; not stored as a contact tag · Mail merge send → test render using the spec fields; blanks are bugs · Dead field → removed or hidden; templates updated so they cannot call it. If you skip an edge, the next one is decoration. If you add a GoHighLevel feature first, you usually skip an edge without noticing.

Prove it with a test, not a screenshot. Submit a form that should fill three fields. Open the contact: names match the spec, no extras. Send a test email using custom values and fields. If merge is blank, fix mapping before adding a new field. Delete or hide one dead field the same day. How you know it worked on the board: Owner is named (or it will not run). If that number is a vibe, do not add traffic.

What to do this week, and only this week: Fields have owners An intern can run the objects page and one test conversion. A CEO should protect that from a second priority.

Who

Same system. Three jobs.

Read your row

Intern

What you actually do

Day one: export fields. Mark owner, used-by (form, workflow, merge), last written. Anything with no owner is a candidate for death. Do not add a field until you search for an existing one.

Operator

What you protect

You already feel mail merge is broken because the data model is a junk drawer. Mail merge is broken because the data model is a junk drawer. Protect one sequence for 90 days. The four moves are see it → spec it → install it → review it. The edges are Form question → named custom field with an owner; never a new duplicate field then Account-level custom value → merge in emails/SMS; not stored as a contact tag. A working CRM is a data model with owners: pipelines that have exit rules, fields that mean one thing, forms that write to the spec, and a weekly number a human will defend. Until that exists, more funnels are decoration.

CEO

What you refuse to fund

This is a money leak, not a preference about tools. Most teams open a CRM and call it a system. Until owner is a number you will defend, buying more traffic or more seats makes the leak more expensive. Refuse a second database: Form question → named custom field with an owner; never a new duplicate field.

Example

A Tuesday that looks familiar

Before / after

Before

Tuesday. Someone among operators. Mail merge is broken because the data model is a junk drawer. GoHighLevel is open. A colleague asks where a person sits. The answer is a screenshot, a Slack thread, or “I think they’re interested.” The writer (form, calendar, shop, or phone) and the pipeline are two databases.

After

Same Tuesday, after write-in exists. A working CRM is a data model with owners: pipelines that have exit rules, fields that mean one thing, forms that write to the spec, and a weekly number a human will defend. Until that exists, more funnels are decoration. Form question → named custom field with an owner; never a new duplicate field The next move is written. That is the difference between a login and a system.

Worked example

Keep it this plain. A person in operators already paid for GoHighLevel. Mail merge is broken because the data model is a junk drawer. They add a page, a form, a calendar. None of it writes into a spec. By Friday the calendar has ghosts and the pipeline still looks like the snapshot.

The fix is not a better template. A working CRM is a data model with owners: pipelines that have exit rules, fields that mean one thing, forms that write to the spec, and a weekly number a human will defend. Prove write-in: Submit a form that should fill three fields. Open the contact: names match the spec, no extras. Send a test email using custom values and fields. If merge is blank, fix mapping before adding a new field. Delete or hide one dead field the same day. This week is one move: Fields have owners If that feels too small, that is the point. Operators fail by starting at move four.

01

Leak versus system

GoHighLevel

The leak

Most teams open a CRM and call it a system. Contacts pile up. Automations fire on junk tags. Reporting becomes a screenshot someone does not believe. The software is not the failure. The missing spec is.

The system

A working CRM is a data model with owners: pipelines that have exit rules, fields that mean one thing, forms that write to the spec, and a weekly number a human will defend. Until that exists, more funnels are decoration.

How it actually works

Start with how you actually sell, not with how the snapshot was demoed. Name stages as jobs, not moods. Separate source, offer, and status. If a new hire cannot explain a contact in thirty seconds, you do not have an operating system — you have a database with anxiety on top.

Fields have owners. Custom values are documented.

A working CRM is a data model with owners: pipelines that have exit rules, fields that mean one thing, forms that write to the spec, and a weekly number a human will defend. Until that exists, more funnels are decoration.

Mail merge breaks because the data model is a junk drawer. Custom fields are contact facts with owners. Custom values are account-level strings (from-name, calendar URL, address) you reuse in templates. Mixing them is how one location's email still says another location's city. Forms write to the spec — the field picker, not 'create new' because someone was in a hurry. Dead fields stay in templates like landmines. Remove them.

Wire every form to the spec before you build the next workflow that reads a field. If two fields mean 'budget', workflows will fork. Document custom values in the same page as fields so a new hire does not invent {{missing}}. Test merge on a real contact, not the preview with fake tokens. Blanks are mapping bugs, not 'they'll fill it in later'.

Two databases: fields in GHL, a spreadsheet 'real' tracker, and merge tokens that still reference snapshot defaults. The intern's job is the inventory and the test send. They do not create a 'budget2' field. If snapshots reintroduce junk fields, governance is the next wire — but today, hide them and fix the forms. Until a stranger can name field vs value, you will keep writing emails that say @first_name.

Wire

How to connect it

Objects, then edges, then a test

Custom fields (contact), custom values (account/location merge), field owner, form mappings, mail-merge templates, dead-field graveyard.

  1. 01

    Form question → named custom field with an owner; never a new duplicate field

  2. 02

    Account-level custom value → merge in emails/SMS; not stored as a contact tag

  3. 03

    Mail merge send → test render using the spec fields; blanks are bugs

  4. 04

    Dead field → removed or hidden; templates updated so they cannot call it

Prove write-in

Submit a form that should fill three fields. Open the contact: names match the spec, no extras. Send a test email using custom values and fields. If merge is blank, fix mapping before adding a new field. Delete or hide one dead field the same day.

Day one: export fields. Mark owner, used-by (form, workflow, merge), last written. Anything with no owner is a candidate for death. Do not add a field until you search for an existing one.

02

The spine

Scan first
01

See it

Fields have owners

02

Spec it

Custom values are documented

03

Install it

Forms write to the spec

04

Review it

Dead fields are removed

Steps

Do this in order

Why, then done when
  1. 01

    Write the leak in one sentence

    On one line, for operators: Mail merge is broken because the data model is a junk drawer. Add who gets hurt (calendar, cash, inbox, or reputation). If two people write different sentences, you do not agree yet — stop and agree.

    Why: Teams skip this and jump into settings. Then every person is fixing a different problem with the same login.

    Done when: One sentence. Shared. No adjectives required.

  2. 02

    Name the objects

    Custom fields (contact), custom values (account/location merge), field owner, form mappings, mail-merge templates, dead-field graveyard.

    Why: If objects aren't named, software invents a second database.

    Done when: A stranger can list them.

  3. 03

    See it

    Fields have owners Then wire: Form question → named custom field with an owner; never a new duplicate field

    Why: Operators cannot skip this edge. Mail merge breaks because the data model is a junk drawer. If it is not true, GoHighLevel is already a second database.

    Done when: Form question → named custom field with an owner; never a new duplicate field is true on a test.

  4. 04

    Spec it

    Custom values are documented Then wire: Account-level custom value → merge in emails/SMS; not stored as a contact tag

    Why: Operators skip this and the leak returns as a private language. Wire every form to the spec before you build the next workflow that reads a field. Spec tags, fields, and states have to be the same objects the next workflow will read.

    Done when: Account-level custom value → merge in emails/SMS; not stored as a contact tag is true on a test.

  5. 05

    Install it

    Forms write to the spec Then wire: Mail merge send → test render using the spec fields; blanks are bugs

    Why: Operators feel this as Mail merge is broken because the data model is a junk drawer. Two databases: fields in GHL, a spreadsheet 'real' tracker, and merge tokens that still reference snapshot defaults.

    Done when: Mail merge send → test render using the spec fields; blanks are bugs is true on a test.

  6. 06

    Prove write-in

    Submit a form that should fill three fields. Open the contact: names match the spec, no extras. Send a test email using custom values and fields. If merge is blank, fix mapping before adding a new field. Delete or hide one dead field the same day.

    Why: Calendar full + pipeline empty means two databases.

    Done when: One test conversion, one contact, right stage/state.

  7. 07

    Put a number on the wall

    Every Monday, look at Owner (Or it will not run), then weekly number (Or reporting is theatre). Write one action or write “hold.” A dashboard with no action is theatre.

    Why: What gets reviewed gets run. What only lives in a tool gets ignored the week someone is busy.

    Done when: Three numbers. One owner. Fifteen minutes. Actions attach.

  8. 08

    Finish one move this week

    Fields have owners

    Why: Operators fail by starting at move four. Interns fail by making a 40-item checklist. CEOs fail by adding a second priority. One proven write-in beats an elegant plan.

    Done when: The move is true, or you can name the blocker in one sentence.

Walkthrough

The four moves, expanded

Same spine. More words.
01

Name the objects

Custom fields (contact), custom values (account/location merge), field owner, form mappings, mail-merge templates, dead-field graveyard.

If objects aren't named, software invents a second database.

Mail merge is broken because the data model is a junk drawer.

02

See it

Fields have owners Then wire: Form question → named custom field with an owner; never a new duplicate field

Operators cannot skip this edge. Mail merge breaks because the data model is a junk drawer. If it is not true, GoHighLevel is already a second database.

On GoHighLevel, this means the data model matches how operators actually work — not the snapshot demo. Edge: Account-level custom value → merge in emails/SMS; not stored as a contact tag

03

Spec it

Custom values are documented Then wire: Account-level custom value → merge in emails/SMS; not stored as a contact tag

Operators skip this and the leak returns as a private language. Wire every form to the spec before you build the next workflow that reads a field. Spec tags, fields, and states have to be the same objects the next workflow will read.

A working CRM is a data model with owners: pipelines that have exit rules, fields that mean one thing, forms that write to the spec, and a weekly number a human will defend. Until that exists, more funnels are decoration.

04

Install it

Forms write to the spec Then wire: Mail merge send → test render using the spec fields; blanks are bugs

Operators feel this as Mail merge is broken because the data model is a junk drawer. Two databases: fields in GHL, a spreadsheet 'real' tracker, and merge tokens that still reference snapshot defaults.

Fields have owners

Why

Questions people actually ask

Pushback is normal

Why not just buy another GoHighLevel feature?

Because the login already exists. Most teams open a CRM and call it a system. Contacts pile up. A new feature on a missing spec is a second database. Finish this edge first: Form question → named custom field with an owner; never a new duplicate field.

Why start with objects instead of a workflow?

Day one: export fields. Mark owner, used-by (form, workflow, merge), last written. Anything with no owner is a candidate for death. Do not add a field until you search for an existing one. Workflows on unnamed objects fire on folklore. Name contact (or profile), stage or state, and the writer (form, calendar, metric) before any on-switch.

What does “wired” actually mean?

A test conversion creates or updates one person, on the right stage or state, with the fields the next sequence will read. Submit a form that should fill three fields. Open the contact: names match the spec, no extras. Send a test email using custom values and fields. If merge is blank, fix mapping before adding a new field. Delete or hide one dead field the same day. If you merge after the test, identity is wrong — fix that, do not add a dedupe automation.

Why write it down if the team already knows?

If it is only in someone's head, a new hire needs a story, reporting cannot be defended, and automations fire on folklore. Writing is how two people mean the same object on Monday.

Why does this keep coming back after we 'set it up'?

Because setup was a project, not a review. Stop rule (Or you will scale the leak) is how you stop the leak returning dressed as a new feature. Start with how you actually sell, not with how the snapshot was demoed. Name stages as jobs, not moods. Separate source, offer, and status. If a new hire cannot explain a contact in thirty seconds, you do not have an operating system — you have a database with anxiety on top.

Why should operators care about this versus more leads?

More leads into a leak is a more expensive leak. A working CRM is a data model with owners: pipelines that have exit rules, fields that mean one thing, forms that write to the spec, and a weekly number a human will defend. Until that exists, more funnels are decoration. Watch owner before you buy traffic. If that number is folklore, acquisition is a vanity spend.

What if we do not have time?

Then you only have time for the objects page and one test conversion. Fields have owners That is the intern version of strategy. Protect it from a second priority for seven days.

03

Skip this / do this

Same four moves

Skip this

Leaving objects unnamed because GoHighLevel is “set up”.

Do this

Custom fields (contact), custom values (account/location merge), field owner, form mappings, mail-merge templates, dead-field graveyard.

Skip this

Building a workflow or flow before a writer lands on one contact.

Do this

Form question → named custom field with an owner; never a new duplicate field

Skip this

Calling it done because a screenshot looks busy.

Do this

Submit a form that should fill three fields. Open the contact: names match the spec, no extras. Send a test email using custom values and fields. If merge is blank, fix mapping before adding a new field. Delete or hide one dead field the same day.

Skip this

Leaving “Review it” to chance.

Do this

Dead fields are removed

Misses

How this usually goes wrong

Then the fix

The usual miss

Calling GoHighLevel “set up” because someone logged in and imported a snapshot.

Do this instead

Fields have owners Then prove write-in: Submit a form that should fill three fields.

The usual miss

Building the workflow or flow before the writer (form, calendar, shop event) lands on one contact.

Do this instead

Connect Form question → named custom field with an owner; never a new duplicate field first. Automations on a missing writer invent a second database.

The usual miss

Adding a page, form, flow, or campaign every time last week hurt.

Do this instead

Name which edge is missing. Fix that edge. Hurt is usually a skipped write-in, not a missing asset.

The usual miss

Reporting that nobody will defend in a meeting — screenshots, vanity opens, 'interested' counts.

Do this instead

Owner: Named. Or it will not run. If you cannot say it out loud, it is not a scoreboard.

The usual miss

Hiring or retaining an agency to invent the spec while also running the calendar.

Do this instead

Hands on a known sequence are useful. Hands inside a missing spec pick the louder job (the calendar) and the leak stays.

04

What to watch

A scoreboard

Owner

Named

Or it will not run

Weekly number

Believed

Or reporting is theatre

Stop rule

Written

Or you will scale the leak

This week

Fields have owners

01

Fields have owners

02

Custom values are documented

03

Forms write to the spec

04

Dead fields are removed

Want the longer lesson, not the page for this niche? A CRM login is not a system

Working notes

Think with AI

How to think with machines without turning your business into a prompt farm. Request the file. It arrives by email — not a public dump, not a drip of slogans.

Request the notes ↗
Next

Talk through the sequence.

Email and WhatsApp stay open. A call is for installing the system.