Required Datapoints
- Clicks: The number of times a link was clicked.
- Impressions: The total number of times the link or content was viewed.
The Click-Through Rate (CTR) measures the percentage of people who clicked on a link or call-to-action out of the total number of people who viewed the page, email, ad, or post. It’s expressed as a percentage and is used to gauge the effectiveness of digital marketing campaigns.
Click-Through Rate (CTR) is a core performance metric that measures the percentage of users who clicked on a link after seeing it, offering a fast, reliable indicator of how well your creative, messaging, and call-to-action are resonating.
The relevance and interpretation of this metric shift depending on the model or product:
A high CTR means your audience is engaged and motivated to act. A low CTR often flags message mismatch, weak CTAs, or targeting issues.
Segment by audience type, device, or campaign channel to optimize real-time and future campaign performance.
Click-Through Rate (CTR) informs:
These are the main factors that directly impact the metric. Understanding these lets you know what levers you can pull to improve the outcome
Actionable ideas to optimize this KPI, from fast, low-effort wins to strategic initiatives that drive measurable impact.
Activities commonly tied to improving or operationalizing this KPI.
| Activity | Description |
|---|---|
| Campaign Testing | Campaign Testing focuses on the systematic design, execution, and analysis of go-to-market campaigns to validate hypotheses and drive optimal results. It coordinates execution across touchpoints so teams can move users or accounts toward the target outcome. Relevant KPIs include Channel Effectiveness and Click-Through Rate. |
| Audience Segmentation | Audience Segmentation focuses on systematically identifying, categorizing, and prioritizing potential customer groups by analyzing shared characteristics, behaviors, needs, and value potential within the Go-To-Market (GTM) strategy. It gives teams a clear plan for where to focus, how to sequence work, and what to measure. Relevant KPIs include Click-Through Rate and Open Rate. |
| Ad Copy Optimization | Ad Copy Optimization focuses on the ongoing analysis, testing, and optimization of advertising copy to boost engagement, conversion rates, and return on investment across multiple channels. It improves performance by removing friction, testing changes, and scaling what works. Relevant KPIs include Click-Through Rate. |
A retail brand runs a paid ad campaign:
This KPI is associated with the following stages in the AAARRR (Pirate Metrics) funnel:
This KPI is classified as a leading Indicator. It signals likely future performance and is used to predict outcomes before they fully materialize.
This role is directly accountable for the KPI and is expected to drive progress and decisions around it.
These roles contribute directly to performance and typically partner on execution, reporting, or optimization.
These leading indicators influence or contextualize this KPI and help create a multi-signal early warning system, improving confidence and enabling better root-cause analysis.
These lagging indicators support the recalibration of this KPI, helping to inform strategy and improve future forecasting.
How this KPI is structured in Cube.js, including its key measures, dimensions, and calculation logic for consistent reporting.
cube('MarketingMetrics', { sql: `SELECT * FROM marketing_metrics`,
measures: { clicks: { sql: `clicks`, type: 'sum', title: 'Clicks', description: 'The number of times a link was clicked.' }, impressions: { sql: `impressions`, type: 'sum', title: 'Impressions', description: 'The total number of times the link or content was viewed.' }, clickThroughRate: { sql: `100.0 * ${clicks} / NULLIF(${impressions}, 0)` , type: 'number', title: 'Click-Through Rate', description: 'The percentage of people who clicked on a link out of the total number of people who viewed it.' } },
dimensions: { id: { sql: `id`, type: 'string', primaryKey: true, title: 'ID', description: 'Unique identifier for each record.' }, campaignName: { sql: `campaign_name`, type: 'string', title: 'Campaign Name', description: 'The name of the marketing campaign.' }, createdAt: { sql: `created_at`, type: 'time', title: 'Created At', description: 'The time when the record was created.' } }});Note: This is a reference implementation and should be used as a starting point. You’ll need to adapt it to match your own data model and schema