UI/iFrame integrations
Build custom UI integrations with iFrames that interact with Missive using JavaScript API.
iFrame integrations
You can develop your own integration that is injected into Missive with an iframe that can interact with our application via a JavaScript library.
Library
Include this script in your integration page. Check out the JavaScript API.
<script src="https://integrations.missiveapp.com/missive.js"></script>Styles
For your convenience, we also provide a stylesheet for you to include if you want your integration to match our styles. Not only does it accelerate development, it will also make your integration support all of our themes by default. Check out our CSS styleguide.
<link href="https://integrations.missiveapp.com/missive.css" rel="stylesheet">Development
https is required when adding a custom integration to Missive. During development, we suggest using a tool like Caddy or Ngrok to create a secure tunnel to your local development server.
iOS compatibility
iFrame integrations are supported on iOS. Missive on iOS is a web app loaded from localhost, which makes it stricter about iframe security headers.
If your integration loads on web and desktop but appears blank on iOS, check your Content-Security-Policy headers. Setting frame-ancestors: * will cause the iframe to fail on iOS. Remove the frame-ancestors directive entirely to allow loading from localhost.
Debugging
To debug your integration, you need access to the browser console:
Open the Command Bar with ⌘/Ctrl + K
Search for
OPEN_DEV_TOOLSSelect the command to open the browser developer tools
This gives you access to the full browser console where you can:
View console.log output from your integration
Inspect errors and stack traces
Debug JavaScript code
Monitor network requests
Inspect the DOM
Security
There are multiple ways you can secure your iFrame:
Implement authentication inside the iFrame (most secure)
Implement authentication logic in your iFrame itself so your users have to log in before seeing the iFrame content.
You can use Missive's secure storage to persist authentication:
Values are stored per-integration and per-user
Tokens persist across page reloads
Storage is managed securely by Missive and cleared at user log out
Delegate OAuth flow to Missive with initiateCallback (best for OAuth providers)
How it works:
Missive opens the auth URL in a new browser tab
Adds a
redirectToparameter to your URLAfter OAuth completion, redirect to the provided
redirectToURL with your tokens/data as query paramsThe browser tab closes automatically
Your integration receives the data in the
responseobject
Important notes:
Works around iframe OAuth limitations
Compatible with iOS (uses localStorage instead of cookies)
The
redirectToURL is unique per attemptStore the
redirectToURL during OAuth redirects
Remember:
Always validate tokens on your server
Use HTTPS for all communications
Need help building your integration?
If you don't have the technical skills to build a custom integration, check our partners list for developers who can help.
Need more specific answers?
Last updated