Getting found with no budget: what really matters
A product nobody finds does not exist, and there is usually no budget for advertising. The zero-cost channel is search: whoever already has the problem you solve types it into a search engine, and if your page answers better than the others they come to you. The slow but more lasting channel is word of mouth. Google says so in its guide: word of mouth is one of the most effective and lasting methods, but it takes time and it usually pays to invest first in other practices, such as interaction with the community.
This article does not promise results: the same guide warns that any change can take from a few hours to several months to show up in results, and suggests waiting a few weeks before judging whether a change worked. What you can control is the technical base, which is small and can be checked with a program, and the content, which is all the real work.
Content before technique
Google's introductory guide insists on pages that are useful and written for people before search engines. For someone developing a product the practical translation is a single one: write the pages that solve your customer's problem in the words they use. Not "document management platform", but "how to archive received invoices as PDFs". If you do not know which words they use, the best source is conversations with customers and the questions that reach support, not a paid tool.
A concrete example, declared invented: a tool that turns electronic invoices into a spreadsheet. The useful pages are not the home page and the price list, but a guide on how to read an invoice's XML file, one on how to export the lines into a table, and one on the difference between the format customers see and the one the accountant sees. Each guide answers one question, shows a solution and points to the tool at the point where it is needed.
The minimum technical base
The technical side of a small site comes down to a few things, each with a check you can repeat. Before reading them, a warning: none of these things moves a page up the ranking on its own. They serve to prevent a good page from staying invisible because of a mistake.
- A different title and description for every page, describing that page and not the site.
- Readable addresses that say what the page is about.
- A sitemap with absolute addresses, in UTF-8, hosted at the root of the site.
- Structured data in JSON-LD, when it describes what is seen on the page.
- Search Console to see how Google reads the site.
The first two items affect how your page appears in results: Google's guide explains that the title of a result comes from several sources and that the description is used, at times, for the snippet shown. The sitemap is an aid to discovering pages, not a guarantee of indexing. Structured data helps Google understand the content and, for some types, show rich results. The last item changes nothing on the site but tells you whether something has broken, which is why it pays to enable it right away.
Sitemap and JSON-LD, generated and checked
A wrong sitemap does no serious harm, but a correct one spares you doubts. Google's documentation gives verifiable rules: each sitemap can contain at most 50,000 addresses or 50 MB uncompressed (beyond that, you need a sitemap index), it must be encoded in UTF-8 and it must use full absolute addresses. The listing below builds a sitemap with xml.etree, checks those rules with assert and rereads the result to verify that every address starts with https://. The domain example.com is a reserved placeholder.
# Minimal sitemap and structured data for a small site, with automatic checks.
# The domain is a reserved placeholder (example.com): replace it with yours.
import json
import xml.etree.ElementTree as ET
BASE = "https://www.example.com"
pagine = [("/", "2026-11-01"), ("/invoice-guide", "2026-11-10"), ("/pricing", "2026-11-12")]
NS = "http://www.sitemaps.org/schemas/sitemap/0.9"
radice = ET.Element("urlset", xmlns=NS)
for percorso, ultima_modifica in pagine:
url = ET.SubElement(radice, "url")
ET.SubElement(url, "loc").text = BASE + percorso # absolute URL, as Google asks
ET.SubElement(url, "lastmod").text = ultima_modifica
xml = ET.tostring(radice, encoding="unicode")
# Checks: the same limits written in Google's documentation
assert len(pagine) <= 50_000, "over 50,000 URLs: a sitemap index is needed"
assert len(xml.encode("utf-8")) <= 50 * 1024 * 1024, "over 50 MB uncompressed"
print("sitemap:", len(pagine), "URLs,", len(xml.encode("utf-8")), "bytes")
for loc in ET.fromstring(xml).iter("{%s}loc" % NS):
assert loc.text.startswith("https://"), loc.text
print(" ", loc.text)
# JSON-LD: it must describe what the user SEES on the page, no more
articolo = {
"@context": "https://schema.org",
"@type": "Article",
"headline": "How to invoice a subscription",
"datePublished": "2026-11-10",
"author": {"@type": "Person", "name": "First Last"},
}
testo = json.dumps(articolo, ensure_ascii=False)
assert json.loads(testo) == articolo # the JSON is valid and reads back identical
print("json-ld:", len(testo), "characters, type", articolo["@type"])
# Output:
# sitemap: 3 URLs, 314 bytes
# https://www.example.com/
# https://www.example.com/invoice-guide
# https://www.example.com/pricing
# json-ld: 183 characters, type Article
The second half of the listing produces the structured data as a Python dictionary, writes it with json.dumps and rereads it with json.loads: if the two objects coincide, the JSON is syntactically valid and free of encoding surprises. Google recommends the JSON-LD format, because it sits in a script block separate from the visible text and makes nested data easier to express, provided the content describes what the user sees. The listing does not verify that your markup is eligible for a rich result: for that you need Google's tool, not a program of your own. The output is identical across two consecutive runs.
Where to write, beyond your own site
The communities where your customers ask each other questions are a channel of their own, and I do not have a verified list of Italian forums or groups to recommend: old lists age quickly and many groups have rules against self-promotion. The method that holds up is a different one. Find the places where people describe the problem you solve, read the rules, take part by answering real questions without links, and mention your work only when it is the best answer and the rules allow it.
The sign that it works is a figure you can measure: the requests for help that come from people who read you, the searches for your name in Search Console, the visits from a specific referrer. A number of followers is not. This kind of work is slow and cannot be bought, and that is why it is worth more than yet another banner.
Common mistakes
- Writing for the product's words instead of the customer's.
- Measuring after two days. Google itself suggests waiting a few weeks.
- Copying identical descriptions across many pages.
- Marking up in structured data what does not appear on the page.
These are four mistakes of trust, more than of technique: you trust how you name the product, a measurement taken too early, a copied template, a datum nobody sees. They are all corrected with the same habit, which is rereading the page through the eyes of someone arriving from a search. After the page, the next step is making sure that whoever arrives finds a product that can be paid for: payments with Stripe.
Frequently asked questions
How long does it take to see results from search?
There is no guaranteed time. Google's guide speaks of changes that take effect in a few hours or in several months, and advises waiting a few weeks before evaluating. Plan in months, not days.
Do I need a paid SEO tool?
To start, no: Search Console, Google's tool for site owners, shows which searches bring visits and which pages have problems. Paid tools are useful when you already have content and want to analyze the competition, not to get started.
Does the sitemap get pages indexed?
No. According to Google's documentation, submitting a sitemap is only a hint: it does not guarantee that Google will download it or use it to crawl the addresses. It remains useful as a signal of new and updated pages, but it does not replace content worth the visit.
What you can do now
You can choose topics from customers' questions, check a sitemap against Google's limits with a program, produce structured data in JSON-LD that reads back without errors, and tell a marketing result from a vanity metric. For the tax on what you earn go back to the regime forfettario, and for the infrastructure that holds the traffic see low-cost hosting and the support you will need when the first customers arrive.
If you want to estimate how many visitors you need, the article on success stories contains a simulation on the conversion rate, and the first article calculates how many subscribers are needed to cover the costs.
Sources
- Google Search Central, SEO starter guide - timing of effects, title and description of results, word of mouth and community, consulted on 2026-11-13
- Google Search Central, build and submit a sitemap - limits of 50,000 URLs and 50 MB, UTF-8, absolute URLs, consulted on 2026-11-13
- Google Search Central, introduction to structured data - JSON-LD as the recommended format, consulted on 2026-11-13

Commenti
Caricamento commenti...
Sign in to comment