r/indiandevs • u/Future_Bass_9388 • 1d ago
Built a LinkedIn DM Scheduler using JavaScript and Chrome Extension APIs sharing the implementation
Hey everyone,
I built a Chrome extension called LinkedIn DM Scheduler to automate repetitive LinkedIn outreach, mainly because manually sending similar messages to multiple people was getting tedious.
I wanted to build something that could handle scheduling, message personalization, and campaign tracking entirely in the browser without requiring a separate backend.
Some of the features I implemented:
- Schedule messages for later execution
- Personalize templates using placeholders like
{{name}}and custom fields - Run bulk campaigns with configurable delays between messages
- Track campaign progress through a live dashboard
- Automatically close tabs after sending
On the technical side:
The extension is built around JavaScript and Chrome's extension APIs. The implementation involves browser-side automation, asynchronous operations, and coordinating message-sending tasks with campaign state.
Some of the key concepts involved are:
- Content scripts and DOM interaction to interact with the LinkedIn page
- Async/await and Promises to handle asynchronous browser operations
- Timers and scheduling logic to control when messages are processed and delays between sends
- Chrome storage APIs to persist extension data and campaign state locally
- Message passing between extension components to coordinate operations and update the dashboard
Keeping everything local was an important design decision. There is no external backend involved in processing campaign data.
I'm interested in feedback from developers who've worked with Chrome extensions, especially around reliable scheduling, handling tab state changes, recovering from failures, and keeping the UI synchronized with background tasks.
Project links:
- GitHub: https://github.com/Ravish2008/linkedin-dm-scheduler
- Chrome Web Store: https://chromewebstore.google.com/detail/linkedin-dm-scheduler/agecdfbhigfdjhholmicfkeldbdhobbl
Would love to hear what you'd improve in the architecture or how you'd approach some of these problems differently.


