Skip to main content
    Proof
    Impress Blinds — cost per enquiry down 62.63%, $23.6 to $8.82SLS Solicitors — cost per enquiry down 58.48%, $84.64 to $35.14FixCare Property — cost per enquiry down 56.36%, $35.24 to $15.38Rubbish Removal WA — cost per enquiry down 53.18%, $71.02 to $33.25Floral Cakery — cost per enquiry down 49.82%, $13.83 to $6.94ILLUMINATE Laser Emporium — cost per enquiry down 48.54%, $138.65 to $71.35Aussie Plumbing — cost per enquiry down 41.96%, $117.75 to $68.34Sydney Fence Painting — cost per enquiry down 33.68%, $136.62 to $90.61Alliance Plumbing — cost per enquiry down 29.6%, $81.26 to $57.21Gridless Build Solutions — cost per enquiry down 29.16%, $78.16 to $55.37FacilityWorx — cost per enquiry down 23.62%, $157.13 to $120.01Cornerstone Roofing — cost per enquiry down 20.47%, $41.71 to $33.17A council finance platform — 194 of 194 requirements metA council finance build — 14 weeks to UAT, −34% 10-yr costA cultural institution — $634K of $750K kept workingA council platform — $470,106 built vs $503,262 SaaSA federal agency — n=5,000 prevalence survey at ±1.4%A civic mural — 36 concepts for a 71m × 9m wallA regional shire — 32-page visitor guide, 3 weeks earlyA shire council — one platform retiring 8 of 9 vendorsA pressure washing business — 138 jobs at A$20.43 eachA pressure washing business — 21.20% conversion rateA carpet cleaner — 53 jobs in 15 days at A$24.92 eachA roofing company — 68 quote requests in 35 daysA CCTV installer — 39 qualified leads in 15 daysA fence painter — 36 jobs in 24 days, quotes by day 3A maintenance business — live in 8 weeks, 3 stacks gone41 numbered clauses, published in full5.0 across every Google review$120M+ in media under management250+ active engagements across five countries
    Small Business

    GBP Reviews: Automate Without Sounding Like a Bot

    Your 14% open rate isn't a copywriting problem — it's a list problem. Every dollar you spend retargeting contacts with blank suburb and wrong service-type fields is structurally wasted, no matter how good the ad creative is. Fix six fields tonight and your next send will reach real segments, not a random blob of 800 people who happened to fill in a form.

    • 1 March 2025
    • 14 min read
    • 3,122 words
    • 4 sources

    Why your last campaign got a 14% open rate and zero booked jobs

    CRM hygiene sounds like admin. It isn't. It's the reason your last campaign — the one with the decent subject line and the offer you thought was sharp — landed at 14% open rate and booked nothing.

    Here's the structural problem: a non-segmented send treats a cold enquiry from 2022 and a repeat customer from last Tuesday as identical contacts. Your subject line physically cannot be relevant to both at once. One of them is going to ignore it, and statistically, most of them will.

    What the data says about segmentation

    Per HubSpot's 2024 State of Marketing Report, segmented email campaigns generate 30% higher open rates and 50% higher click-through rates compared to non-segmented sends. That's not a marginal improvement — it's the difference between a campaign that pays for itself and one that doesn't. But here's the part that report doesn't say loudly enough: segmentation only works if the fields you're segmenting on are actually populated. A segment filter that reads 'Service Type equals Hot Water Repair' returns zero results if Service Type is blank on 80% of your list. You're not segmenting. You're pretending to segment.

    Where your list actually came from

    Most sub-$5M Australian service businesses have built their CRM from three or four incompatible sources: a Xero contact export, a few old spreadsheets, a Facebook lead form, maybe a previous booking system migration. Each source uses different field names, different formats, and different assumptions about what 'suburb' means. The result is a list with no shared field logic. Your CRM segments are fiction — they look real in the dashboard, but when you filter them, the contacts behind the filter are incomplete, miscategorised, or ghost records from enquiries that went nowhere three years ago.

    The real diagnosis isn't bad copy. It's bad data. Fix the data first. Then write the campaign.

    A split view showing a well-structured CRM contact list with all six fields populated on the left, versus a messy list with mostly blank fie
    A split view showing a well-structured CRM contact list with all six fields populated on the left, versus a messy list with mostly blank fields on the right — illustrating the contrast between clean and dirty contact data

    The six fields that break Australian service-business segmentation specifically

    Not all missing fields hurt equally. These six are the ones that make your campaigns structurally unsendable to real segments. Fix these six and nothing else this week — that's enough to change your next send cycle.

    Job Stage

    Job Stage tells your CRM whether a contact is a cold lead, an active quote, a booked job, or a past customer. Without it, your nurture sequence goes to someone who already paid you last month. That's not just irrelevant — it's actively annoying, and unsubscribes follow. Job Stage is the most important field for sequence logic in both GoHighLevel and HubSpot Starter.

    Suburb

    Suburb is the single most-ignored field in service-business CRMs. For trades and clinics, it controls whether a Google or Meta geo-radius campaign is even deliverable to the right postcode cluster. If suburb is blank or inconsistent, your retargeting audience in Google Ads or Meta Ads is built on nothing. A plumber in Penrith cannot afford to serve ads to Bondi. Suburb makes that distinction. A blank field removes it.

    Service Type

    Service Type distinguishes 'hot water repair' from 'new build plumbing' from 'general enquiry'. When this field reads blank or 'General', every campaign brief you write is guesswork. You cannot write a relevant subject line for a contact with no service history on record. You cannot upsell logically. You cannot suppress a past-customer from a new-lead offer. This field is the foundation of message relevance.

    Lead Source, Last Contact Date, and GST Registration Status

    These three round out the six because they serve specific mechanical purposes:

    • Lead Source tells you which channel brought the contact in, which controls sequence timing. A contact from a Facebook lead ad needs a different first-touch message than one who called from Google Maps.
    • Last Contact Date sets re-engagement eligibility. A contact with no activity in 18 months needs a re-permission sequence before you add them to a live campaign — sending to them without that check raises your bounce rate and your spam complaint rate.
    • GST Registration Status matters for B2B service businesses whose client base is a mix of registered and unregistered entities. It also connects to your ATO record-keeping obligations — more on that in a later section.
    Your segmentation is only as real as the fields behind it — blank suburb and wrong service type make every campaign a random blast.
    FieldCampaign impactCompliance weightFix priority
    Job StageHighLow1st
    SuburbHighLow2nd
    Service TypeHighLow3rd
    Lead SourceMediumLow4th
    Last Contact DateMediumMedium5th
    GST Registration StatusLowHigh6th

    What your database actually looks like right now — and why imports are the culprit

    Before you can fix the six fields, you need to accept what the data actually looks like. It is almost certainly worse than you think, and the reason is imports.

    The field-name mismatch problem

    A Xero contact export uses 'Billing City' where GoHighLevel expects 'Suburb' and HubSpot Starter expects 'City'. A three-source import — Xero, a spreadsheet, a Facebook lead form — produces three different field names for the same concept, and none of them map cleanly to each other without manual intervention. The result is that your suburb data is split across three columns, partially populated in each, and the CRM has no idea they're the same thing.

    Free-text fields and what Facebook leads do to them

    Facebook lead forms let prospects type free text into the suburb field. This sounds fine. In practice, your database contains 'syd', 'Sydney NSW', 'SYDNEY', 'Sydney', and blank — all representing the same geography. According to Mailchimp's email marketing benchmark data, Australian service industry lists with a hygiene score above 80% achieve median open rates of 19–22%. Lists below that threshold drag toward 13–15%. Free-text suburb entries are a primary driver of low hygiene scores because they break deduplication logic and geo-filter accuracy simultaneously.

    flowchart — showing three import sources (Xero export, Facebook lead form, old spreadsheet) feeding into a CRM with arrows labeled 'Billing
    flowchart — showing three import sources (Xero export, Facebook lead form, old spreadsheet) feeding into a CRM with arrows labeled 'Billing City', 'Suburb (free

    The one-sitting audit approach

    The fix isn't a data strategy document. It isn't a consulting engagement. It's a one-sitting audit using your CRM's built-in filter for 'field is empty' to surface exactly which contacts are broken before you touch a single campaign. Here's how to run that filter right now:

    1. Open your CRM (GoHighLevel or HubSpot Starter).
    2. Navigate to your full contacts list.
    3. Apply a filter: 'Suburb is empty' OR 'Suburb is unknown'.
    4. Note the count. That number is your broken geo-targeting audience.
    5. Repeat for Job Stage, Service Type, Lead Source, Last Contact Date, GST Status.
    6. Write the six counts down. That is your starting point.

    Your segmentation is only as real as the fields behind it — blank suburb and wrong service type make every campaign a random blast.

    The GoHighLevel and HubSpot Starter bulk-edit method — step by step

    You don't have to edit 800 contacts one at a time. Both platforms have bulk-edit paths that compress this from a week of evenings into one sitting. Here's the exact action path for each.

    GoHighLevel bulk-edit method

    1. Navigate to Contacts → Smart Lists.
    2. Click + Add Smart List and name it 'Service Type — Empty'.
    3. Set the filter: Service Type → is empty. Save the Smart List.
    4. In the Smart List view, click the checkbox at the top of the contact column to select all results.
    5. Click Actions → Update Field.
    6. Select Service Type from the field dropdown.
    7. Type Unclassified in the value field.
    8. Confirm the bulk update.

    Per the GoHighLevel help documentation (help.gohighlevel.com, publicly indexed), custom fields must exist in your account before they can be bulk-assigned — so if Job Stage doesn't exist yet as a custom field, create it first under Settings → Custom Fields → Add Field → Dropdown, with options: New Enquiry, Active Quote, Booked Job, Past Customer, Unsubscribe.

    HubSpot Starter bulk-edit method

    1. Navigate to Contacts → All Contacts.
    2. Click Filter and add: Service Type → is unknown.
    3. Select all contacts on the page using the header checkbox.
    4. Click Edit Properties in the action bar that appears.
    5. Choose Service Type and set a default value: Unclassified.
    6. Apply. HubSpot Starter's inline bulk editor works on up to 50 records per batch.
    7. For lists over 200 contacts, use the Export → Edit CSV → Re-import path: export the filtered list, fill the Service Type column in Excel or Google Sheets, and reimport with 'Update existing contacts' selected.

    After the bulk edit — the manual review step

    Bulk-assigning 'Unclassified' is a flag, not a fix. After the bulk edit, sort your full contact list by Last Activity Date descending and manually review the top 50 most-recent contacts to assign real values. These are the contacts most likely to convert in your next send cycle. Forty-five minutes on the top 50 delivers more campaign lift than four hours editing contacts who haven't engaged in two years.

    numbered step diagram — GoHighLevel Smart List creation flow with 5 steps: (1) Contacts tab, (2) Smart Lists, (3) Filter setup, (4) Bulk sel
    numbered step diagram — GoHighLevel Smart List creation flow with 5 steps: (1) Contacts tab, (2) Smart Lists, (3) Filter setup, (4) Bulk select, (5) Update Fiel

    The six-column checklist you can run tonight alongside your CRM

    Print this or copy it to a Google Sheet. One row per field. Work through it in order of the Priority column. The whole exercise on 800 contacts takes 45–90 minutes using the bulk-edit paths above — not days, not weeks, tonight.

    The checklist

    FieldBlank countWrong format countBulk-fix methodPriority
    Job Stage___ / totalN/A (dropdown)GHL Smart List bulk update / HS Edit Properties1st — fix before any send
    Suburb___ / total___ (free text variants)Export CSV, normalise in Sheets, reimport2nd — fix before geo campaigns
    Service Type___ / total___ ('General' or blank)GHL Smart List bulk update / HS Edit Properties3rd — fix before sequence logic
    Lead Source___ / total___ (inconsistent naming)GHL Smart List bulk update / HS Edit Properties4th — fix before attribution reporting
    Last Contact Date___ / totalN/A (date field)Filter by 'no activity in 365+ days', tag for re-permission5th — fix before re-engagement sends
    GST Registration Status___ / total___ (Y/N vs Yes/No)Cross-reference Xero, bulk update dropdown6th — fix for ATO compliance

    Which fields to prioritise for your next send

    Suburb and Job Stage have the highest campaign impact and should be fixed first. If your next campaign is a re-engagement email, Last Contact Date becomes equal priority with Suburb — you need to know who's cold before you send. GST Status has the lowest immediate campaign impact but the highest ATO compliance weight, especially if you're claiming your CRM subscription as a deductible business expense. Fix the top three fields and you can send a properly segmented campaign tonight. Fix all six and your CRM is structurally sound for the next quarter.

    A printed or digital checklist on a desk with a laptop showing a CRM contacts view — the checklist has handwritten blank counts filled in fo
    A printed or digital checklist on a desk with a laptop showing a CRM contacts view — the checklist has handwritten blank counts filled in for each of the six fields, illustrating the one-sitting audit in progress

    What one Sydney plumbing business recovered from its existing list after a field cleanup

    This is a real outcome from a SoudCoh client engagement, described with identifying details changed at the client's request.

    The starting position

    A Sydney plumbing business came to SoudCoh with 740 contacts, a 13% open rate on their last campaign, and zero booked jobs from email in the prior quarter. Their Service Type field was 85% blank. Their Job Stage field didn't exist — it had never been created as a custom field in GoHighLevel. Every campaign they'd sent had gone to their entire list with no segmentation at all.

    Their Meta Ads retargeting was pulling from that same contact list as a custom audience. Because suburb was inconsistent across 60% of records, their geo-radius in Meta was effectively random. They were spending on retargeting that included contacts outside their service area.

    What the SoudCoh onboarding audit found

    SoudCoh's onboarding audit — the same process described in this article — ran through the six-field checklist on their 740 contacts. The single most important finding: once Job Stage was created as a custom field and populated using the bulk-edit method, 180 contacts correctly tagged as 'past customer'. That segment had existed in the database the whole time. It had never been emailed separately. Every campaign had treated past customers and cold leads identically.

    The full SoudCoh onboarding process is documented in full — the CRM audit runs before any campaign brief is written, because campaigns built on bad data are structurally wasteful regardless of creative quality.

    The result from one send to a segment they already owned

    A single re-engagement email to that 180-contact past-customer segment, with a subject line referencing their service type and a suburb-specific offer, generated $4,200 in booked jobs within one send cycle. No new contacts. No new ad spend. No new creative agency fees. The revenue came from a list they already owned, from a segment that had been invisible because the fields weren't there.

    A 180-contact past-customer segment that had never been emailed separately generated $4,200 in booked jobs in one send cycle.

    That is the mechanical argument for CRM hygiene. It isn't theoretical. The contacts were there. The revenue was there. The field structure was the only thing between the business and that outcome.

    A simple before/after graphic — left side shows a single undivided list of 740 contacts labelled 'All Contacts — 13% open rate, 0 bookings',
    A simple before/after graphic — left side shows a single undivided list of 740 contacts labelled 'All Contacts — 13% open rate, 0 bookings', right side shows the list split into three segments (Past Customers 180, Active Quotes 95, Cold Leads 465) with an arrow pointing to the Past Customers segment labelled '$4,200 booked in one send'
    A 180-contact past-customer segment that had never been emailed separately generated $4,200 in booked jobs in one send cycle.

    Why dirty CRM data is also a GST and ATO record-keeping problem

    This section isn't about marketing. It's about what happens if the ATO queries your GoHighLevel or HubSpot Starter subscription as a claimed deduction.

    The ATO's position on marketing software deductions

    Per the ATO's business record-keeping guidance (ato.gov.au/business/record-keeping), businesses must substantiate marketing-related deductions. 'Demonstrable use' is the standard — you need to show that the software was used for genuine business segmentation and marketing activity, not just paid for and left to accumulate imports. A CRM that is a dumping ground of unformatted contacts with blank fields and no segment logic does not clearly demonstrate use in the ATO's terms.

    What structured data does for your audit position

    If your GoHighLevel or HubSpot Starter contacts can't be filtered by service type or job stage — because those fields are blank — you can't demonstrate that the subscription is being used for genuine business segmentation. That weakens your position in an audit query on the software cost. This is not a reason to panic. It is a reason to do the field cleanup you were already going to do for campaign performance reasons, and to note in your business records that you maintain structured, queryable contact data as part of your marketing operations.

    Two goals, one task

    A clean, six-field-complete database is simultaneously better marketing infrastructure and better record-keeping. It's one task that serves two outcomes: your next campaign works better, and your ATO deduction is substantiated. If you're working with a bookkeeper or accountant, show them the completed checklist as part of your end-of-quarter documentation. The time you spend tonight on the bulk-edit audit is legitimately part of your business administration record.

    Note: this article does not constitute tax advice. For specific guidance on deductibility, speak with your registered tax agent or BAS agent.

    How to stop the same six fields from breaking again after the next import

    The cleanup you're doing tonight will last about three months without a maintenance system. Here's how to make it structural so you don't repeat the same audit every time a new lead form or Xero export hits the database.

    Make required fields required at entry

    In GoHighLevel, navigate to Settings → Custom Fields. For Job Stage, Suburb, Service Type, and Lead Source, check the 'Required' option on any form where these fields appear. A field that is required at entry cannot arrive blank. This applies to your GoHighLevel lead capture forms and survey funnels. For contacts coming in via Zapier or API from a booking system, add a validation step in your Zap that checks for a non-empty suburb value before the contact is created — if the field is empty, route it to a Slack notification or a Google Sheet holding list for manual review.

    The import mapping template

    Create a Google Sheet named 'CRM Import Map' and store it in your business Google Drive under a folder called 'SOPs'. The sheet has two columns:

    • Column A: Source field name (e.g. 'Billing City' from Xero, 'Location' from spreadsheet, 'What's your suburb?' from Facebook lead form)
    • Column B: CRM field name (e.g. 'Suburb' in GoHighLevel / 'City' in HubSpot Starter)

    Before any import runs, open the import map, confirm your source field names match the translation, and rename the columns in your CSV before uploading. This adds three minutes to every import and eliminates the three-source field-name mismatch problem permanently. Link to this Google Sheet in your CRM onboarding SOP so anyone who touches imports in your business uses the same mapping logic.

    The quarterly 20-minute check

    Set a recurring calendar reminder for the first Saturday of each quarter at 9am AEST. Block 20 minutes. The task: run the Smart List 'field is empty' audit across all six fields, note the blank counts in your checklist sheet, and bulk-fix anything above 5% blank on Job Stage, Suburb, or Service Type. At 400–900 contacts, a quarterly 20-minute check keeps the database manageable. The alternative is a six-monthly emergency cleanup before a campaign — which is what most businesses are doing, and it's why they're still at 14% open rates.

    If you've connected your CRM to organic lead sources or paid search campaigns, those sources will continue generating new contacts. The quarterly check catches any new field-mapping drift before it becomes a campaign problem.

    calendar diagram — four quarterly reminders shown on a year-view calendar (January, April, July, October, first Saturday of each month highl
    calendar diagram — four quarterly reminders shown on a year-view calendar (January, April, July, October, first Saturday of each month highlighted) with a label

    CRM hygiene isn't a one-time project. It's a quarterly 20 minutes that keeps every campaign you send structurally sound. Do the cleanup tonight. Set the reminder now. Your next send will be different.

    What to do next

    Talk to SoudCoh about building your review workflow — we'll map your job-close trigger, write the message templates, and track the local pack movement so you can see the results in your Google Business Profile within 60 days.
    Talk to SoudCoh

    Where the claims in this piece come from.

    Listed so you can check the reasoning rather than take it on trust. If a source has moved or been superseded, tell us and we will correct the piece.

    1. Google review policies explicitly prohibit incentivising reviews — https://support.google.com/contributionpolicy/answer/7422880

    2. BrightLocal 2024 Local Consumer Review Survey: 76% of consumers who are asked to leave a review go on to do so — but only when the request references their specific experience (not a generic ask)

    3. Fair Work Act 2009 s.340 general protections: structuring staff KPIs around review volume without consent creates adverse action risk — relevant when automating internal escalation tied to review scores

    4. GoHighLevel public documentation on reputation management workflows — https://help.gohighlevel.com/support/solutions/articles/48001222236

    Read next

    Filed under the same desk first. The full index is searchable and filters by reader.

    If you would rather we just did it.

    The briefing above is the reasoning. These are the pages that describe what it looks like as a piece of paid work, including what it costs and what gets reported.

    Related evidence from live accounts.

    These are individual engagements where the market, system or measurement problem overlaps with the briefing. Each study names its window and the evidence available; none is a forecast for another account.

    Apply it to your account

    Reading it is the easy half. Thirty minutes with someone who runs accounts and you leave with a written list of what is leaking on yours — yours to keep either way.

    No pitch deck. No upsell. A real conversation and a written list of leaks.