Table of Contents
1. The problem: Allegro Ads at agency scale
If you are not from Poland, here is the context: Allegro is the country's largest e-commerce marketplace. It processes over 40 million listings and handles a significant share of all Polish online retail. For brands selling in Poland, Allegro is not optional — it is the primary sales channel.
Allegro Ads is the platform's advertising system. Sellers and agencies use it to run sponsored product campaigns, display ads, and promoted listings. The dashboard lets you set bids, define targeting, monitor spend, and review performance metrics. For a single seller managing a handful of campaigns, it works fine.
For an agency managing 50+ campaigns across a dozen client accounts, it is a daily operational nightmare. Every action is one-at-a-time. Want to adjust bids across 30 campaigns? Click into each campaign, change the value, save, navigate back, repeat. Need a report that shows performance across all your clients? Export each campaign individually, open a spreadsheet, paste, format, aggregate. Need to pause all campaigns for a client who is out of stock? Find each one, click pause, confirm, next.
The agencies we worked with quantified the waste. A mid-sized Allegro Ads agency managing 20 client accounts was spending 3 to 6 hours per week per employee on purely mechanical tasks — operations that involved no strategic thinking, no creative judgment, just clicking through the same interface in the same sequence, over and over.
Our partner Pryzmat.Media brought us the problem. They are a digital marketing agency specializing in Allegro campaigns, and they were feeling the pain firsthand. Their team was growing, their client list was growing, but their tools were not keeping up. The Allegro Ads dashboard was designed for individual sellers, not for agency workflows at scale.
2. Why a browser extension was the only viable approach
The natural first instinct is to build a standalone SaaS dashboard. Pull data from Allegro's API, build your own campaign management interface, give agencies a unified view. It sounds clean. In reality, it was a dead end — and the reasons go beyond the obvious.
Allegro had no Ads API when we started
When Panel Pro was first built, Allegro simply had no API for Ads management. Their REST API covered product listings and order processing — that was it. Five years later, Allegro introduced a limited Ads API, but it still does not cover the actions agencies actually need: advanced bid strategies, certain targeting options, detailed performance breakdowns. The result? Even with the API now partially available, agencies still rely on Panel Pro because a SaaS dashboard built on an incomplete API will always be less capable than the native interface — and our extension works directly inside that interface.
Authentication and multi-account complexity
Agencies manage campaigns on behalf of their clients. Each client has their own Allegro account with their own OAuth tokens. A SaaS approach would require each client to grant API access, manage token refreshes, handle permission scoping, and deal with the inevitable token expiration issues. A browser extension sidesteps all of this — the agency is already logged into the client's account in the browser. The extension rides on the existing session.
Zero context switching
Agency account managers already know the Allegro Ads dashboard. They have trained on it. They know where every metric lives, how the filters work, what the campaign status indicators mean. A browser extension enhances that existing knowledge instead of replacing it. There is no second tool to learn, no new login to remember, no separate tab to keep open. The extension appears inside the interface they already use every day.
Ship in weeks, not months
A full SaaS dashboard means building authentication, data syncing pipelines, a database layer, hosting infrastructure, and a complete UI that replicates what Allegro already provides. That is a 6-month project at minimum. A browser extension that injects new capabilities into the existing dashboard shipped its first working version in weeks.
The browser extension advantage
We wrote about this pattern in detail in our post on building browser extensions for platforms without APIs. The core idea: instead of building around the platform, build on top of it. The extension treats the Allegro Ads dashboard as its runtime environment — adding what is missing without replacing what already works. This is fundamentally different from the typical SaaS integration approach, and it is the reason Panel Pro shipped fast and got adopted quickly.
3. What Panel Pro actually does
Panel Pro is not a general-purpose browser extension. It is purpose-built for one workflow: managing Allegro Ads campaigns at agency scale. Every feature maps directly to a task that agencies were doing manually before.
Bulk campaign operations
Select multiple campaigns from the Allegro Ads dashboard and apply changes to all of them simultaneously. Pause, resume, adjust daily budgets, modify bid strategies — operations that previously required clicking into each campaign individually. The extension injects checkboxes and a bulk action toolbar directly into Allegro's campaign list view. What took 45 minutes across 50 campaigns now completes in under a minute.
Automated bid optimization
Set rules that automatically optimize CPC bids based on patterns your team already knows but cannot act on fast enough. Lower bids on weekends when conversion rates drop. Reduce spend on keywords generating clicks but no profit. Once configured, the rules run quietly in the background — no daily babysitting, no forgetting to adjust before the weekend.
Cross-campaign reporting and analytics
Allegro's native dashboard shows performance data for one campaign at a time. Panel Pro aggregates data across all campaigns and all accounts, injecting visual analytics panels directly into the Allegro interface. Total spend across the portfolio, average ROAS by client, top-performing campaigns ranked by conversion rate, spend distribution charts — all visible without leaving the Allegro tab.
Client reporting via one-click Excel exports
Every agency needs to report campaign performance to clients — weekly, sometimes more often depending on the account. Allegro has never built any client reporting functionality into their platform. Without Panel Pro, this means manually copying data from the dashboard into spreadsheets, formatting it, and sending it out — hours of repetitive work every week. Panel Pro lets you select campaigns, pick a date range, and export a formatted Excel report with a single click. Impressions, clicks, CTR, CPC, spend, conversions, ROAS, cost-per-conversion — all formatted and ready to send to the client.
Visual dashboards injected into Allegro
Panel Pro does not open in a separate popup or a new tab. It injects interactive charts, summary cards, and performance indicators directly into the Allegro Ads pages. When you open the campaign list, you see Panel Pro's analytics right above Allegro's native table. The experience feels native — like Allegro built these features themselves. This was a deliberate design choice: the best tool is the one that does not feel like a separate tool.
Quick edit directly from stats view
The core workflow in Allegro Ads is: check stats, react, adjust. Panel Pro collapses that loop to seconds. Edit bids, pause campaigns, or change budgets without leaving the stats view — no navigating to a separate settings page, no waiting for a full page reload. When we started building Panel Pro in 2020, Allegro Ads was still in its infancy. The native panel took a full minute to load, and every tab switch meant another minute of waiting. We cut that cycle down dramatically — campaign managers using Panel Pro make adjustments in under 5 seconds instead of 30 to 60.
Manager and operator oversight
Panel Pro is not just for the people running campaigns — it is equally valuable for agency managers and operators who need visibility without micromanaging. See what happened across accounts in a given week, spot listings that are not being advertised, and catch underperforming campaigns before the client notices. Instead of asking each team member for a status update, the data is right there.
Allegro keeps building what we built first
The strongest validation for Panel Pro's feature set? Allegro itself has been gradually adding similar capabilities to their native platform — roughly five years after we shipped them. Bulk operations, improved stats views, bid management tools — features our users have relied on for years are now slowly appearing in the official panel. Our versions are five years of iteration ahead, but the pattern speaks for itself: the market need was real, and Allegro's own roadmap proves it.
Everything runs client-side in the browser. No data leaves the user's machine unless they explicitly export it. Campaign data, bid rules, and settings are stored locally using Chrome extension storage APIs. This was important for agencies handling sensitive client advertising data — there is no third-party server in the middle.
4. Technical approach: CRXJS, React, and DOM injection
Panel Pro is built on the same production stack we use across all our extension projects, refined over 100+ shipped versions. The technical decisions were driven by the specific constraints of injecting into a large-scale single-page application that we do not control.
CRXJS + React + Vite
CRXJS is the Vite plugin purpose-built for Chrome extension development — we are contributors to the project. It reads the extension manifest, handles content script bundling, manages the background service worker, and provides hot module replacement during development. React powers every UI surface: the injected panels in the Allegro dashboard, the popup interface, and the settings page. Vite gives us sub-second build times during development and optimized production bundles. We compared this stack against Plasmo and WXT and CRXJS remains the right choice for complex injection-heavy extensions.
Content script injection into Allegro's SPA
Allegro Ads is a modern single-page application. Routes change without full page reloads. The DOM is constantly rebuilt by the framework as users navigate between campaign lists, individual campaign views, and settings pages. Our internal react-content-script-injector library monitors injection points using MutationObserver and automatically mounts, unmounts, and re-mounts Panel Pro's React components as Allegro's SPA navigates and re-renders. This handles the hard cases: client-side route changes, lazy-loaded content, A/B test variations on Allegro's side, and dynamic pagination.
Shadow DOM for style isolation
Panel Pro injects its UI elements — charts, toolbars, analytics panels — directly into Allegro's pages. Without style isolation, Allegro's CSS would override our component styles, and our Tailwind classes would bleed into Allegro's layout. Shadow DOM provides true encapsulation. Styles inside the shadow root stay contained. Allegro's stylesheets cannot reach our components. Our library handles the tricky parts: injecting Tailwind into the shadow root, loading fonts across the shadow boundary, and rendering React Portals for modals and dropdowns that need to break out of the shadow container.
Chrome extension storage for state
All user settings, bid adjustment rules, and cached report data are stored using chrome.storage.local and chrome.storage.sync. Local storage handles the bulk data — cached campaign metrics, report history, large datasets. Sync storage handles lightweight preferences that should follow the user across devices — UI settings, notification preferences, display configurations. The background service worker coordinates state across multiple open Allegro tabs using chrome.storage.onChanged listeners, so a setting changed in one tab propagates instantly to all others.
TanStack Query for data layer
Campaign data extracted from Allegro's dashboard is cached and managed using TanStack Query. This gives Panel Pro stale-while-revalidate behavior: the UI shows cached data instantly while fresh data loads in the background. Pagination, deduplication, and automatic refetching on tab focus are handled by the library. For an extension that aggregates data across 50+ campaigns, this caching layer is critical — without it, every navigation would trigger a full data refresh and the UI would feel sluggish.
Type safety is non-negotiable for an extension this complex. When you are injecting into a platform you do not control, with data models that can shift without warning, catching mismatches at build time instead of discovering them as silent production failures saves enormous debugging time. End-to-end tests validate the injection and data flow on every commit. CI/CD deploys updates automatically — a fix goes from code to the Chrome Web Store in minutes.
5. Scale challenges: 50+ campaigns and counting
Building a Chrome extension that works for a single user with a few campaigns is straightforward. Building one that performs well for agencies managing 50+ campaigns across multiple accounts introduced challenges we had to solve deliberately.
Performance with large datasets
When an agency loads a campaign list with 80+ entries, and Panel Pro needs to extract data for each one, aggregate it, compute derived metrics, and render analytics panels — all inside the browser — performance matters. We implemented virtualized rendering for large campaign lists so only visible rows are in the DOM. Data aggregation runs in a Web Worker to avoid blocking the main thread. Computed metrics (ROAS, CPC trends, budget utilization percentages) are memoized and only recalculated when underlying data changes. The result: Panel Pro adds less than 200ms to page load time, even on pages with hundreds of campaigns.
Multi-account tab management
Agency users typically have multiple Allegro tabs open — one per client account. Each tab runs its own content script instance. The background service worker needs to keep these instances coordinated without conflating data between accounts. We solved this with account-scoped storage namespacing: each account's data is stored under a unique key derived from the account identifier visible in the Allegro URL. Settings that are account-specific (bid rules, cached stats) stay scoped. Settings that are global (UI preferences, notification config) are shared across all tabs.
Allegro UI changes and breakage recovery
Allegro updates their Ads dashboard regularly. CSS class names change, DOM structure shifts, elements get reorganized. A hard-coded CSS selector that works today might break next week. We built Panel Pro with multiple fallback strategies for every injection point: primary selectors, secondary selectors based on element structure, and last-resort selectors based on text content. MutationObserver watches for structural changes and re-attempts injection if the initial attempt fails. When Allegro ships a major redesign, we typically need a Panel Pro update — but minor CSS changes and incremental UI adjustments are absorbed automatically.
Chrome Web Store distribution at scale
With 2,000+ users, every update goes through Chrome Web Store review. Reviews typically take 1 to 3 days. For urgent fixes — like when Allegro pushes a breaking UI change — that delay is painful. We mitigate this by maintaining a self-hosted update channel for beta testers and key agency partners. Critical fixes go out via the beta channel immediately while the stable update works through review. Our CI/CD pipeline handles packaging for both channels automatically.
Memory management across long sessions
Agency users keep their Allegro tabs open all day, sometimes for days at a time. An extension that leaks memory or accumulates stale data will degrade browser performance over hours. Panel Pro implements aggressive cache eviction policies: cached data older than the configured retention window is automatically purged. Event listeners are properly cleaned up on component unmount. TanStack Query's garbage collection handles stale query data. We profiled memory usage over 8-hour simulated sessions to ensure the extension stays lightweight regardless of how many campaigns are loaded.
6. Results: 4.4 stars, 2,000+ users, hours saved
Panel Pro launched on the Chrome Web Store and grew entirely through word-of-mouth in the Polish e-commerce and digital marketing community. No paid acquisition, no Product Hunt campaign, no influencer deals. Agencies started using it, told other agencies, and it spread organically.
Active users on Chrome Web Store
Star rating from agency users
Saved per week per employee
The time savings break down across the specific features. Bulk operations account for the largest chunk — agencies that previously spent an hour on bid adjustments across their campaign portfolio now complete the same work in under 5 minutes. Report exports eliminated the weekly spreadsheet assembly ritual that took 30 to 60 minutes per client. Automated bid rules reduced the need for constant manual monitoring throughout the day.
For agencies managing 20+ client accounts, those 3 to 6 hours per week per employee are not just a time savings metric. They represent capacity. That is time account managers can spend on strategy, client communication, and campaign optimization — the work that actually justifies their rates and retains clients.
Panel Pro has become the go-to tool for Allegro Ads agencies in Poland. When new team members join an agency, installing Panel Pro is part of their onboarding. When agencies hire freelancers for campaign management, they tell them to install Panel Pro before touching any campaigns. It has become infrastructure — not a nice-to-have, but a requirement for doing Allegro Ads work at agency scale.
The 4.4-star rating across user reviews is meaningful because the reviewers are professionals who use the tool every working day. These are not casual users who installed it once. They are agency teams whose daily workflow depends on Panel Pro working correctly, and they rated it highly because it delivers on its promise.
7. Lessons learned: building for a platform without an API
Panel Pro taught us lessons that apply to any team building automation on top of a third-party platform. Some of these we anticipated. Others we learned the hard way.
Platform changes are your biggest risk
When your extension injects into a platform you do not control, any UI update can break your selectors, layouts, or data extraction logic. Allegro can change their DOM structure, class names, or page behavior at any time without notice. We built Panel Pro's data layer with strict validation — when a page structure changes, the extension gracefully degrades instead of crashing. Error monitoring alerts us to breakages within minutes so we can push an update before most users notice.
Build with agency users, not for them
The features that survived into the final product are the ones that came from watching agency teams work. Not from brainstorming sessions, not from competitor analysis, not from feature request forms. We sat with account managers (virtually and in person) and watched them manage campaigns. We saw where they hesitated, where they sighed, where they opened a spreadsheet because the Allegro dashboard did not give them what they needed. Those observations drove the roadmap more effectively than any planning document could have.
Chrome extension maintenance is a product, not a project
Shipping the first version of Panel Pro was the easy part. Maintaining it across Allegro's continuous UI updates, Chrome's evolving extension APIs (especially the Manifest V3 migration), and growing user expectations — that is the ongoing work. A Chrome extension that injects into a third-party site is never “done.” It is a living product that needs continuous attention. Teams that treat extension development as a one-time project will be disappointed. Teams that treat it as a product with a maintenance lifecycle will succeed.
Error monitoring is your early warning system
When Allegro pushes a UI update, we often know about it before most users notice any issues. Panel Pro includes built-in error reporting that tracks injection failures, DOM selector mismatches, data extraction schema changes, and runtime exceptions across the entire user base. This telemetry is aggregated and monitored, and spikes trigger automatic alerts. On multiple occasions, we have pushed a fix to the Chrome Web Store before a single user reported a problem. That proactive maintenance is what keeps the 4.4-star rating intact.
Niche specificity is a competitive advantage
Panel Pro is not a “general e-commerce tool.” It is specifically for Allegro Ads agency campaign management. That narrow focus is its greatest strength. We know exactly who the user is, what they do every morning when they open Allegro, and what frustrates them about the native dashboard. Every feature is designed for that specific workflow. A broader tool might appeal to more people in theory, but it would solve each person's problem less effectively. In a niche community like Polish e-commerce agencies, word-of-mouth is powerful — and it only works when the tool genuinely solves the problem it claims to solve.
Weekly shipping builds trust and compounds quality
During active development, we shipped Panel Pro updates weekly. Agency users saw their feedback turning into features within days, not quarters. Bug reports got fixed in the next release, not filed into a backlog. This rapid cycle built trust that sustained the product through the inevitable rough patches — the times when an Allegro update broke something and users had to wait for a fix. They waited patiently because they knew from experience that fixes came fast.
The fundamental lesson
When a platform does not give you an API, you have two choices: wait for them to build the features you need, or build them yourself on top of what already exists. Panel Pro is proof that the second path works — but it requires a team that understands browser extension architecture deeply, builds for resilience against platform changes, and commits to maintaining the product over time. The technology is the enabler. The commitment to ongoing maintenance is what makes it sustainable.
Managing campaigns on a platform that lacks the tools you need?
We built Panel Pro from zero to 2,000+ users for Allegro Ads agencies. If your team is spending hours on repetitive browser-based work — on Allegro, Amazon, or any other platform — we can build an extension that automates it. Tell us what your workflow looks like.
