Troubleshooting
Something not working the way you expect? Start here. Each section below covers a common symptom, why it happens, and how to fix it. Expand the one that matches what you're seeing.
Creating and editing brokers, devices, dashboards, schedules, alerts, and data streams is web-only at app.iotparrot.com. The mobile apps are companions — they view dashboards and control widgets, run NFC automations, view and toggle alerts and schedules, and view history. A lot of "I can't add/edit X on my phone" reports are just this by design.
- Broker won't connect (web app)
- Works on my LAN but not from the app
- TLS / certificate errors
- Not receiving push notifications
- A widget shows no data / gauge is empty
- Schedule didn't fire when expected
- Can't share a dashboard
- "Limit reached" when adding something
- I downgraded and something is read-only
- Still stuck?
Broker won't connect (web app)
My BYO broker connects from a desktop MQTT client but not from the IoT Parrot web app
Cause. The web app runs in your browser, and browsers can't open raw MQTT/TCP sockets — they connect over WebSocket. A broker that only exposes the plain MQTT TCP port (1883/8883) has nothing for the browser to talk to, even though a native desktop client connects fine on that same TCP port.
Fix. Make sure your broker exposes a WebSocket listener, and that the broker's settings in IoT Parrot point at it:
- webSocketPort
- The broker's WebSocket port. Default in the form is
8000— set it to whatever your broker actually listens on. - webSocketPath
- The WebSocket path, default
/mqtt. Many brokers use/mqttor/ws; a wrong path fails the upgrade handshake. - host
- The broker hostname or IP — must be publicly resolvable (see below).
- username / password
- Double-check credentials; an auth rejection looks a lot like a connection failure.
Also confirm your firewall/router forwards the WebSocket port to the broker. A TCP-only broker cannot connect from the browser no matter what else is correct.
Use the IoT Parrot managed broker instead — it's hosted for you with WebSocket and TLS already configured, so it works from the web app with zero setup. See Brokers.
Works on my LAN but not from the app
The broker connects from a device on my home network but not from IoT Parrot
Cause. IoT Parrot's clients (the hosted web app and the mobile apps) run outside your home network. A broker at a private address — localhost, 127.0.0.1, or a LAN IP like 192.168.x.x / 10.x.x.x — isn't reachable from the public internet, so those clients can't find it.
Fix. Give the broker a publicly reachable address:
- Point
hostat a public hostname or your public IP (a dynamic-DNS name works well for home connections). - Forward the broker's WebSocket port (and TLS port) through your router to the broker machine.
- Or skip all of that and use the managed broker — it's already on the public internet. See Brokers.
Local addresses will never resolve for hosted clients, so this isn't a bug you can work around in the app settings — the broker itself has to be reachable.
TLS / certificate errors
Connecting fails with a TLS or certificate error
Cause. When useTLS is on, the browser verifies the broker's certificate against a trusted certificate authority. A self-signed certificate (or one whose hostname doesn't match) fails that check, and the browser silently refuses the connection — there's no "trust anyway" prompt in a hosted web app.
Fix.
- Install a CA-signed certificate on your broker (for example a free Let's Encrypt cert), and make sure it matches the
hostyou connect to. - Confirm you're pointing at the right ports: for the managed broker,
8883for TLS/TCP and8084for secure WebSocket (path/mqtt). For a BYO broker, the TLS TCP port is typically8883and the secure WebSocket port is whatever you configured (the form defaults to8000). - If you truly can't get a CA-signed cert, either turn
useTLSoff (only safe on a trusted private path) or use the managed broker, which handles TLS for you.
Broker passwords are encrypted at rest and never handed back to the client in plaintext — but that protects storage, not the wire. Use TLS so credentials and payloads aren't sent in the clear. See Brokers.
Not receiving push notifications
My alerts aren't sending push notifications
Cause. There are several requirements that all have to line up — and push has one hard limitation: it's mobile-only. There is no web push in this version. A browser will never show alert pushes.
Fix — check each of these:
- Use the mobile app. Install the iOS or Android app and sign in; that's the only place push arrives.
- Grant notification permission to the IoT Parrot app in your phone's settings — if it was denied at first launch, push is blocked at the OS level.
- Alerts require Maker+. On Free and Hobby there are no alert rules at all.
- The rule must be enabled and you must not have hit your daily fire cap (Maker 100/day, Pro 1000/day). After the cap, fires are rate-limited and still recorded in history, flagged — but no push goes out.
- Use Save & test on the rule to send a one-off synthetic notification through your chosen channels. It's the fastest way to confirm push and email are actually reaching you. See Alerts.
A widget shows no data / gauge is empty
A gauge, Get Data widget, or other display stays blank
Cause. The widget is subscribed to a topic that isn't receiving the messages it expects — usually a topic mismatch, a broker mismatch, or a timing issue where the last value was published before the widget loaded.
Fix — work down this list:
- Match the topic exactly. The widget's topic must be character-for-character what the device publishes — MQTT topics are case-sensitive and every
/level matters. A gauge onsensors/greenhouse/temphears nothing if the firmware publishes tosensors/greenhouse/Temp. - Check the device's broker. The widget resolves its connection through its device's broker. If the device points at a different broker than the one the firmware publishes to, the message never arrives. See Devices.
- Retained messages help on load. MQTT only delivers messages published while you're subscribed. If your firmware publishes with the retained flag, the broker keeps the last value and hands it to the widget the moment it connects — otherwise the widget stays blank until the next publish. See MQTT basics.
- Gauges: check request vs. stream mode. In stream mode the gauge listens live to the topic; in request mode it publishes a request payload and waits for a reply on the response topic. If nothing responds to the request, or the device only streams, you'll see an empty dial. See Dashboards & widgets.
Schedule didn't fire when expected
A schedule ran at the wrong time, or not at all
Cause. Schedules are stored and evaluated in UTC, so the most common surprise is a local/UTC mismatch — especially after a daylight-saving change. A background dispatcher runs every minute; fires land in the correct minute but can be a few seconds off.
Fix.
- After a DST change, edit the schedule. Because storage is UTC, a schedule set to a local wall-clock time will shift by an hour when your clocks change — re-save it to lock in the new local time.
- Advanced cron is UTC. If you entered a raw cron expression, remember it's interpreted in UTC (the app labels it). For example
0 8 * * *means 08:00 UTC daily, not 8am local. - Check the daily execution cap. The app blocks saving a schedule whose cron fires more times per day than your tier allows (Hobby 12, Maker 48, Pro 288). If a schedule wouldn't save, it isn't running.
- See Schedules for how simple mode converts local time to a UTC cron for you.
Can't share a dashboard
Sharing a dashboard fails or the recipient never sees it
Cause. Two things trip people up here. First, the recipient must already have an IoT Parrot account — you share by their email, and there's nothing to attach the invite to if they haven't signed up. Second, dashboards on the managed broker cannot be shared.
Fix.
- Ask the recipient to create an account first, then re-send the share to that exact email. They accept the pending invitation from their devices/invitations list, and the dashboard appears under "Shared with me."
- If the dashboard's widgets reference devices on the IoT Parrot managed broker, sharing is unavailable — the managed broker issues per-device credentials that aren't shareable. Rebuild the dashboard on a BYO broker to share it.
- Sharing is a Hobby+ feature. On Free there's no sharing at all.
- Note that recipients connect directly to your broker, so they count toward its connection limits. See Sharing.
"Limit reached" when adding something
I get a "limit reached" message when I try to add a broker, device, dashboard, etc.
Cause. You've hit the cap for your current subscription tier. Every resource type has a per-tier limit — this is expected, not an error.
| Resource | Free | Hobby | Maker | Pro |
|---|---|---|---|---|
| Brokers | 1 | 3 | 10 | 25 |
| Devices | 3 | 10 | 50 | 100 |
| Dashboards | 3 | 10 | 75 | 150 |
| Managed devices | 1 | 3 | 5 | 10 |
| Schedules | 0 | 5 | 25 | 100 |
| Alert rules | 0 | 0 | 5 | 25 |
| Data streams | 0 | 0 | 0 | 20 |
Fix. Either free up room by deleting something you no longer need, or upgrade for higher limits. See Account & billing for how the tiers compare, and Pricing to change plans.
I downgraded and something is read-only
After downgrading, some of my brokers/devices/dashboards are locked
Cause. This is expected behavior. Downgrading never deletes your data. When you drop to a tier with lower limits, resources beyond the new cap become read-only rather than being removed — the most-recently-edited ones stay active, and the rest are soft-locked.
Fix. Upgrade again to make everything editable, or delete resources you no longer need until you're back under the new tier's limit — at which point the remaining items unlock. Nothing is lost in the meantime. See Account & billing.
Still stuck?
If none of the above solved it, we're happy to help. Email hello@iotparrot.com or reach us through the Contact page. Include your account email, the tier you're on, the broker type (managed or BYO), and what you've already tried — it helps us get you a fix faster.