Auto-generated dashboard for marketing campaign attribution tracking

Sharing our implementation of auto-generated attribution dashboards that solved a major pain point for our marketing team. We run 50+ concurrent campaigns across 8 channels and needed real-time visibility into campaign performance and multi-touch attribution.

The Challenge: Marketing analysts were spending 10+ hours per week manually creating campaign performance reports. Each new campaign required creating dashboard widgets, configuring filters, and setting up attribution models. By the time reports were ready, the campaign data was already 2-3 days old.

The Solution: We built an auto-generated dashboard system that creates campaign-specific dashboards automatically when new campaigns launch. The system integrates data from Salesforce campaigns, Google Ads, LinkedIn, email platforms, and web analytics.

Real-time attribution now updates every hour, showing first-touch, last-touch, and multi-touch attribution models side by side. Marketing managers can see campaign ROI, cost per lead, and conversion metrics without waiting for analyst reports. This has dramatically improved campaign optimization speed and budget allocation decisions.

We use a combination of approaches. Template dashboards define the core structure and widget types. When a new campaign launches in Salesforce, a Flow triggers an API call that clones the template and customizes it with campaign-specific filters and metadata. The dashboard is automatically shared with the campaign owner and relevant marketing team members. The trickiest part was implementing the multi-touch attribution logic - we had to build custom attribution models in the dataflow that weight touchpoints based on time decay and channel contribution.

This sounds impressive! How did you handle the auto-generation aspect? Are you using Tableau CRM APIs to programmatically create dashboard definitions, or is there a template-based approach? We’ve been looking for ways to scale our dashboard creation process as well.

We support four attribution models that users can toggle between in the dashboard: first-touch, last-touch, linear (equal credit to all touchpoints), and time-decay (exponential decay with 7-day half-life). Attribution window is configurable per campaign but defaults to 30 days for most campaigns and 90 days for enterprise sales cycles.

What attribution models are you supporting? Are you doing linear attribution, time-decay, position-based, or custom weightings? And how do you handle attribution windows - are you using a fixed window or does it vary by campaign type?

Here’s a detailed breakdown of our implementation:

Auto-Generated Dashboard Architecture:

When a campaign launches in Salesforce, a Process Builder flow triggers an Apex class that calls the Tableau CRM REST API. The API clones a master template dashboard and performs these customizations:

  • Sets campaign ID filter to the new campaign
  • Updates dashboard title with campaign name
  • Configures date ranges based on campaign start/end dates
  • Applies appropriate attribution window (30/60/90 days based on campaign type)
  • Shares dashboard with campaign owner and marketing team role

The entire process takes 2-3 seconds and the dashboard is immediately available.

Multi-Source Data Integration:

We built a hub-and-spoke data architecture:

Hub Dataset: Central touchpoint repository with normalized schema containing:

  • Touchpoint ID, timestamp, channel, campaign, contact, interaction type, cost data

Spoke Connectors:

  1. Salesforce Campaigns (native connector, real-time)
  2. Google Ads API (hourly sync via custom connector)
  3. LinkedIn Campaign Manager API (hourly sync)
  4. Marketing Cloud (event-driven webhooks)
  5. Google Analytics (GA4 connector, hourly)

Staging dataflow runs hourly to:

  • Merge new touchpoints from all sources
  • Deduplicate based on touchpoint ID and timestamp
  • Enrich with campaign metadata from Salesforce
  • Calculate cost data and normalize currency

Real-Time Attribution Models:

Attribution dataflow processes the merged touchpoints:

Pseudocode for multi-touch attribution calculation:


// Attribution calculation steps:
1. Group touchpoints by contact/lead within attribution window
2. For each conversion event:
   a. Identify all preceding touchpoints within window
   b. Apply selected attribution model (linear/decay/position)
   c. Distribute conversion value across touchpoints
   d. Aggregate attributed value by campaign and channel
3. Calculate derived metrics: ROI, cost per lead, conversion rate
4. Output to attribution_results dataset for dashboard consumption

Time-decay model uses exponential decay with configurable half-life (default 7 days). Position-based model gives 40% credit to first touch, 40% to last touch, 20% distributed among middle touches.

Dashboard Features:

Each auto-generated dashboard includes:

  • Campaign performance scorecard (spend, leads, pipeline, ROI)
  • Attribution model comparison view (toggle between models)
  • Channel contribution breakdown
  • Touchpoint sequence analysis (customer journey visualization)
  • Time-series trends for key metrics
  • Drill-down to individual touchpoint detail

Business Impact:

Before implementation:

  • 10+ hours per week manual reporting
  • 2-3 day lag in campaign insights
  • Limited attribution visibility

After implementation:

  • Zero manual dashboard creation
  • Real-time campaign insights (1-hour refresh)
  • Comprehensive multi-touch attribution
  • 40% improvement in campaign optimization speed
  • 25% better budget allocation efficiency

Marketing team can now launch campaigns and immediately see performance dashboards. Real-time attribution enables rapid optimization decisions. When a channel underperforms, they can shift budget within hours instead of waiting for weekly reports.

The system scaled to support 200+ active campaigns without additional analyst overhead. Dashboard auto-generation and hourly data refresh made this level of scale possible with our existing team size.

How are you handling the multi-source data integration in real-time? That seems like it would be the biggest technical challenge - pulling data from Google Ads, LinkedIn, email platforms, and web analytics every hour and keeping it synchronized with Salesforce campaign data.

We use a combination of native connectors and custom API integrations. Google Ads and LinkedIn connect through their respective APIs with hourly sync schedules. Email platform data comes through webhooks for near-real-time updates. Web analytics data flows through Google Analytics connector. The key was building a unified data model that normalizes all touchpoints into a common schema before the attribution calculation. We have a staging dataflow that runs every hour to merge all sources, then the attribution model runs on the merged dataset.