57 notes on running automated operations. One page per problem: what it is, why it happens, how to tell, and what actually fixes it.
Start with the guide: Being cited by AI search
Hashing a rendered page to spot real content changes sounds simple. Modern frameworks rewrite enough of the document on every build that almost every page looks changed.
Guides and explainers often outrank product pages by fifty positions. If they do not link to the thing they describe, that ranking does nothing for you.
What actually moves AI citations: being crawlable, being specific, being the best answer to a narrow question, and getting new pages indexed fast.
A simple protocol for telling search engines a URL changed, instead of waiting to be crawled. What it does, what it does not, and how to set it up.
A second search engine can be a fifth of your impressions, a third of your clicks, and the entire basis of your visibility inside AI assistants. It has its own console.
A term with good volume and low difficulty can still be the wrong phrase. Your own impression data is the only thing that confirms buyers use those words.
The file is cheap and harmless, and the measured evidence says AI crawlers are not fetching it and publishing it does not affect citations. Spend the effort elsewhere.
If your site auditor records a failed fetch and an empty field the same way, every rate limited URL becomes a fabricated defect, and the report looks completely normal.
A wording change gets applied to the pages everyone looks at. It survives in the articles, the structured data and the product feed that keeps publishing it to shopping engines.
Two hand-maintained lists, one of published articles and one of sitemap slugs, drift apart. The sitemap keeps pointing search engines at pages nobody ever wrote.
A one line web server misconfiguration that makes every wrong URL on your site look like a real page to a crawler.
Start with the guide: Email that actually arrives
A brand new sending domain has no reputation, and the mail that matters most is exactly the mail you cannot afford to have filtered.
Removing a custom domain from one tenant and adding it to another tears down the mail routing host behind the MX record. Until it is rebuilt nothing delivers, and the dangerous moment is when it comes back.
Error 715 when adding a custom domain, and the stale verification record that usually causes it.
Sending test emails to check mail flow gives you one data point and a bounce. An SMTP recipient probe asks the same question repeatedly, costs nothing, and reveals when the answer is inconsistent.
The domain move is the hard part of a tenant migration, not the mailboxes. The teardown window, the two rejection codes, and how to tell when it is genuinely ready.
The parameter every guide tells you to use is sometimes missing entirely, failing as "parameter cannot be found". It is there for some connections and not others, and the difference is your roles.
Two SPF records is a hard failure. So is exceeding the lookup limit. Both happen naturally as you add services.
Adding a transport rule and finding it does nothing is usually not a problem with the rule. It is a rule above it with stop processing enabled.
Start with the guide: Self-hosting it reliably
Push notifications for a small operation: what deserves an alert, what does not, and how to stop a useful channel becoming noise.
What to back up when everything runs in containers, why the volume snapshot is not enough, and the restore rehearsal that finds the gap.
An old sign-in kept coming back after we cleared the app, the credential store and the browser, and after a full reinstall. Half the tokens lived in the cloud-synced keychain and were being restored from the phone.
Permission errors on mounted secrets are usually ownership mismatches between the host user and the container user, not permission bits.
Both modules work alone. Loaded together, the second fails with a missing-method error. Nothing is misconfigured; whichever loaded first won a version argument you never saw.
Installing a module for the current user puts it in Documents. If Documents is redirected into a sync client, the module installs successfully and then fails to load.
A per-pair data structure grew as the square of the population, crossed a runtime string limit, and turned one failed save into 26,000 restarts.
Pages that matter to Google already publish their content as structured data. Extracting that costs nothing, returns exact values, and beats sending the prose to a model.
Software controls on hardware you have posted to a stranger are a deterrent, not a control. What actually works is at the network layer.
Whether a restart picks up your changes depends entirely on how the code got into the image. Getting this wrong makes a fix look like it did not work.
Most role assignments apply within minutes. A few take up to a day, and you will discover which at the exact moment you need them.
A tenant with no conditional access policies can still refuse a sign-in. Device code flow is blocked by the default baseline, and the failure looks like a permissions problem.
You want to close the laptop and keep working from your phone. The fix is not syncing your history, it is moving the process onto hardware that never sleeps, and reaching it over an outbound channel.
A user types their correct address and the sign-in page redirects them to an old one. It looks like the device is caching credentials. It is not the device, and clearing the device will not fix it.
A wildcard DNS service plus a reverse proxy gives you a real HTTPS URL for a staging site, with no records to add and nothing to clean up.
The nightly job dumped every database, failed to upload any of them, reported one error, and then deleted the oldest copy that was still offsite. It ran that way for five nights.
Hardware sold under one model name can ship with materially different internals depending on the batch or region variant.
A statically deployed site collects production-only edits that no build reproduces. Deploying a fresh build then silently removes them, and nothing warns you.
On cloud hosting, a provider level firewall sits in front of the machine. Rules you set on the host can be irrelevant in both directions.
Start with the guide: Running n8n in production
Export, edit the JSON, import it back. The workflow still shows as active and its webhook URL now returns 404, with nothing in the logs to tell you.
Updating workflow_entity.nodes in the n8n database changes the draft, not the copy that executes. The edit reads back correctly and never runs.
The handful of choices that decide whether a self-hosted n8n instance is reliable or a liability: database, exposure, webhook paths, and backups.
Start with the guide: Automating orders, payments and returns
When card payments are not available, bank transfer works, but only if reconciliation is automatic. Polling, matching, and the tolerances that matter.
A hosted payment link that collects nothing but money cannot be matched to the record it belongs to. What that costs, and the field that prevents it.
Return labels, scan detection, chasing what has not come back, and tying refunds to a scan rather than a promise.
Getting reviews consistently by attaching the invitation to an event you already have, and the compliance line not to cross.
Random reference numbers seem safer and create work at every point where a human has to read one back to you.
A guard that rejects one document in eleven because reality disagrees with it is worse than no guard at all. Test every rule against real history before it goes live.
Start with the guide: Running an AI support desk
Domains that quietly fall out of verification, addresses added to suppression lists, and the alerts you stop receiving because of it.
The obvious no-reply filter misses most automated senders. Why, and what a filter that actually works looks like.
Inbound email into tickets, automatic categorisation and priority, and alerts that only fire for things that matter. The architecture and the traps.
Start with the guide: Knowing where your traffic actually comes from
Taps from mobile apps often arrive with a referrer that names the parent company rather than the app, so email and messaging traffic is recorded as organic search.
Capturing where a customer originally came from and carrying it through to the order record, using a cookie and one extra field.
A small self-hosted approach to seeing real visitors in real time, separating humans from bots, and recording where each one came from.
The same week of traffic read as a 67% collapse, a 24% decline, and flat, depending on which rows were counted. A second independent measurement is the only thing that settles it.
Sharing a visits table across properties is fine until a query forgets to filter by site, and invents user journeys from two different businesses.
Filtering traffic on the user agent string only catches bots that admit to being bots. Anything using a browser fingerprint from a hosting IP walks straight through.
Assistant traffic often arrives with no referrer, so it is filed as direct and appears to send nothing. How to tell whether it is really happening.
These notes are free and always will be. If you would rather someone just set it up, or you are stuck on something similar, get in touch at hello@opsira.io.