home office, person, work, web design, business, workplace, monitor, computer, keyboard, screen, laptop, office work, independent, freelancer, success, graphic designer, designer, digital, nomad, home office, web design, web design, success, success, graphic designer, graphic designer, graphic designer, graphic designer, graphic designer, designer
Photo by cocoandwifi on Pixabay

Measurement

Part of Before you report digital PR results to a client, fix the measurement

UTM values and GA4 setup for a digital PR reporting dashboard

Concrete UTM values, a GA4 exploration with a key event and a five-number Looker Studio layout for a digital PR reporting dashboard, plus a consent note.

What to take away

  • Agree one UTM convention in writing before the first pitch goes out, then reuse it everywhere.
  • Build one GA4 exploration filtered to the campaign medium, so the client sees referral behaviour without organic brand traffic.
  • Write down what the dashboard excludesinternal traffic, bot filtering and cross-domain gaps.
  • Give the dashboard one named owner and a documented refresh date.
  • Keep raw exports and consent records beside the numbers, so every figure can be rebuilt.

Write the UTM convention before the first pitch

Agree one UTM convention in writing before any pitch goes out, then use it on every pitch URL. Set campaign source, medium and campaign name once, in lowercase, with one naming convention shared across the team.

UTM parameters are a form of link decoration, the ICO's term for adding extra information to the URL in a link that someone clicks on. The destination stays the same, which is why the values must be chosen once and kept stable.

ParameterExample valueRule for the team
utm_sourceoutletnameOne lowercase spelling per outlet, kept in a shared sheet
utm_mediumdigital-prThe same value on every pitch, never varied
utm_campaignhousing-data-storyNamed once per brief, then copied, never retyped

A tagged pitch URL then looks like https://client.example/data-report?utm_source=outletname&utm_medium=digital-pr&utm_campaign=housing-data-story. A custom medium such as digital-pr may not match a default GA4 channel rule, so filter on the medium itself, as the exploration below does.

Keep spaces, capitals and abbreviations out of the values. Mixed-case spellings can split one campaign across two rows in the report, and the client then sees two small campaigns where there was one.

Build one GA4 exploration for the campaign medium

One exploration filtered to the campaign medium shows referral behaviour without organic brand traffic mixed in. Build it once, save it, and let the dashboard read from it rather than rebuilding charts each month.

  1. Open Explore in GA4 and start a free-form exploration.
  2. Add session source, session medium and session campaign as dimensions.
  3. Add sessions and key events as metrics, after marking the client's own demo request or enquiry as a key event.
  4. Filter session medium to match digital-pr exactly, or whatever value your convention fixed.
  5. Save the exploration with the client name and the date of the last check.

Check the first week of data against the pitch sheet. If a source name appears that the sheet does not list, a link went out with a wrong or missing parameter, and it is easier to fix at that point than after the first report.

Read the exploration with the usual attribution limits in mind. GA4 shows sessions and key events by source, but attribution is a model, not proof, so report influence and say which model you used.

Connect the exploration to a dashboard view

Looker Studio has a Google Analytics connector that reads a GA4 property, so the view can pull sessions and key events by source and medium. Keep the top of the page to five numbers: placements, referring domains, referral sessions, assisted conversions and cost per placement.

Put the detail below in a filterable table. Placements and referring domains come from the placement log, not from GA4, so say where each number was taken.

Note what the dashboard excludes

Internal traffic, bot filtering and cross-domain gaps all change the totals. The client will notice any gap between your dashboard and their own analytics, so state the filters in writing before the first meeting.

Internal traffic
say whether staff and agency visits are filtered out.
Bot filtering
say which filter is on and who set it.
Cross-domain gaps
list any journey that passes between domains and may break the session.

Put the note on the dashboard itself, not in an email. A reader who opens the view in three months should find the exclusions without asking anyone.

Give the dashboard an owner and a refresh date

Match the refresh to the client's decision cycle. Monthly suits most retainers, with a live view for coverage counts. Daily refreshes add noise without changing decisions. Every dashboard needs one named owner and a documented refresh date shown on the page.

Does the chart feed a decision?

Does this chart feed a monthly decision?

Yes

Include it in the dashboard

No

Cut it as decoration

Label every figure with its source and date. A number without a source is a liability in a renewal meeting. Which numbers belong on the page is a separate question, covered in key metrics for clients and in the measurement guide.

Keep raw exports an auditor could rebuild from

Store the raw exports, the placement URLs and the date each link went live. If a placement is removed or changed to nofollow, the dashboard should reflect that instead of keeping the original count.

A quality checklist turns this into a monthly routine: export, date, file, then compare the dashboard totals with the export before the client sees them. Anyone on the team should be able to rebuild a figure from the stored files without asking the person who first built it.

Keep consent records beside the data

A dashboard that reads from analytics sits next to a legal question about the tracking underneath it, and in the UK that is the Privacy and Electronic Communications Regulations (PECR).

The ICO states that the statistical purposes and appearance exceptions mean you must provide users with a simple means of objecting, free of charge, to the storage or access.

Whether a client's setup qualifies is a decision for the site owner, so record the answer next to the exports. The data protection checks cover the wider duties around sources, lists and consent when a campaign touches personal data.

Common questions

Should every pitch URL carry UTM parameters?

Yes. Use the agreed source, medium and campaign values on every pitch URL. A link without them lands in the report under a generic source, which makes the referral view harder to read and harder to defend.

Who should own the dashboard?

One named person, shown on the page with the refresh date. Shared ownership means nobody checks the filters, and the client notices when two reports disagree.

How often should the dashboard refresh?

Match the client's decision cycle. Monthly suits most retainers, with a live view for coverage counts. Daily refreshes add noise without changing decisions.

More in Measurement