All articles
Guide ·

Custom Reporting Playbook for Marketing Teams

Build custom reporting that drives decisions. Learn key metrics, report designs, and how 302.sh analytics fit your dashboards.

  • custom reporting
  • marketing analytics
  • report design
  • dashboards
  • 302.sh

You know the feeling. The dashboard says traffic is up, the summary card looks fine, and then someone asks a real question, like which campaign brought repeat visitors from a specific country on mobile, or whether the QR code from last week's event sent people to the right page. The stock view doesn't answer it, the export is messy, and the analyst who built the original report is already in another meeting.

Custom reporting exists for that moment. It moves you from what the tool wants to show to what your decision needs, and that shift has been part of the evolution of digital analytics for years, from fixed dashboards to user-defined measurement in mainstream platforms like Google Analytics and Criteo's analytics stack. In practice, the value is simple, you stop guessing from broad aggregates and start asking sharper questions of your own data.

Table of Contents

The Moment a Stock Dashboard Stops Being Enough

A growth lead opens the dashboard after a launch and sees healthy click totals. That's useful for a sanity check, but it doesn't answer the question that matters before the next budget meeting, which channel brought visitors who came back, on what device, and from which geography. Once that question comes up, the default report turns into a dead end.

That's usually the point where teams start exporting CSVs, stacking filters in ad hoc ways, or asking an analyst to “just pull one more view.” The problem isn't the data itself. The problem is that the report was built for a generic audience, while the decision in front of you is specific.

Practical rule: if the dashboard can't help you choose between two actions, it's too generic for the job.

Modern analytics platforms already reflect this reality. Google Analytics' legacy custom reports required at least one dimension and one metric, so you could choose combinations like City + Browser instead of accepting a preset view, and GA4's guidance lets users build overview or detail reports with up to 4 metrics in an overview report and up to 16 cards in a report, which shows how the model has shifted toward self-service exploration rather than fixed output. That broader shift matters because the same event data can be reorganized for marketing, product, or executive use without changing the underlying source data.

The useful mental model is straightforward. Custom reporting is the bridge between raw telemetry and a decision someone has to make. It works best when you know the question first and treat the report as a tool for answering it, not as a prettier dashboard.

What Custom Reporting Means

A custom report is a defined slice of your own data, with the rows, numbers, filters, and layout chosen for a specific question. IBM's guidance is direct about the underlying idea, when standard reports are not enough, a custom report becomes a report specification that defines the queries and prompts used to retrieve data, which means the report is part of the logic, not just the presentation.

The restaurant comparison is tidy, but it hides the core trade-off. A stock report gives you a fixed plate of fields chosen for broad use, while a custom report lets you decide which ingredients matter for this decision, this audience, and this week's work.

A diagram illustrating the four key components of custom reporting: data, dimensions, metrics, and filters.

The three building blocks

Every useful report starts with dimensions and metrics. In Google Analytics guidance, dimensions can include things like device, city, browser, traffic source, and behavior, while metrics are the numbers you want to compare against those slices. You can then add filters to isolate the subset that matters, such as a country, a device type, or a specific campaign.

The practical sequence is simple.

  • Choose one or more dimensions. These are the rows in the report, like campaign, country, or browser.
  • Choose one or more metrics. These are the numbers, like clicks, sessions, revenue, or conversion rate.
  • Add filters and date ranges. These narrow the dataset so you are not mixing unrelated activity into the same view.

Criteo's analytics documentation shows how broad the metric vocabulary can be in real tools, with custom-report metric families that include ROAS, conversion rate, CTR, CPC, and volume measures like clicks, visits, and sales, plus efficiency measures such as CPM, CPO, and cost per visit. That is the discipline. A small team does not need every field in one report, but it does need the right field set for the question in front of it. For a practical example of how that kind of data can be surfaced, 302.sh click analytics keeps a tight view of recent activity without forcing a bigger reporting stack.

What makes it reproducible

A good report is repeatable. If someone else runs the same specification next week, they should get the same answer from the same data boundary. That is why query definition matters as much as visualization, and why clean reporting work starts with structure, not styling.

When the report is built well, it becomes an auditable artifact instead of a one-off spreadsheet. When it is built badly, it becomes a screenshot with no clear lineage.

The Metric Families That Earn a Spot in Custom Reports

The fastest way to ruin a report is to fill it with numbers that don't change a decision. I usually sort metrics into three families, acquisition, behavior, and outcome, because that's how teams use the data when they're under pressure.

A diagram illustrating three key metric families for custom reporting: Acquisition, Behavior, and Conversion metrics.

Acquisition metrics answer where traffic came from

Acquisition forms the first layer of the report. It provides a view of clicks, visits, source, device, and country, the sort of fields that help you understand who showed up and how they got there. In Google Analytics and Criteo-style reporting, these are the columns that let you separate a channel problem from a geography problem or a device problem.

Use acquisition metrics when you need to compare campaigns, spot weak referrers, or see whether one market is overperforming. If a report doesn't help someone decide where to spend attention, the acquisition section is probably too broad.

Behavior metrics explain what people did next

Behavior is where referrer, time of day, and repeat visits become useful. These fields don't close the loop on their own, but they tell you whether the audience is coming back, whether timing matters, and whether the traffic source is driving meaningful engagement rather than one-and-done clicks.

Teams often stop too early. They track acquisition and outcome, then miss the behavior layer that explains why the outcome moved. A report with behavior context is harder to build, but easier to trust.

Useful filter: if a metric won't change a decision in the next seven days, it doesn't deserve a slot.

Outcome metrics keep the report tied to business value

Outcome metrics include ROAS, conversion rate, CTR, CPC, CPM, CPO, and the volume fields that sit closest to the commercial result. Criteo's published metric families are a good reference because they show the mix clearly, not every outcome is revenue, and not every efficient campaign is the one with the most clicks.

For teams managing short links, QR campaigns, or paid acquisition, this is the layer that stops the report from becoming decorative. If you can't connect the report to a result that matters, trim it back. A tight metric set is easier to maintain, easier to explain, and easier to act on.

For link-focused workflows, the breakdown in 302.sh's link analytics overview is a useful example of how click data, source context, and destination logic can live in the same reporting conversation.

CSV Export, API Pull, or BI Tool, Picking Your Build Path

Small teams waste a lot of time by choosing the wrong build path on the first try. They either overbuild an API pipeline for a report that should've stayed in a spreadsheet, or they keep exporting CSVs for a view that clearly needs to refresh on a schedule.

CSV export works when the question is temporary

CSV is the right answer for a one-off analysis, a launch recap, or a sanity check before a meeting. It's quick, low friction, and usually good enough when you're still figuring out what the report needs to say. The trade-off is obvious, manual exports drift, version control gets messy, and the person who owns the spreadsheet becomes the bottleneck.

Use CSV when the report is short-lived or the team is still proving the question is worth formalizing. Don't turn a temporary task into a permanent process just because the export button is easy to find.

API pulls make sense when the report repeats

An API-driven pipeline is the best fit when the same report needs to run on a schedule and the format needs to stay stable. IBM's view of custom reporting as a report specification fits this pattern well, because the logic lives in the query definition and the output becomes reproducible. That's useful when more than one person depends on the same numbers.

The downside is maintenance. Someone has to own the request logic, the field mapping, and the failure handling. If your team doesn't have that bandwidth, the pipeline becomes a liability instead of an asset.

BI tools help when the report needs to be explored

A BI tool like Looker Studio, Metabase, or a hosted equivalent is the middle ground for ongoing analysis. It gives you interaction, filtering, and visual inspection without forcing every user to touch raw exports or code. For a five-person growth team, this is often the sweet spot when the same report feeds weekly reviews, campaign analysis, and executive readouts.

The catch is that BI tools still need disciplined inputs. If the upstream data model is sloppy, the dashboard just makes the mess easier to look at.

Build path Best use case Main trade-off
CSV export One-off analysis Manual and easy to drift
API pull Recurring report Requires ownership and upkeep
BI tool Ongoing analysis Depends on clean source logic

If you're choosing between convenience and durability, let the audience decide for you. Solo creators usually start with CSV and move up only when the same report keeps resurfacing. Agencies and small growth teams hit the API or BI threshold sooner because they're serving more stakeholders and need consistent output.

Building a Custom Report in Five Practical Steps

A report gets useful fast when you build it in the right order. The order matters because it keeps you from polishing the layout before you've decided what the report is measuring.

Start with one sentence

Write the question in one sentence before you touch the tool. For example, “Which referers drove the most qualified clicks from mobile users in Canada last week?” That sentence forces you to choose the fields that matter and ignore everything else.

Pick the metric pair

Choose one primary metric and one supporting metric. If you're looking at traffic quality, the primary metric might be clicks and the supporting metric might be repeat visits or conversion rate. The point is not to make the report thin, it's to make it legible.

The first draft should feel almost too simple. If it already looks crowded, it's probably trying to answer three questions at once.

Choose dimensions and filters before layout

Then choose the dimensions that segment the report, such as country, device, referer, or time series. Add filters to cut out the noise, like excluding irrelevant traffic or narrowing the date range to a specific launch window.

That sequence lines up with practical report-design guidance from Epicor-focused material, which emphasizes defining filters, groupings, sort order, and calculated fields before development begins so the output stays auditable later. The same logic applies whether you're building in a BI tool or stitching together exports.

Sanity-check with sample data

Run a narrow date range first. If the totals look strange, check the grouping logic before you schedule anything. A small sample often reveals whether a report is double-counting, splitting a segment incorrectly, or hiding a record because of a filter that was too aggressive.

The cleanest reports usually come from the least glamorous step, the one where someone verifies the math before the dashboard is shared.

Three Custom Reports You Can Ship With 302.sh Data

A short-link system is a good reporting substrate because the data is naturally tied to campaigns, destinations, and actions. The trick is not to ask the link data to do everything, but to use it as one layer in a broader stack.

Campaign performance recap

The first report is the simplest and probably the most useful. Group clicks by referer and country, then join the destination list to your UTM-tagged landing pages so you can compare source, geography, and performance in one view. If your ad platform already tracks impressions, you can pair that with the click data to derive CTR by channel in your own dashboard.

This report is good for launch weeks and paid campaigns because it exposes mismatches quickly. A channel can look healthy on raw traffic while still underperforming in a specific market or device segment.

Offline event recap with QR codes

The second report fits events, packaging, and physical handoffs. Track clicks per day, device split, and top city for each QR code, then add a simple calculated field for scans to landing-page rate if your downstream analytics can capture the visit event. That ratio is often more meaningful than total scans because it tells you whether the offline call to action matched the page users reached.

This is the kind of report that's easy to ignore until the event ends. After that, it becomes the record everyone wishes they'd had in real time.

A/B split summary

The third report is for teams testing destinations or messages. Pull the sticky weighted assignment, then compare each variant against a goal event so you can compute variant-level conversion rate. The important part is the sticky allocation, because it keeps the experience consistent for the same visitor and makes the comparison easier to trust.

If you want a practical place to start, the 302.sh docs show the product as an API-first system, which makes it easier to wire link data into a broader reporting workflow instead of treating it as a dead-end dashboard. The reporting pattern is the same regardless of the tool, define the join logic up front, then keep the calculations simple enough that someone else can audit them later.

Designing Reports That Survive Tighter Privacy Rules

Most reporting guides still assume a world where user-level tracking is always available and data lives forever. That's not how a lot of modern analytics stacks work anymore. Cookie constraints, consent limits, event-based APIs, and privacy-first products have changed the practical shape of a report.

Fewer metrics can be the better design

Under tighter privacy rules, sprawling dashboards usually break before compact ones do. If data is sparse, delayed, or intentionally aggregated, too many metrics create more confusion than clarity. The smarter move is to keep the report narrow enough that each field has a clear purpose and the result can still support a decision.

That's especially true when your source is privacy-first by design, with no cookies, no fingerprinting, aggregated geo and device data, and 90-day retention. In that model, the report has to reflect the data you have, not the data you wish you still had.

Design for the data boundary you can defend

A privacy-resilient report starts with a question that fits the retention window and the available granularity. If you need a long historical trend, don't build a report that depends on granular identity data that isn't there. If you only have aggregated clicks, country, device, and referer, use those fields well and avoid pretending the report can reconstruct a user journey.

Good standard: if a custom report can't be explained in one sentence, it's probably asking the privacy model for more than it can reliably give.

There's a trade-off here. Older user-level reporting models can feel richer, but they also encourage bloated dashboards and weak assumptions about identity. A tighter model forces discipline. That's annoying at first, and useful later.

For teams deciding what to keep and what to drop, this CTR guide is a good reminder that a metric only matters when you know what question it answers in context.

Your Custom Reporting Checklist for This Week

A useful reporting system starts with a decision, not a dashboard. Before you build anything, write down what choice the report needs to support, who owns it, and when it should stop being maintained. Those three checks cut out most of the busywork.

Use this checklist on Monday morning.

  • Define the decision. Name the exact choice the report is meant to support.
  • Pick the metric family. Use acquisition, behavior, or outcome, not all three by default.
  • Choose the build path. Use CSV for one-offs, API for repeatable workflows, BI for ongoing analysis.
  • Check the data window. Make sure the retention period is long enough for the question you're asking.
  • Keep the report readable. If it needs a paragraph to explain, it's too complicated.

A small team also needs to respect the shape of the data it has. If your reporting source is privacy-first, with no cookies, no fingerprinting, aggregated geo and device data, and a 90-day retention window, the report should fit that boundary instead of pretending it can recover individual behavior after the fact. That usually means fewer fields, clearer definitions, and a tighter scope.

One practical test helps here. If the report still makes sense after you read it out loud in one sentence, it is probably sized correctly. If it depends on identity-level detail you do not store, it is already asking for more than the system can give.

There is a trade-off between older user-level reporting and a privacy-limited setup. User-level tools can feel richer, but they also encourage bloated dashboards and shaky identity assumptions. A narrower model forces discipline, and that is uncomfortable until the team starts using the report to make faster decisions.

One more operational detail matters for link-based reporting. 302.sh's redirects are edge-hosted and keep working even when analytics quotas are reached, so your tracking setup should not treat the redirect itself as the fragile part. That matters in campaigns and offline flows where the destination has to keep resolving even if the reporting layer is temporarily constrained.

The best custom reporting stack is the one your team can sustain. Start small, build the first report around one real decision, and do not add a new field until the current one has earned its place. For a quick check on how CTR should be interpreted in context, this CTR guide is a useful reference.

Short links that keep working.
Fairly priced.