Building a unified Google and Meta ads dashboard in Laravel
Running ads on two platforms means two dashboards and two sets of numbers. I built a Madgicx-style ads manager in Laravel that brings Google Ads and Meta Ads into one product: a blended dashboard, a two-pane ad builder, creative performance analysis and one-click reports.
Two modules, one data model
Google and Meta each live in their own Laravel module, built to mirror each other so a feature added to one is easy to add to the other. Both share the same account and campaign tables, split by provider, which is what makes a cross-provider dashboard possible without duplicating data.
Key features
- Blended business dashboard: spend and performance across both platforms in one view, with trend cards and charts.
- Create New Ad: a two-pane ad builder with saved drafts, handling the different creative formats Google and Meta expect.
- Elements performance: mines ad elements and ranks them by spend and click-through rate, so you can see what is working.
- One-click reports: a template gallery with saved reports.
- Recommendation feed: a marketer-style feed of suggested actions on the dashboard.
- Also included: inline budget edits, audiences, attribution, a creative library, alerts and a multi-tab account audit.
Making the Google Ads API behave
The hardest part was the details the documentation does not make obvious:
- Manager accounts: requests must go through the correct manager for each client account, so the client is built per call with the right login customer ID instead of one global value.
- Metrics: manager accounts reject metric queries, so reporting skips them and queries only the child accounts.
- Transport: the server had no gRPC extension, so the integration runs over the REST transport instead.
Results
Tech stack
- Laravel 11
- Tailwind CSS 4
- Google Ads API
- Meta Graph API
- Highcharts
- REST API