An Outlook add-in that automatically fixes improperly formatted hashtags in your emails before sending.
HashFix is an event-based Outlook add-in that intercepts emails when you click "Send" and automatically corrects common hashtag formatting mistakes. It runs silently in the background and requires no manual intervention.
| Before (Incorrect) | After (Fixed) |
|---|---|
# tag |
#tag |
# marketing |
#marketing |
# 2024 |
#2024 |
# team |
#team |
- Automatic Correction: Fixes hashtags without requiring manual intervention
- OnSend Event: Runs automatically when you click Send
- Activity Tracking: View statistics and history in the taskpane
- HTML-Safe: Preserves email formatting, links, and styles
- Soft-Block Mode: Allows sending even if processing fails (fail-safe)
- Privacy-Focused: All processing happens locally in your browser
- Go to Outlook on the web and sign in
- Click the Apps icon (waffle/grid icon) in the left sidebar
- Click Get Add-ins (or search for it)
- Select My add-ins tab on the left
- Scroll down and click ➕ Add a custom add-in → Add from file
- Download
manifest.xmlfrom: https://David-Summers.github.io/hashfix/manifest.xml - Click Browse and select the downloaded
manifest.xmlfile - Click Upload and accept the warning
- The add-in will appear in the ribbon when composing emails
- Go to Outlook on the web
- Click the Settings gear icon (top right)
- Search for "add-ins" or go to View all Outlook settings → General → Manage add-ins
- Click My add-ins (left panel)
- Under Custom add-ins, click ➕ Add a custom add-in → Add from file
- Download and upload the
manifest.xmlfile - Accept the warning and click Install
- Open New Outlook (toggle in top-right corner if in classic Outlook)
- Click Apps in the left navigation bar
- Click Get Add-ins
- Select My add-ins tab
- Click ➕ Add a custom add-in → Add from file
- Download
manifest.xmlfrom the repository - Browse to the file and click Upload
- Restart Outlook
- Open Outlook Desktop
- Go to Home tab → Get Add-ins (or Store)
- Click My add-ins in the left panel
- Click ➕ Add a custom add-in → Add from file
- If you see "Add from URL", you can use:
https://David-Summers.github.io/hashfix/manifest.xml
- If you see "Add from URL", you can use:
- Browse to the downloaded
manifest.xmlfile - Click Install
- Restart Outlook
- Download the
manifest.xmlfile from: https://David-Summers.github.io/hashfix/manifest.xml - Open Finder and press Cmd+Shift+G (Go to Folder)
- Paste this path:
~/Library/Containers/com.microsoft.Outlook/Data/Documents/wef - Create the
weffolder if it doesn't exist - Copy
manifest.xmlinto theweffolder - Restart Outlook
Administrators can deploy HashFix organization-wide via:
-
Microsoft 365 Admin Center:
- Go to Settings → Integrated apps → Upload custom apps
- Upload
manifest.xml - Assign to users/groups
-
Centralized Deployment:
- Admin Center → Settings → Services & add-ins → Deploy Add-in
- Upload the manifest
- Configure deployment settings
If you need to download the manifest file manually:
https://David-Summers.github.io/hashfix/manifest.xml
Right-click and "Save as" or use curl/wget:
curl -O https://David-Summers.github.io/hashfix/manifest.xmlSimply compose and send emails normally. HashFix will automatically scan and fix hashtags when you click "Send". You don't need to do anything special.
- In Outlook, compose a new email
- Click the "HashFix" button in the ribbon
- The taskpane will open showing:
- Current status
- Total fixes applied
- Session statistics
- Recent activity log
Before sending:
Hey team, check out these updates:
# marketing campaign is live
# 2024 goals are updated
# newproduct launching soon
After HashFix processes (automatically):
Hey team, check out these updates:
#marketing campaign is live
#2024 goals are updated
#newproduct launching soon
- Outlook Version: Requires Mailbox API 1.10 or higher
- Outlook 2021+
- Outlook on the Web
- Microsoft 365 (Office 365)
- Permissions: ReadWriteMailbox (to read and modify email content)
- Event Type: OnMessageSend with SoftBlock mode
- Pattern Matching: Uses regex
/#\s+(\w+)/g - HTML Processing: DOMParser for safe HTML manipulation
- Storage: SessionStorage for activity logs (local only)
- User composes an email and clicks "Send"
- OnMessageSend event fires
- HashFix retrieves the email body (HTML format)
- Parses HTML using DOMParser
- Recursively processes text nodes
- Fixes hashtag patterns using regex
- Updates email body if changes were made
- Logs activity to sessionStorage
- Allows the email to send
hashfix/
├── manifest.xml # Add-in configuration
├── functions.html # OnSend event handler
├── functions.js # Compatibility layer
├── taskpane.html # Activity dashboard UI
├── support.html # Full documentation
├── icon-16.png # 16x16 icon
├── icon-32.png # 32x32 icon
├── icon-64.png # 64x64 icon
└── README.md # This file
HashFix processes your email content locally in the browser. No email content is sent to external servers.
- ✅ Reads email body when you click "Send"
- ✅ Modifies hashtag formatting
- ✅ Stores anonymous statistics in sessionStorage (local only)
- ❌ Send email content to external servers
- ❌ Store email content
- ❌ Access your contacts or mailbox items
- ❌ Track personal information
- Ensure you're using a supported version of Outlook
- Try restarting Outlook
- Verify the manifest URL is correct
- Check your internet connection
- Open browser console (F12) to check for errors
- Ensure the add-in is enabled in Outlook settings
- Verify Office.js is loading correctly
- Try sending a test email with
# test
- SessionStorage might have been cleared
- Click "Refresh Activity" to reload
- Note: Statistics reset when you close Outlook
-
Clone the repository:
git clone https://github.com/David-Summers/hashfix.git cd hashfix -
Serve files locally (requires a web server):
# Using Python python -m http.server 8000 # Or using Node.js npx http-server -p 8000
-
Update manifest.xml URLs to point to localhost:
<bt:Url id="Functions.Url" DefaultValue="http://localhost:8000/functions.html"/>
-
Sideload the manifest in Outlook
Create test emails with these patterns:
# tag(single space)# tag(double space)# tag(multiple spaces)# 123(numbers)- Mixed content with multiple hashtags
Edit functions.html at line 97 to customize the regex pattern:
function fixHashtagText(text) {
// Current: /#\s+(\w+)/g
// Customize as needed
return text.replace(/#\s+(\w+)/g, '#$1');
}Press F12 in Outlook to open developer tools and view logs:
// HashFix logs messages like:
console.log("HashFix: Hashtags automatically corrected");
console.error("Failed to get email body:", error);- Does not work in Outlook Mobile (OnMessageSend not supported)
- Only processes outgoing emails (not incoming)
- Statistics reset when Outlook is closed
- Requires internet connection (files hosted on GitHub Pages)
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly in Outlook
- Submit a pull request
For help, bug reports, or feature requests:
- GitHub Issues: github.com/David-Summers/hashfix/issues
- Documentation: support.html
- Author: Mark Robinson
- Initial release
- Automatic hashtag spacing correction
- OnMessageSend event handler
- Activity tracking and statistics
- Taskpane UI with dashboard
MIT License - See LICENSE file for details
- Built with Office.js
- Hosted on GitHub Pages
- Designed for Microsoft Outlook
Made with care by Mark Robinson
For more information, visit the GitHub repository.