Blog
Connect any browser-based tool to RudderStack with Custom Device Mode Integration
Connect any browser-based tool to RudderStack with Custom Device Mode Integration

Drew Dodds
Product Manager
6 min read
March 17, 2026

Picture this: You find the perfect browser-side tool for your team. You scope the project, get buy-in, and start building. Then you check your Customer Data Platform’s integration catalog.
It’s not there.
Now you have three options:
- Submit an integration request and wait weeks or months for it to be prioritized.
- Bolt together a custom script outside your CDP, losing consent enforcement, event filtering, and any visibility into what’s actually firing.
- Or evaluate a different vendor entirely.
But none of those options are good when you’re trying to ship.
Today we’re releasing Custom Device Mode Integration, generally available on all RudderStack plans including Free. It lets your engineering team write a simple JavaScript object to connect the RudderStack JS SDK to any browser-based tool. RudderStack continues to handle consent management, event filtering, transformations, and error isolation. Your team writes only the destination-specific delivery code.
The big picture
Every CDP has the same structural problem: The integration catalog is always smaller than the universe of tools customers actually use. Niche analytics platforms, newly launched martech tools, proprietary internal systems, conversion pixels that must fire from the end user’s browser – there are hundreds of browser-side tools that will never justify a pre-built integration but matter deeply to the teams that use them.
Until now, the workarounds were all bad. Some teams maintained ad-hoc scripts outside the platform, firing events with no consent governance and no error handling. Others used server-side delivery for tools that genuinely needed browser-side execution, losing access to cookies, DOM state, and the user’s actual IP address. Some just waited and hoped.
We heard this pattern from customers repeatedly: Teams loved the RudderStack pipeline, but hit a wall the moment they needed a destination that wasn’t in the catalog. Beta customers who got access built working custom integrations within hours.
Custom Device Mode Integration turns “we don’t support that tool” from a dead end into a starting point.
We kept hearing the same thing from customers: ‘I love RudderStack, but you don’t support this tool.’ That shouldn’t be a dead end. Custom Device Mode puts the power in the customer’s hands. If you can write a basic JavaScript function, you can connect any browser-based tool to RudderStack yourself, today, without waiting for us.” – Drew Dodds, Product Manager at RudderStack
Main points
A simple JavaScript interface, not an SDK. Your team writes a JavaScript object with named methods: init, isReady, track, page, identify, group, and alias. Register it with a single call – rudderanalytics.addCustomIntegration(destinationId, integration) – before rudderanalytics.load(). The SDK polls your isReady() method automatically and begins forwarding events the moment it returns true.There’s no separate SDK to install, no build step, no compilation. If your team can write a basic JavaScript function, they can build a custom integration.
Full platform guardrails, automatically. This is the key differentiator from rolling your own scripts. Custom integrations inherit the same consent management (OneTrust, Ketch, iubenda, custom), client-side event filtering (allowlist and denylist), and device mode transformations that every pre-built RudderStack integration gets. Your custom code doesn’t need to implement any of that. RudderStack handles it before events ever reach your integration methods.
Error isolation and timeout enforcement. Custom code running in the browser is inherently risky. A bug in one integration shouldn’t take down your entire tracking pipeline. RudderStack sandboxes custom integrations so that errors in your code never affect other destinations or the SDK itself. A built-in readiness check polls every 100 milliseconds with a 10-second timeout, preventing stalled integrations from blocking event delivery to everything else.
Platform features through the dashboard. To use consent management, event filtering, or device mode transformations with your custom integration, you set up a Custom Device Mode destination in the RudderStack dashboard — the same place you configure your other destinations. This gives your custom integration access to the same governance controls as pre-built integrations, rather than running as an invisible workaround outside the platform.
Available on every plan, unlimited, at no extra cost. Custom Device Mode Integration runs entirely in the browser. Events never pass through RudderStack’s servers for this destination type, which means there’s no incremental cost to serve. We made the decision to include it on every tier (Free, Starter, Growth, and Enterprise) with no limits on the number of custom destinations you create. If you’re on RudderStack, you already have this.
It’s worth noting what this feature is not. First, it’s web-only – there’s no mobile SDK support today. It runs in device mode only, meaning events are processed in the browser, not routed through RudderStack’s servers. And it requires JavaScript knowledge. This isn’t a no-code tool. Your team writes and maintains the integration code.
For teams that need reliable server-side delivery to REST APIs without writing code, RudderStack’s HTTP Webhook destination is the right choice. Custom Device Mode and HTTP Webhook are complementary: one runs client-side in the browser with real-time DOM and cookie access, the other runs server-side with built-in retries and batching. Choose based on where the destination needs the request to originate.
Get started
- Add the destination in the dashboard. In the RudderStack dashboard, add a new Custom Device Mode destination and connect it to your JavaScript (web) source. Optionally configure consent management and event filtering. Finally, copy the Destination ID, which is required for registering your integration (see Step 4).
- Optionally Create and connect a transformation. If you need to transform events before they reach your custom integration, connect a transformation to the Custom Device Mode destination in the RudderStack dashboard. Then, enable the Device Mode toggle and configure the Propagate errors setting based on your requirements.
- Write your integration code. Implement your JavaScript integration object with the methods your use case requires. Your integration will receive the transformed events.
- Register and load. Call
rudderanalytics.addCustomIntegration(destinationId, integration)beforerudderanalytics.load().
Resources and next steps
Read the docs: Custom Device Mode Integration documentation
Try it now: Available on all plans including Free – add a Custom Device Mode destination in your RudderStack dashboard today.
Questions? The SDK team is reachable via the RudderStack community.
Published:
March 17, 2026
More blog posts
Explore all blog posts
Stop flying blind: Real-time JavaScript SDK debugging with the RudderStack Tracking Assistant
Drew Dodds
by Drew Dodds

Data without compromise: The RudderStack story
Danika Rockett
by Danika Rockett

Snowflake Summit 2025 recap: Launches, live demos, and real-time data
Ricky Spiese
by Ricky Spiese


Start delivering business value faster
Implement RudderStack and start driving measurable business results in less than 90 days.


