Skip to main content

    Startups & Scaleups · project showcase · list operations

    Project ShowcaseReal client work that shipped. No performance figures are published, because none have been verified and approved for release.

    A list standard written so a 500-row education list can still be re-segmented a year later

    Most outreach lists are built for one send and are unusable afterwards, because the personalisation was written *over* the source data rather than beside it. This standard specifies the columns, fit rules and checks that must pass before a row enters a campaign.

    At a glance

    The engagement in brief

    Services

    • Outbound
    • Content Systems
    • Email Marketing

    Stack

    • List workbook
    • Column schema
    • Segment tabs
    • Quality checklist

    The situation

    What we walked into

    A list is the only asset in an outbound campaign that can appreciate. The copy is spent when it is sent and the send infrastructure is a running cost, but a list that keeps its source data and its segmentation gets better every cycle. Most lists do the opposite: they arrive as a clean export, get flattened into a name and a merge field for one campaign, and are rebuilt from scratch three months later at full cost.

    Personalisation columns are added beside the source data, never written over it. That one rule is the difference between an asset and a disposable file.

    What we found

    The diagnosis

    1. 01

      Original columns are never overwritten, only added to

      Every source column that arrived in the export stays in the workbook untouched. Personalisation lives in new columns to the right. It costs nothing at build time and it is the only reason the list can be re-cut by role, level or region for the next campaign.

    2. 02

      Personalisation columns are written, not generated

      A subject column and an invite column per row, drafted against the actual copy and read by eye. The no-placeholder rule is absolute: an unresolved merge field that ships is worse than a blank field, because a blank reads as plain and a broken token reads as careless.

    3. 03

      Fit is a binary column, not a judgement call made at send time

      Education-only means school, district, charter or private-school leadership. Anything else is removed rather than kept in case it is useful later, because 'in case' is how a clean list becomes a directory.

    4. 04

      A list without segmentation is a list you can only send once

      The segment tag is what makes a second campaign cheap. Without it the next cycle either sends everyone the same message or pays to rebuild the segmentation that was already done.

    The number behind it

    What this is built around

    The webinar (the classic startup TOFU play) is the weakest top-of-funnel and strongest mid-funnel instrument in the matrix — ~**57% of registrants attend** (ON24 2025) — which only pays off if the list feeding it can be re-cut for the next campaign instead of being burned on the first.

    What we built

    The system

    The workbook keeps the source export intact on the left and adds, in order: fit check, role function mapping, level, segment tag, personalised subject, personalised invite, placeholder check and row owner. The fit check and the placeholder check are both binary columns so that a list can be audited by filtering rather than by reading. Segments live as views over the one workbook rather than as separate files, because separate files diverge within a fortnight. A list is not released to a campaign until every row has a completed fit check and a completed placeholder check, including the rows that pass.

    A list standard written so a 500-row education list can still be re-segmented a year later — stackA stack of 9 connected layers, from "Source export (columns preserved)" through to "Row released (500+ per list)", each feeding the one below it.Source export (columns preserved)Fit check: education onlyRole function mappingLevelSegment tagPersonalised subject columnPersonalised invite columnPlaceholder checkRow released (500+ per list)

    The sequence

    How it was delivered

    1. Week 1

      Column schema

      Schema agreed, preserved-columns rule written, binary check columns defined

      Owner: OmniFlow

    2. Week 1

      Fit and function pass

      Education-only fit applied, role function mapped across the common label variants

      Owner: OmniFlow

    3. Week 2

      Personalisation pass

      Subject and invite written per row against the actual campaign copy

      Owner: OmniFlow

    4. Week 2

      Release check

      Filter on both binary columns; no row released with an incomplete check

      Owner: OmniFlow

    Outcome

    What shipped

    This entry makes no performance claim. It documents a list standard and the specific waste it was written to prevent: rebuilding a segmented list from scratch every campaign because the first campaign flattened it.

    Reporting

    What you would actually see

    These are the surfaces this engagement is run and measured from, shown with representative figures built around the benchmarks cited on this page. Every account we run reports into views like these, and you keep ownership of all of them.

    These are demo dashboards. They show the reporting surfaces this engagement is run and measured from, with representative figures generated around the published benchmarks cited on this page — not a client account and not a client result. Live reporting for your own account replaces every number here.

    Google Analytics 4

    Startups & Scaleups · all web data

    Demo
    Acquisition overview
    Last 12 months vs. preceding period

    Sessions

    5,037

    +47.5%

    Key events

    214

    +59.3%

    Session key event rate

    4.3%

    +1.2%

    Engagement rate

    62.5%

    +7.1%

    Sessions by month

    AprJunAugOctDecFeb

    Dashed line marks the month the engagement started.

    Session default channel groupSessionsKey eventsRate
    Organic Search1,9501196.1%
    Paid Search1,232524.2%
    Direct802445.5%
    Referral568223.9%
    Organic Social485193.9%

    LinkedIn Campaign Manager

    Sponsored Content · Startups & Scaleups audience

    Demo
    Campaign performance
    Last 12 months

    Impressions

    131,581

    +42.1%

    Clicks

    728

    +46.3%

    CTR

    0.6%

    +0.23%

    Cost per lead

    $196.59

    -22.9%

    Impressions by month

    AprJunAugOctDecFeb

    Dashed line marks the month the engagement started.

    CampaignImpr.ClicksLeadsCPL
    Thought leadership — practice leads44,73824820$196.59
    Problem-aware — retargeting34,21118915$196.59
    Case study download28,94816013$196.59
    Webinar registration23,68513111$196.59

    Honestly

    What we would do differently

    The first build treated the placeholder check as something to do at the end, which meant it was done under time pressure on the day of the send, which is the one condition under which it does not get done properly. It is now a column that has to be filled as each row is personalised, so it cannot be deferred to a moment when nobody has time for it.

    Next

    Start the same conversation

    Start the same conversation

    Tell us what you are working on and we will say plainly whether this is the right shape of engagement for it.

    We use your details only to respond to this request. No lists, no resale.