Skip to main content

    Construction & Contracting · project showcase · content operations

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

    A 21-column content calendar built so a contractor's crew can actually run it

    Most content calendars for trade businesses fail because they're written for marketers. This one is built around what a contractor's day actually produces: a job-site photo, a question a customer asked, a seasonal pressure everyone in the region already understands.

    At a glance

    The engagement in brief

    Services

    • Content
    • Organic Social
    • Content Systems
    • Local SEO

    Stack

    • Shared workbook
    • SharePoint asset library
    • Gamma
    • Meta
    • Google Business Profile

    The situation

    What we walked into

    A contractor's marketing team can produce content or run the business, and when the two compete the business wins, correctly. The calendar had to survive that. It also had to survive being handed between a client-side marketing contact, an agency team and a paid-media specialist without anyone losing the thread.

    The design constraint was a daily call with the client's marketing contact that had to produce one postable asset within two hours, five times a week, with three counting as an acceptable week.

    What we found

    The diagnosis

    1. 01

      A calendar with fewer columns is not a simpler calendar

      Every column removed becomes a question someone has to ask in a meeting. The 21-column schema is longer to look at and faster to run.

    2. 02

      Asset sourcing is the real bottleneck, not ideas

      The calendar carries an explicit Asset Needed and Asset Source column per row, because the reason a post does not ship is almost never that nobody had an idea.

    3. 03

      Seasonality in the trades is specific and local

      A Season Note column captures the regional weather and demand pattern that makes a topic land in one week and fall flat two weeks later.

    The number behind it

    What this is built around

    General contracting has one of the **lowest paid-search conversion rates (2.61%) and highest costs per lead ($165.67)** in home services (LocaliQ 2025) — so owned, evergreen content that ranks is the cheapest lead source a contractor has, and the only one that compounds.

    What we built

    The system

    The schema runs Date, Day, Week, Slot, Channel, Platform, Content Type, Content Pillar, Topic and Hook, Service Focus, Local Focus, Season Note, Asset Needed, Asset Source, Owner, Caption Direction, Suggested Caption Starter, CTA, Distribution, KPI Focus and Asset Links. Every row is single-line, and multiple asset links inside one cell are separated with a consistent delimiter so the cell stays scannable. Rows are never added or renamed by anyone other than the owner; assets are linked into the row that already covers that content. Generated social assets live in a dated folder in the client's own SharePoint and are referenced by direct file URL rather than by a sharing link, so the calendar does not break when permissions change.

    A 21-column content calendar built so a contractor's crew can actually run it — loopA repeating cycle of 7 steps, beginning at "Daily call with client" and feeding back into itself.Daily call with clientTopic + local angleAsset needed identifiedAsset sourced orgeneratedRow updated with linksPublishedLogged against KPI focus

    The sequence

    How it was delivered

    1. Week 1

      Schema design

      21-column schema agreed, prior months migrated to match

      Owner: OmniFlow

    2. Week 1

      Asset library

      SharePoint folder structure, naming convention, direct-URL rule

      Owner: OmniFlow + client

    3. Week 2 onward

      Daily cadence

      One postable asset per working day, two-hour ceiling

      Owner: Client marketing + OmniFlow

    4. Ongoing

      Weekly input

      At least one job-site photograph per week

      Owner: Client

    Outcome

    What shipped

    This entry makes no performance claim. It shows an operating system for content in a trade business and the constraints it was designed against.

    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 Business Profile

    Construction & Contracting · all locations

    Demo
    Business Profile performance
    Last 12 months

    Calls

    284

    +73.9%

    Direction requests

    538

    +59.1%

    Website clicks

    736

    +66.5%

    Searches shown

    10,011

    +81.3%

    Calls from the profile, by month

    AprJunAugOctDecFeb

    Dashed line marks the month the engagement started.

    How customers searchSearchesShare
    Discovery — category, product or service7,02070.1%
    Direct — business name or address2,32823.3%
    Branded — related brand6016.0%

    Google Analytics 4

    Construction & Contracting · all web data

    Demo
    Acquisition overview
    Last 12 months vs. preceding period

    Sessions

    4,748

    +79.5%

    Key events

    213

    +99.3%

    Session key event rate

    4.5%

    +1.3%

    Engagement rate

    59.1%

    +7.0%

    Sessions by month

    AprJunAugOctDecFeb

    Dashed line marks the month the engagement started.

    Session default channel groupSessionsKey eventsRate
    Organic Search2,042884.3%
    Paid Search1,188635.3%
    Direct756354.6%
    Referral439163.6%
    Organic Social324195.9%

    Honestly

    What we would do differently

    The earlier months of the calendar used a shorter schema and had to be migrated up to the fuller one rather than the new rows being squeezed down. Starting at the full schema would have avoided a migration.

    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.