# Going Stellar > A small product and performance team in Brașov, Romania. We publish applications on the Shopify App Store, the Google Workspace Marketplace and Atlassian Forge, and we run paid acquisition, SEO and profitability data for a group of e-commerce stores. GOING STELLAR S.R.L. · VAT RO47020390 · Str. Zizinului 667, Tărlungeni 507220, Brașov, Romania · gheorghe.beschea@overheat.agency Applications verified 11 October 2026; operating figures 31 August 2026. Every figure below names the system it came from; the long file has the queries. ## What we publish - Shopify App Store: 20 applications, live and installable. - Google Workspace Marketplace: 15 add-ons, live and installable. - Atlassian Forge: 25 apps built for Jira and Confluence; 4 of them are live on the Atlassian Marketplace (vendor page: https://marketplace.atlassian.com/vendors/12665203), the other 21 are not yet listed. - monday.com: 1 board view built and submitted; the first review (28 September 2026) sent it back, so it is not listed. - Total built across four marketplaces: 61, of which 39 are live. ## Pages - [Home](https://goingstellar.ro/): We build marketplace software and run growth for online stores. 39 apps live on the Shopify, Google Workspace and Atlassian marketplaces; the same systems run a group of 26 stores across 7 countries. - [Applications](https://goingstellar.ro/apps/): 39 applications live on the Shopify App Store, the Google Workspace Marketplace and the Atlassian Marketplace, plus 22 more built for Atlassian Forge and monday.com. - [Agency](https://goingstellar.ro/services/): Google Ads, Meta and TikTok, SEO and AI search, Shopify builds, custom software, profitability data and e-commerce operations. Retainer or project, starting with a paid audit. - [Work](https://goingstellar.ro/work/): Six pieces of work with the numbers behind them: broken conversion measurement, brand-ad cannibalisation, cash-on-delivery attribution, a profitability engine, SEO at scale and a refusal-prediction model. - [Methods](https://goingstellar.ro/methods/): How we build apps and games, run e-commerce on profit, keep data honest and make sites AI assistants can cite: step-by-step playbooks with the traps we hit and the checks we run now. - [Research](https://goingstellar.ro/research/): Studies from our own stores and our own marketplace listings, with the method, the figures and the limitations published alongside. - [Numbers](https://goingstellar.ro/numbers/): The fleet in figures, with the source of each one named: applications per marketplace, stores, countries, currencies and orders processed. - [About](https://goingstellar.ro/about/): A small product and performance team in Brașov, Romania. What we build, how we work, and the six rules every product is measured against. - [Shopify](https://goingstellar.ro/apps/shopify/): Twenty apps live on the Shopify App Store: fulfilment, warehouse pick-and-pack, cash-on-delivery risk, conversion, tracking, SEO, and EU price and product-safety compliance. - [Google Workspace](https://goingstellar.ro/apps/google-workspace/): Fifteen add-ons live on the Google Workspace Marketplace for Docs, Sheets, Slides and Gmail — statistics, what-if analysis, scheduled reports, icons, fonts, sorting, code colouring, geocoding and scheduled email. - [Atlassian](https://goingstellar.ro/apps/atlassian/): Twenty-five Atlassian Forge apps built for Jira and Confluence, plus a monday.com board view. Four are live on the Atlassian Marketplace; the rest are built and not yet listed. - [For AI](https://goingstellar.ro/ai/): A plain-text mirror of this site for language models and crawlers: llms.txt and llms-full.txt, with every application, figure and source. - [Contact](https://goingstellar.ro/contact/): Write in English or Romanian. A person reads it — usually the same person who would do the work — and answers within one business day. - [Romanian version](https://goingstellar.ro/ro/): the whole site, in Romanian. ## Methods 52 playbooks: how we build apps for each marketplace, how we make games, and how we decide what to build. Each has a Markdown mirror and is licensed CC BY 4.0. - Index of all of them, in one request: https://goingstellar.ro/methods/index.md - Every playbook also exists in Romanian under /ro/metode/. - [The demand test: how we decide whether an app is worth building](https://goingstellar.ro/methods/demand-test-how-we-decide-whether-an-app-is-worth-building/): Before we write a line of code we ask one question of the marketplace: is anyone arriving in this niche now, and is anyone paying? We answer it from public data we scan ourselves, measure flow rather than lifetime totals, read complaints in full, count people rather than seats, and refuse to size a market until we can name the platform mechanism the product depends on. Markdown: https://goingstellar.ro/methods/demand-test-how-we-decide-whether-an-app-is-worth-building.md - [Triple deep research, fused into one roadmap](https://goingstellar.ro/methods/triple-deep-research-fused-into-one-roadmap/): At the start of every project, and again before every major version, we run the same research question through three AI deep-research engines and fuse the reports into one master roadmap. The value comes from the disagreements between engines and from verifying every load-bearing claim at source; the reports themselves are drafts, not findings. Markdown: https://goingstellar.ro/methods/triple-deep-research-fused-into-one-roadmap.md - [How we build a Shopify app](https://goingstellar.ro/methods/how-we-build-a-shopify-app/): We build every Shopify app on one shared chassis, keep the logic that makes it different in a pure module we can test for free, and treat the payment path as unproven until a real click reaches Shopify's approval page. Most of the method is a list of checks we added after something broke. Markdown: https://goingstellar.ro/methods/how-we-build-a-shopify-app.md - [How we build a Google Workspace add-on](https://goingstellar.ro/methods/how-we-build-a-google-workspace-add-on/): We build each add-on on Apps Script and CardService with the narrowest scope that does the job, then take it through consent, verification and review. Approval proves little: what kept our add-ons working was testing on a clean account, testing what they write, and counting people rather than seats. Markdown: https://goingstellar.ro/methods/how-we-build-a-google-workspace-add-on.md - [How we build and ship Atlassian Forge apps](https://goingstellar.ro/methods/how-we-build-and-ship-atlassian-forge-apps/): We built 25 Jira and Confluence apps on a few shared chassis and submitted them together. Four are public; the other 21 were rejected and are stuck behind a listing state only Atlassian can clear, because we skipped the step that would have shown us the wall: taking one app all the way through review first. Markdown: https://goingstellar.ro/methods/how-we-build-and-ship-atlassian-forge-apps.md - [How we build a monday.com app](https://goingstellar.ro/methods/how-we-build-a-monday-app/): We built one monday.com app, a board view that writes a short AI summary of a board, and submitted it in August 2026. It was rejected in September for overlapping apps that already exist. The build method held up; the step we skipped was asking monday, before writing code, whether the concept would clear its duplication policy. Markdown: https://goingstellar.ro/methods/how-we-build-a-monday-app.md - [How we build an iPhone app](https://goingstellar.ro/methods/how-we-build-an-iphone-app/): We test demand with our own App Store scanner before writing code, keep the engine in a package that can be verified without Xcode, and treat a clean install on the simulator as our first reviewer. Our worked example, Null Field, is built and ready to submit, but it has not been submitted. Markdown: https://goingstellar.ro/methods/how-we-build-an-iphone-app.md - [How we build an Android app for Google Play](https://goingstellar.ro/methods/how-we-build-an-android-app-for-google-play/): We read Google Play's gates and measure demand before writing code, build a native Kotlin and Compose app, then look at it running: our worst defects were visible only on screen. Our first app is built but not published, and our own research says organic Play distribution will not carry it. Markdown: https://goingstellar.ro/methods/how-we-build-an-android-app-for-google-play.md - [Recording demo screencasts that pass marketplace review](https://goingstellar.ro/methods/recording-demo-screencasts-that-pass-marketplace-review/): We record the page, not the screen, in a dedicated browser, with steps addressed by selector and captions burned in. Each beat of the film shows one thing the requested permission is used for, so the reviewer can see the app do what the listing claims. Most of our rejected takes came from the surface and from leftover state, not from the app. Markdown: https://goingstellar.ro/methods/recording-demo-screencasts-that-pass-marketplace-review.md - [How to answer privacy, GDPR and security questionnaires for marketplace apps](https://goingstellar.ro/methods/privacy-gdpr-security-questionnaires-marketplace-apps/): Every app marketplace asks what data the app touches, where it goes, who else processes it and what protects it. We answer every form from one data map per app, back each Yes with a public page or a contract, and treat a No that blocks approval as a reason to build, not to reword. Markdown: https://goingstellar.ro/methods/privacy-gdpr-security-questionnaires-marketplace-apps.md - [How we make a game in Godot](https://goingstellar.ro/methods/how-we-make-a-game-in-godot/): We are building SOLOMONAR, a first-person folk-horror game set in a Maramureș village over seven days, with agents doing most of the typing and one person deciding. The method rests on three decisions taken on day one, a world that can be checked without a screen, and one rule: no automated check is trusted until we have seen it fail on a world we broke on purpose. Markdown: https://goingstellar.ro/methods/how-we-make-a-game-in-godot.md - [Game assets on a small budget: CC0 characters, animation retargeting and local Romanian voices](https://goingstellar.ro/methods/game-assets-on-a-small-budget/): For SOLOMONAR we take people, animations, voices and music from free sources and run the voice generation on our own machines. The method is to read every licence inside the file, under the heading it sits under, and to check the whole chain an asset came from. That reading reversed one of our own decisions: the Romanian voice we had cleared turned out not to be cleared. Markdown: https://goingstellar.ro/methods/game-assets-on-a-small-budget.md - [Publishing without invented numbers: how we write these articles](https://goingstellar.ro/methods/publishing-without-invented-numbers/): The articles on this site are drafted by AI agents, checked by other agents and then by a script with no model in it. The method rests on one finding from the first round: language models invent quantities in words as readily as in digits, so a checker that only reads digits passes most of what it should stop. Markdown: https://goingstellar.ro/methods/publishing-without-invented-numbers.md - [Working with a fleet of AI coding agents without losing work](https://goingstellar.ro/methods/working-with-a-fleet-of-ai-coding-agents/): We run many AI coding agents at once, often on the same files and the same systems. Almost nothing we lost came from bad code. It came from coordination: agents sharing a scratch space, two runs writing one live file, a deploy that published someone else's half-finished work, and runs that died together and resumed blind. These are the rules we follow now. Markdown: https://goingstellar.ro/methods/working-with-a-fleet-of-ai-coding-agents.md - [The honesty gate: no feature claim without proof in the code](https://goingstellar.ro/methods/honesty-gate-no-claim-without-proof/): Before any submission we compare every claim on a plan page, a listing or a public page with the code that is supposed to back it. A claim stays only if a merchant can reach a working implementation; otherwise we build the feature or delete the claim. A script catches the mechanical cases, and the rest is read by hand. Markdown: https://goingstellar.ro/methods/honesty-gate-no-claim-without-proof.md - [How to make a website that AI assistants can read and cite](https://goingstellar.ro/methods/how-to-make-a-website-ai-assistants-can-read-and-cite/): Publish every page twice, as HTML for people and as Markdown for machines, and generate both from one source so they cannot disagree. Add an llms.txt index, an Atom feed, Article structured data that points to the Markdown, and a robots.txt that names the AI crawlers. Then check each file by what the server actually sends, not by whether it answers. Markdown: https://goingstellar.ro/methods/how-to-make-a-website-ai-assistants-can-read-and-cite.md - [How to make a Shopify store readable by AI assistants (GEO for e-commerce)](https://goingstellar.ro/methods/how-to-make-a-shopify-store-readable-by-ai-assistants/): Generative engine optimisation (GEO) for a Shopify store is ordinary SEO aimed at AI answers: let the AI crawlers in, write pages that answer questions in quotable passages, add structured data that is true, give Shopify's own assistant real FAQs, and measure visits that arrive from AI referrers. This is the method we built into our Shopify app Cite Me, with the mistakes that shaped it. Markdown: https://goingstellar.ro/methods/how-to-make-a-shopify-store-readable-by-ai-assistants.md - [How we turn repeated work into AI agent skills](https://goingstellar.ro/methods/turn-repeated-work-into-ai-agent-skills/): An agent skill is a folder with a SKILL.md file that tells an AI coding agent when and how to do one recurring job, plus any script the job needs. We extend an existing skill before creating a new one, make every write a dry run by default, and keep the rules that must hold outside the prompt: in hooks, read-only database roles and a shared knowledge base. Markdown: https://goingstellar.ro/methods/turn-repeated-work-into-ai-agent-skills.md - [How to calculate breakeven CPA for a cash-on-delivery store](https://goingstellar.ro/methods/breakeven-cpa-cash-on-delivery/): Breakeven CPA is the most a store can pay in advertising for one placed order before that order loses money. For a cash-on-delivery store it is revenue without VAT, minus goods and shipping, counted only on delivered orders, minus the shipping already paid on every refused parcel. We scale only below 70% of that number. Markdown: https://goingstellar.ro/methods/breakeven-cpa-cash-on-delivery.md - [How to judge ad campaigns on profit, not on target CPA](https://goingstellar.ro/methods/judge-ad-campaigns-on-profit/): To decide whether to scale, hold or cut an ad campaign, compare its cost per order with the store's breakeven CPA, not with a target CPA someone chose. Platform-reported ROAS is inflated, so CPA is the safer gate; brand search and ads on sold-out products need their own tests, because both look different in the report than in the bank account. Markdown: https://goingstellar.ro/methods/judge-ad-campaigns-on-profit.md - [How to catch silent data failures: freshness watchdogs, heartbeats and reconciliation](https://goingstellar.ro/methods/catch-silent-data-failures/): A silent data failure is a pipeline that reports success while its data is stale or wrong. We catch them with three scheduled checks: a watchdog that reads the newest row instead of the job status, heartbeats that fire only on success, and a daily reconciliation of the same number from two independent sources. The checks themselves were wrong several times, and those mistakes are part of the method. Markdown: https://goingstellar.ro/methods/catch-silent-data-failures.md - [Safe deploys: dry-run by default, parity checks and verifying what actually shipped](https://goingstellar.ro/methods/safe-deploys-dry-run-parity-checks/): A successful deploy command proves that a transfer happened, not what was transferred. We make deploys safe with three habits: every deploy script is a dry run unless given --apply, a daily parity check compares server files with git, and after publishing we compare the served source and response bodies with what we meant to ship. Markdown: https://goingstellar.ro/methods/safe-deploys-dry-run-parity-checks.md - [Testing a website at phone width: why headless screenshots lie](https://goingstellar.ro/methods/test-website-phone-width-headless-screenshots/): Headless Chrome will not lay a page out narrower than about 500 CSS pixels, so a 390-pixel screenshot is a crop of a wider page, not a phone. We test phone widths with device emulation over the Chrome DevTools Protocol and then measure the page instead of looking at it. Six traps on our own site were caught only that way. Markdown: https://goingstellar.ro/methods/test-website-phone-width-headless-screenshots.md - [How Shopify Admin API tokens expire and refresh: permanent tokens, expiring tokens and the refresh traps](https://goingstellar.ro/methods/shopify-admin-api-tokens-expiring-refresh/): Shopify Admin API tokens come in kinds that must be handled differently: a permanent custom-app token must never go through refresh logic, while an expiring token must be refreshed with a single-use refresh token that you persist every time. Most of our token outages were not expired tokens but refresh logic applied to the wrong token, or two refreshes racing each other. Markdown: https://goingstellar.ro/methods/shopify-admin-api-tokens-expiring-refresh.md - [How to deploy Google Apps Script code through the API instead of copy-paste](https://goingstellar.ro/methods/deploy-google-apps-script-via-api/): Google Apps Script code can be read and written through the Apps Script API, so a script no longer has to be pasted into the editor by hand. Our deploy tool runs as a dry run by default, backs up the current project before every write, re-sends every file because the API replaces the whole project, and verifies the result twice: by reading the code back and by checking what the script wrote. Markdown: https://goingstellar.ro/methods/deploy-google-apps-script-via-api.md - [Fail-safe caches and backfills: never delete history before the new data arrives](https://goingstellar.ro/methods/fail-safe-caches-and-backfills/): A fail-safe cache is one where a failed refresh leaves the previous data untouched: write with a pure upsert, never delete-then-reinsert, and retry the timeout exception your client library really raises. Backfills fill gaps with IS NULL instead of rewriting decisions, snapshots check themselves on read, and a value from today never answers a question about the past. Markdown: https://goingstellar.ro/methods/fail-safe-caches-and-backfills.md - [SQLite and database traps in small production apps](https://goingstellar.ro/methods/sqlite-and-database-traps-small-production-apps/): The database traps that hurt small production apps are not about scale: a long read on SQLite blocks every writer, a filter on an encrypted column silently matches nothing, DISTINCT fails on a table with a json column, commit() and rollback() expire ORM objects even inside the error handler, and a fixed epsilon is too small for a float32 column. Each one passes a quick test and fails in production, usually without a clear error. Markdown: https://goingstellar.ro/methods/sqlite-and-database-traps-small-production-apps.md - [How to check product images before they go live: the traps in automated packshots and infographics](https://goingstellar.ro/methods/product-images-packshots-infographics-traps/): Every serious product-image fault we found passed our automated checks: a clean packshot missing half the product, an infographic with correct dimensions drawn over another product, a sharp file that turned blurry once cropped. The method is to open every image and compare it with an independent reference for the physical product, not with other pictures from the same supplier pack. Markdown: https://goingstellar.ro/methods/product-images-packshots-infographics-traps.md - [How to mine Google Ads search terms and negative keywords without cutting conversions](https://goingstellar.ro/methods/google-ads-search-terms-negative-keywords/): Mine Google Ads search terms by grouping the real queries into words and short phrases (n-grams), add negative keywords only for patterns that are clearly outside what the store sells, and audit existing negatives for ones that block buyers. Zero conversions on a single search term is not proof of waste: on Shopping and Performance Max most sales come from a long tail of queries that each convert rarely. Markdown: https://goingstellar.ro/methods/google-ads-search-terms-negative-keywords.md - [How to avoid a Google Merchant Center misrepresentation suspension, and keep the feed healthy](https://goingstellar.ro/methods/merchant-center-misrepresentation-suspension/): A Merchant Center misrepresentation suspension usually comes from trust signals, not from checkout: a hidden or contradictory company identity, missing policy pages, empty business information, and on-site claims that are not true, such as countdowns that restart for every visitor or invented sales counts. Fix every signal before you request a review, because review requests are limited, and run a weekly feed-health check so product-level problems never pile up. Markdown: https://goingstellar.ro/methods/merchant-center-misrepresentation-suspension.md - [How to detect creative fatigue on Meta and TikTok ads](https://goingstellar.ro/methods/detect-creative-fatigue-meta-tiktok/): Creative fatigue is visible as a pattern, not as one bad metric: frequency climbing while click-through rate falls or cost per purchase rises. We compare the last 7 days of each ad account with the 21 days before, flag an account only when frequency is up more than 15% and CTR is down more than 10% or CPA is up more than 20%, and only then drill down to individual ads. Most of our false alarms came from the data, not from the audience. Markdown: https://goingstellar.ro/methods/detect-creative-fatigue-meta-tiktok.md - [How to audit email and SMS lifecycle flows before writing new campaigns](https://goingstellar.ro/methods/audit-email-sms-lifecycle-flows/): Before writing another email campaign, check which automated lifecycle flows the store already runs against a standard list of 10, whether each one is live or only a draft, and how much the email platform over-credits itself compared with your analytics. Then check the two things no flow audit shows: that consent withdrawals reach the sending platform at once, and that segments are built on customers who actually received their orders. Markdown: https://goingstellar.ro/methods/audit-email-sms-lifecycle-flows.md - [How to catch duplicate orders before the shipping label is printed](https://goingstellar.ro/methods/catch-duplicate-orders-before-the-label/): A duplicate order is the same customer placing the same order twice, usually minutes apart. We catch duplicate orders by running the duplicate decision inside the step that creates the shipping label, matching on the normalised phone number, and cancelling automatically only pairs that are strictly identical; everything else goes to a person. Our first detector decided correctly but too late, and most of what we know came from the cases it got wrong. Markdown: https://goingstellar.ro/methods/catch-duplicate-orders-before-the-label.md - [Ghost shipments: labels created but never scanned by the courier, and how to find them](https://goingstellar.ro/methods/ghost-shipments-labels-never-scanned/): A ghost shipment is a parcel whose shipping label exists but which the courier never scanned at pickup, while the customer has already been told the order shipped. We find ghost shipments by asking the courier, not our own records, for the last event of every label older than a few days, treating a missing answer as a failed read rather than a status, and sending every case to a person instead of remaking labels automatically. Markdown: https://goingstellar.ro/methods/ghost-shipments-labels-never-scanned.md - [How to use AI to draft customer service replies without letting it send them](https://goingstellar.ro/methods/ai-drafted-customer-service-replies/): We let a language model draft customer service replies from the team's approved macros and from procedures learned from real agent replies, grounded in the customer's actual order data. A human reviews and sends every reply; the model never sends. The guards around the draft matter more than the prompt, and most of what we learned came from guards that were silently not working. Markdown: https://goingstellar.ro/methods/ai-drafted-customer-service-replies.md - [How to catch refunds that were promised but never paid: a refund watchdog for customer service](https://goingstellar.ro/methods/refund-watchdog-promised-refunds-never-paid/): A refund watchdog is a read-only report that finds customers who are owed money the store never returned: card orders cancelled without a refund, and accepted returns that were sent to payment but never paid. It runs two plain rules against the order and return records and lists the oldest cases first. Our worst refund failure was a refund button that had never worked while every ticket showed as refunded. Markdown: https://goingstellar.ro/methods/refund-watchdog-promised-refunds-never-paid.md - [How to calculate reorder quantity and stock-out date per SKU from daily inventory snapshots](https://goingstellar.ro/methods/reorder-planning-daily-inventory-snapshots/): Reorder quantity per SKU is daily sales velocity times the days until the next delivery plus a safety buffer, minus what is on hand and what is already on the way. Velocity can be read from daily inventory snapshots, but only after correcting for restocks, stock-outs and duplicated stock rows, and the incoming figure must come from what was actually loaded, not from what was ordered. Markdown: https://goingstellar.ro/methods/reorder-planning-daily-inventory-snapshots.md - [How to build a warehouse barcode scanning app for Android rugged scanners](https://goingstellar.ro/methods/warehouse-scanning-app-android-rugged-scanners/): A warehouse scanning app turns a barcode read on a rugged Android terminal into an answer the picker can act on in a glance. We take the scan from the hardware scanner as a broadcast, route every screen through the same scan handler, write status as short field labels with colour for severity, and test every text colour against every background in both the light and the dark theme. Most of our bugs were a fix that existed on one screen and not on the others. Markdown: https://goingstellar.ro/methods/warehouse-scanning-app-android-rugged-scanners.md - [How to print shipping labels from several warehouse stations without losing or double-printing labels](https://goingstellar.ro/methods/label-printing-several-warehouse-stations/): When several warehouse stations print shipping labels from the same orders, the safe design is one print queue in which downloading a label is the act that removes it from every station's queue. We route each label to one station with a single shared rule, filter before we download, mark as printed everything we export by any other path, and send a batch as one complete document. Every lost or double-printed label we had came from a download that happened in the wrong place or at the wrong time. Markdown: https://goingstellar.ro/methods/label-printing-several-warehouse-stations.md - [Normalising delivery addresses across countries: postcodes, Cyrillic, street-length limits](https://goingstellar.ro/methods/normalising-international-delivery-addresses/): Address normalisation turns what a customer typed into the form a courier accepts and a national register confirms. We do it per country: first we find out whether that country's postcode describes a street or a whole locality, then we validate against a register whose flaws we know, normalise the register and the search with the same function, and send the courier its own spelling and identifiers. Most of the failures we hit were in the plumbing around the address, not in the address. Markdown: https://goingstellar.ro/methods/normalising-international-delivery-addresses.md - [Handling GDPR erasure requests across the store, helpdesk and email tools](https://goingstellar.ro/methods/gdpr-erasure-requests-store-helpdesk-email/): A GDPR erasure request is a customer asking an online store to delete their personal data. We stop marketing to that person within the hour, map every system that holds a copy, delete only by exact keys, and install a deletion ledger before deleting anything, because nightly syncs rebuild what you erase. Some records, such as invoices, must be kept by law, so the reply never says "we deleted everything". This is our working method, not legal advice. Markdown: https://goingstellar.ro/methods/gdpr-erasure-requests-store-helpdesk-email.md - [How to write SEO blog articles for an online store without invented facts](https://goingstellar.ro/methods/seo-articles-online-store-no-invented-facts/): An SEO article on a store blog may only mention products that exist and are in stock, and only claims the store can prove. We ground the writer in a catalogue exported from the store, have a second agent try to refute each draft, and let a script with no model in it block publication on fake product links, banned words and invisible AI characters. Markdown: https://goingstellar.ro/methods/seo-articles-online-store-no-invented-facts.md - [How to calculate profit per product for a cash-on-delivery store](https://goingstellar.ro/methods/profit-per-product-cash-on-delivery/): Profit per product is the contribution each SKU leaves after its own costs: revenue without VAT, minus cost of goods, transport and marketing, counted on delivered orders only. Free gift units carry their real cost, transport comes from the real cost of each order with a fallback cascade, and marketing is allocated per order. The hard part is not the formula but taking each input from the right source. Markdown: https://goingstellar.ro/methods/profit-per-product-cash-on-delivery.md - [How to allocate ad spend to products when ads don't map one-to-one](https://goingstellar.ro/methods/allocate-ad-spend-to-products/): To allocate advertising cost to products, read cost at the level of the individual ad, match each ad to a product through a fixed ladder of rules (exact SKU code, then keyword, then account), split shared ad accounts by a token in the campaign name, and divide what remains across products by number of orders. Every rule fails silently in a specific way, so the method is mostly about catching those failures. Markdown: https://goingstellar.ro/methods/allocate-ad-spend-to-products.md - [How to compare store profitability across EU countries: VAT rates, currencies and exchange rates](https://goingstellar.ro/methods/compare-store-profitability-eu-countries-vat-currency/): To compare stores that sell in different EU countries, remove each destination country's VAT from revenue, convert every order from its own currency at a dated exchange rate, take costs without the VAT on their own invoices, and only then compare contribution per delivered order. Most of our cross-country errors came from a wrong VAT divisor, a stale exchange rate or a cost read in the wrong currency. Markdown: https://goingstellar.ro/methods/compare-store-profitability-eu-countries-vat-currency.md - [Does a buy-two-get-one-free promotion make money? A per-order method](https://goingstellar.ro/methods/buy-two-get-one-free-promotion-profitability/): A buy-two-get-one-free (2+1) promotion makes money when a three-unit order, after the cost of all three units, one parcel and the advertising cost of one order, still leaves positive contribution. Measure it per order, split by units per order, on delivered orders only, with the free unit charged at full cost. Markdown: https://goingstellar.ro/methods/buy-two-get-one-free-promotion-profitability.md - [Customer segments, RFM and lifetime value for cash-on-delivery stores: why you must use delivered orders](https://goingstellar.ro/methods/customer-segments-rfm-ltv-cash-on-delivery/): RFM segmentation, cohort retention and customer lifetime value only mean something on a cash-on-delivery store if they are computed on delivered orders, because a parcel refused at the door is not revenue. We score every customer by recency, frequency and monetary value from delivered orders only, per store and per currency, and we find a single customer across systems by the last nine digits of the phone number. The hard part was not the formulas but making sure the search and the data use the same normalisation. Markdown: https://goingstellar.ro/methods/customer-segments-rfm-ltv-cash-on-delivery.md - [How to build "frequently bought together" from your own order data](https://goingstellar.ro/methods/frequently-bought-together-from-order-data/): A "frequently bought together" block can be computed from your own orders with market-basket analysis: count how often two products appear in the same order and rank the pairs by lift, which says how much more often they sell together than chance would predict. We compute pairs per store over the last 180 days, from a source that holds almost every order, with minimum counts that keep rare products from producing absurd lifts. The method finds real pairs; turning them into bundles was harder than the maths. Markdown: https://goingstellar.ro/methods/frequently-bought-together-from-order-data.md - [How to add product and UGC videos to Performance Max: from clip to asset group](https://goingstellar.ro/methods/pmax-video-assets-from-product-and-ugc-clips/): Performance Max does not take video files: every video asset is a YouTube video referenced by its ID, so the path is clip, checked MP4, upload to the brand's own YouTube channel, then a link to the asset group. We keep clips at 11 seconds or longer, deliver 16:9, 1:1 and 9:16 versions, attach a handful rather than dozens, and verify each step by reading the result back. Most of what went wrong for us came from steps that reported success without doing the work. Markdown: https://goingstellar.ro/methods/pmax-video-assets-from-product-and-ugc-clips.md - [Scheduling social media posts through an API: why "scheduled" does not mean "published"](https://goingstellar.ro/methods/scheduled-is-not-published-social-posting-api/): A scheduling API that answers HTTP 200 has accepted the post, not published it; publishing happens later and can fail separately on each network. In the period we measured, our poster logged success on every run while all 17 Facebook posts and 12 Instagram posts failed. We now read the final status per network after the publish time, expire every cached list of connected accounts, and check generated captions in code, on the text that actually leaves. Markdown: https://goingstellar.ro/methods/scheduled-is-not-published-social-posting-api.md - [How to audit a product landing page for conversion, step by step](https://goingstellar.ro/methods/landing-page-conversion-audit/): A conversion audit of a product landing page checks, in a fixed order, whether a visitor on a phone can see the offer, the price, the buy button and the reasons to trust the shop, and whether the page loads fast enough to be seen at all. The output is a list of hypotheses ranked by likely impact, not a proven lift: only an A/B test can say whether a fix raised conversion. Markdown: https://goingstellar.ro/methods/landing-page-conversion-audit.md - [How to monitor competitor prices for commodity products](https://goingstellar.ro/methods/monitor-competitor-prices/): To monitor competitor prices, keep a list that maps each of your products to the same product on competitor sites, read the price from the page's structured data every night, store every reading in an append-only history, and compare only fresh, plausible prices against yours. Matching the right product and keeping the feed alive are harder than reading the price. A price change based on the comparison is a decision to test, not a proven gain. Markdown: https://goingstellar.ro/methods/monitor-competitor-prices.md ## Research 51 articles. Every one states a measured finding, gives the figures behind it and names its limitations. Each has a plain-text mirror at the Markdown address below, is licensed CC BY 4.0, and may be quoted with attribution. - Index of all of them, in one request: https://goingstellar.ro/research/index.md - Atom feed: https://goingstellar.ro/research/feed.xml (Romanian: https://goingstellar.ro/ro/cercetare/feed.xml) - Every article also exists in Romanian at the same path under /ro/cercetare/. - [Should an AI-made YouTube channel for kids make songs or cartoons? Made for Kids rules, COPPA and Google's under-18 clause](https://goingstellar.ro/research/ai-youtube-channel-for-kids-songs-vs-cartoons/) — published 2026-10-19: Songs are the safer bet: made-for-kids videos lose personalised ads, end screens and notifications, and songs can also earn on audio streaming. Google's generative AI terms bar use in services aimed at or likely used by under-18s, YouTube penalises templated and hard-to-follow videos, and the audience label is the creator's legal responsibility, as Disney's $10 million penalty showed. Markdown: https://goingstellar.ro/research/ai-youtube-channel-for-kids-songs-vs-cartoons.md - [How do you make money from AI-generated music in 2026: YouTube, distributors, Spotify and collecting societies](https://goingstellar.ro/research/how-to-monetize-ai-generated-music-2026/) — published 2026-10-19: AI music can earn on YouTube, mostly from long compilations, as long as each video is disclosed as synthetic and is not mass-produced. Outside YouTube the routes are narrower: some distributors accept fully AI tracks but keep them out of Content ID, Spotify and Deezer limit recommendations, and collecting societies register only works with human authorship. The YouTube entry bar for new channels doubles on 1 February 2027. Markdown: https://goingstellar.ro/research/how-to-monetize-ai-generated-music-2026.md - [Can Google Lyria 3 sing in Romanian and play Romanian genres? What we measured through the Gemini API](https://goingstellar.ro/research/google-lyria-3-romanian-music-test/) — published 2026-10-19: Romanian is not on Google's list of supported vocal languages for Lyria 3, but in our tests it worked: about 85% of the words we sent came back as written, diacritics were pronounced correctly, and the intonation was odd in places. Functional instrumentals such as lofi, sleep and ambient worked every time, while Romanian dance names like sârbă did not: the model needs the rhythm described in musical terms. The list price of $0.04 or $0.08 per song understates the real cost of a usable vocal track, because there is no iterative editing. Markdown: https://goingstellar.ro/research/google-lyria-3-romanian-music-test.md - [How to process your own vocal over an AI instrumental with free Python tools on a laptop without a GPU](https://goingstellar.ro/research/own-vocals-over-ai-instrumental-python-cpu/) — published 2026-10-19: Clean the recording first, then correct pitch, then shape tone and dynamics, then add space, and master last. Each step has an open-source Python tool that runs on a CPU: DeepFilterNet for noise, a BS-RoFormer model for room echo, torchcrepe with pyworld for pitch correction that keeps your timbre, pedalboard for effects and Matchering for reference mastering. Processing fixes wrong notes, not timing or diction, and singing the vocal yourself changes who owns the result and what YouTube asks you to disclose. Markdown: https://goingstellar.ro/research/own-vocals-over-ai-instrumental-python-cpu.md - [Which characters can you legally use in an AI video channel on YouTube from Europe?](https://goingstellar.ro/research/public-domain-characters-ai-video-youtube-europe/) — published 2026-10-19: Characters whose source works are out of copyright in both the EU and the US: Dracula, the Greek and Norse myths, Frankenstein's creature, the Grimm and Andersen tales, Pinocchio, Alice, Oz, Sherlock Holmes and similar figures, plus SCP Foundation material under its CC BY-SA licence. The source text is free; the famous film design, modern translations and registered trade marks often are not. The 2023-24 format of AI slideshows built on studio characters fails on both fronts: YouTube's monetisation rules and the studios' lawsuits against AI image companies. Markdown: https://goingstellar.ro/research/public-domain-characters-ai-video-youtube-europe.md - [How do you get a D-U-N-S number for a Romanian SRL, and why do Apple and Google ask for one?](https://goingstellar.ro/research/duns-number-romania-srl-apple-google-play/) — published 2026-10-19: A D-U-N-S number is free, and Apple and Google both require one before a company can open an organisation developer account. In Romania, Dun & Bradstreet is represented by its partner ICAP CRIF, but a company can also request the number through Apple's lookup tool, where Apple tells you to allow up to 5 business days. The details you enter have to match the company's registered legal name and headquarters address, or verification fails later. Markdown: https://goingstellar.ro/research/duns-number-romania-srl-apple-google-play.md - [Google Play developer account in 2026: personal or organization, what verification asks for, and what the new rules change](https://goingstellar.ro/research/google-play-developer-account-2026-personal-vs-organization/) — published 2026-10-19: A Google Play developer account costs a one-time US$25 and comes in two types. A personal account needs a government ID but must run a closed test with at least 12 testers for 14 consecutive days before production; an organization account skips that test but needs a D-U-N-S number, organization documents and a verified website, and shows its address and phone number on Google Play. A personal account can now be switched to an organization, not the reverse. Markdown: https://goingstellar.ro/research/google-play-developer-account-2026-personal-vs-organization.md - [What sells on the Atlassian Marketplace in 2026, and how do you read the demand signals for a Jira or Confluence app?](https://goingstellar.ro/research/atlassian-marketplace-what-sells-demand-signals-2026/) — published 2026-10-19: Installs are concentrated in integrations, admin toolkits, time tracking, test management and diagrams: the top 50 apps hold more than half of all installs, and the median app has single-digit installs on Jira. Small Forge apps still get in, mostly in reporting gadgets, admin utilities and diagram-as-code, while Atlassian charges no revenue share on Forge revenue up to $1 million per partner. The end of Data Center, on 28 March 2029, is the main engine of new cloud demand. Markdown: https://goingstellar.ro/research/atlassian-marketplace-what-sells-demand-signals-2026.md - [Why do most new Shopify apps fail, and where is there still real demand in 2026?](https://goingstellar.ro/research/why-new-shopify-apps-fail-where-demand-remains-2026/) — published 2026-10-19: Most new Shopify apps never get a single review: in our random sample of 400 listings on 19 October 2026, 62% had none, and 79% of the apps launched in 2026 had none. The shelf is filling faster than merchants arrive, and the reviews that do arrive go to a few apps per niche. The demand that is left is easiest to find where a platform change reset a category, and it can be tested from public data before any code is written. Markdown: https://goingstellar.ro/research/why-new-shopify-apps-fail-where-demand-remains-2026.md - [Who makes print-on-demand products for Romanian stores in 2026, what it costs to start, and which rules apply](https://goingstellar.ro/research/print-on-demand-romania-2026-players-costs-funding-rules/) — published 2026-10-19: Romanian online stores can sell printed products without owning a printer, through EU-based platforms such as Printful, Printify and Gelato, or through Romanian workshops; the public accounts of the local players we checked show steady, modest growth rather than a boom. Owning equipment means prices that dealers mostly give only on request, and the PNRR can no longer fund it: as of 19 October 2026 the open money is regional EU funding with short windows. Printed products still carry the full set of EU labelling and product-safety rules. Markdown: https://goingstellar.ro/research/print-on-demand-romania-2026-players-costs-funding-rules.md - [How do ghost hunting and spirit box apps pass App Store and Google Play review?](https://goingstellar.ro/research/ghost-hunting-spirit-box-apps-app-store-google-play-review/) — published 2026-10-19: Neither Apple nor Google bans paranormal entertainment apps, and neither accepts a 'for entertainment purposes only' line as a defence for fake features. The apps that stay listed read real phone sensors, describe what they actually do, and say plainly that they do not detect spirits. The bigger obstacle on the App Store is guideline 4.3(b): a crowded category has to show a meaningfully different experience. Markdown: https://goingstellar.ro/research/ghost-hunting-spirit-box-apps-app-store-google-play-review.md - [How do you take a deposit on Shopify in 2026: part of the payment now, the rest later](https://goingstellar.ro/research/shopify-deposits-partial-payments-2026/) — published 2026-10-19: Shopify has a native deposit mechanism only for pre-orders and try-before-you-buy, and it works only through an app that schedules and charges the balance itself. Deposits at checkout through payment terms, deposits on draft orders and partial payments in the admin are limited to Shopify Plus. Everything else comes from apps, whose low-rated reviews point to the same weak spots: billing, storefront scripts and the second payment. Markdown: https://goingstellar.ro/research/shopify-deposits-partial-payments-2026.md - [How do Shopify stores use WhatsApp in 2026: Meta's official app, per-message pricing, opt-in and COD confirmation](https://goingstellar.ro/research/whatsapp-shopify-stores-cloud-api-pricing-2026/) — published 2026-10-19: Shopify stores connect to WhatsApp either through Meta's official Cloud API, used by Meta's own app and many third-party apps, or by automating a number linked as a device, the route behind the account bans merchants report. Since July 2025 Meta charges per delivered template: in Romania $0.086 for marketing and $0.029 for utility messages such as order confirmations. Abandoned-cart reminders count as marketing and need marketing consent. Markdown: https://goingstellar.ro/research/whatsapp-shopify-stores-cloud-api-pricing-2026.md - [How do you convert a PDF bank statement into a file QuickBooks can import: QBO, CSV or OFX?](https://goingstellar.ro/research/convert-pdf-bank-statement-to-quickbooks-qbo-csv-ofx/) — published 2026-10-19: QuickBooks imports bank transactions from files, not from PDFs. QuickBooks Online accepts CSV, QBO, QFX and OFX uploads of up to 350 KB and 1,000 lines; QuickBooks Desktop takes only Web Connect .qbo files, which Intuit ties to a bank with a contracted identifier. Converters fill the gap between the PDF and those formats, at prices from about $3 per statement to $100 a month, and the main risks are misread amounts, duplicate transactions and where the statement files go. Markdown: https://goingstellar.ro/research/convert-pdf-bank-statement-to-quickbooks-qbo-csv-ofx.md - [What do AppSumo and Product Hunt actually bring a small B2B software product in 2026?](https://goingstellar.ro/research/appsumo-product-hunt-small-b2b-software-2026/) — published 2026-10-19: Launch cash, reviews, traffic and a few links, but not recurring revenue on their own. In published AppSumo campaigns founders kept roughly a quarter to a third of gross sales after AppSumo's share and refunds, and took on lifetime support. A Product Hunt launch lasts one day on a moderator-curated homepage; the best-documented small launch we found produced 5 paying users. Markdown: https://goingstellar.ro/research/appsumo-product-hunt-small-b2b-software-2026.md - [What can an AI chatbot really handle for an online store in 2026, and where does it go wrong?](https://goingstellar.ro/research/ai-chatbots-for-online-stores-what-they-can-automate-2026/) — published 2026-10-19: An AI chatbot on a store can reliably answer product, shipping and policy questions from the store's own content, and it can answer "where is my order" only when it is connected to live order and courier data. It goes wrong on refunds, exceptions and policies it paraphrases, and a 2024 tribunal ruling held a company liable for what its chatbot told a customer. Vendors price per resolution, per conversation or per seat, and they do not define a resolution the same way. Since 2 August 2026, EU rules require that people are told they are talking to an AI. Markdown: https://goingstellar.ro/research/ai-chatbots-for-online-stores-what-they-can-automate-2026.md - [How do you sell configurable, high-priced products on Shopify by request for quote: native draft orders, hidden prices and RFQ apps](https://goingstellar.ro/research/shopify-request-for-quote-configurable-products-2026/) — published 2026-10-19: Shopify has no storefront request-for-quote feature, but every plan with B2B can make a company's checkout end in a draft order that staff review, reprice and send back as an invoice with a checkout link. Hiding prices is the weak point: a theme can hide them, but Shopify's public product endpoints and the Storefront API still return them, and Google's product feed requires a price that matches the page. RFQ apps add the form, the hidden price and the quote-to-order step; their low-star reviews are mostly about prices still showing and priced options lost from the quote. Markdown: https://goingstellar.ro/research/shopify-request-for-quote-configurable-products-2026.md - [How do Shopify stores in Eastern Europe handle cash on delivery: COD forms, fees and order confirmation](https://goingstellar.ro/research/cash-on-delivery-shopify-eastern-europe/) — published 2026-10-11: Shopify treats cash on delivery as a manual payment method: the order is created unpaid, no money moves through Shopify, and there is no built-in fee or confirmation step. Stores that sell mostly on COD fill those gaps with apps: a COD order form that bypasses checkout, phone confirmation by one-time code, rules that hide COD, and fees added by an app. Refunds for cash orders still happen outside Shopify. Markdown: https://goingstellar.ro/research/cash-on-delivery-shopify-eastern-europe.md - [Can you create YouTube in-stream campaigns through the Google Ads API? What Demand Gen lets you automate](https://goingstellar.ro/research/demand-gen-youtube-in-stream-google-ads-api/) — published 2026-10-11: Classic Video campaigns cannot be created or updated through the Google Ads API; it only reads and reports on them. The documented route to an API-built YouTube in-stream campaign is a Demand Gen campaign whose ad groups select only the in-stream channel. We checked an AI research report on this against Google's API documentation on 11 October 2026 and list what it got right, what it missed and what had changed. Markdown: https://goingstellar.ro/research/demand-gen-youtube-in-stream-google-ads-api.md - [Which EU rules change how online stores sell in 2025–2027? A dated checklist](https://goingstellar.ro/research/eu-rules-online-stores-2025-2027-checklist/) — published 2026-10-11: Between December 2024 and mid-2027, EU law adds product-safety details to every online listing, bans generic green claims, puts a duty on cheap imported parcels, starts the packaging regulation and the battery passport, and phases in national e-invoicing. We started from two AI deep-research reports, kept only the dates we could confirm at the source, and list the ones the reports got wrong. Markdown: https://goingstellar.ro/research/eu-rules-online-stores-2025-2027-checklist.md - [The European Accessibility Act and online stores: what it requires and who is exempt](https://goingstellar.ro/research/european-accessibility-act-online-stores/) — published 2026-10-11: Since 28 June 2025 the European Accessibility Act requires consumer-facing online stores in the EU to be accessible to people with disabilities. Microenterprises that provide services are exempt, but the test is narrower than most summaries say: fewer than 10 persons and a turnover or balance sheet not exceeding 2 million euro. We checked the claims in an AI research report against the directive text and found the threshold misstated. Markdown: https://goingstellar.ro/research/european-accessibility-act-online-stores.md - [Do feature-request votes predict app installs? What a public backlog told us](https://goingstellar.ro/research/feature-request-votes-do-not-predict-installs/) — published 2026-10-11: Votes on a platform's public feature-request tracker did not predict installs. Across the ten ideas that passed a first filter, 4,339 votes had turned into about 440 installs spread over about 40 competing apps: roughly one install per hundred votes. The ticket's status carried more signal than its vote count, and the status was the part most often misread. Markdown: https://goingstellar.ro/research/feature-request-votes-do-not-predict-installs.md - [How small B2B software companies actually got their first paying customers](https://goingstellar.ro/research/first-paying-customers-small-b2b-software/) — published 2026-10-11: We checked eleven founder accounts at their sources. The first paying customers came from people the founder already knew, from problem threads the founder answered by hand, or from one launch inside a concentrated community. Only one came from a marketplace listing, and that founder had nearly a decade of experience in the ecosystem. Markdown: https://goingstellar.ro/research/first-paying-customers-small-b2b-software.md - [What is different about Google Ads for an online store in Romania, and what does Google's documentation actually say?](https://goingstellar.ro/research/google-ads-ecommerce-romania-documentation-check/) — published 2026-10-11: We took an AI deep-research report on Google Ads for Romanian e-commerce and checked its claims at Google's own help pages on 11 October 2026. The account mechanics are the same as anywhere else; what differs is European: Shopping ads go through a Comparison Shopping Service, EEA consent signals need two extra parameters, and several 2026 deadlines in the report have already passed. Markdown: https://goingstellar.ro/research/google-ads-ecommerce-romania-documentation-check.md - [Does the app name or the tagline decide marketplace search rank?](https://goingstellar.ro/research/marketplace-search-rank-follows-the-app-name/) — published 2026-10-11: On the Atlassian Marketplace, our listings ranked in the top 20 for a query when the app name contained it, and below 170 when only the tagline did. Renaming moved three listings up within hours, and lengthening a name that already matched cost one listing fourteen places. Rank followed the name. Markdown: https://goingstellar.ro/research/marketplace-search-rank-follows-the-app-name.md - [Do app marketplaces bring customers by themselves? What we learned publishing on four with no audience](https://goingstellar.ro/research/marketplaces-dont-bring-customers/) — published 2026-10-11: They do not. We submitted apps to Shopify, Google Workspace, Atlassian and monday.com without an audience of our own. Listings went live, people installed some of them, and paying customers stayed close to zero. Each marketplace failed in a different place, and the platforms' own rules explain part of it. Markdown: https://goingstellar.ro/research/marketplaces-dont-bring-customers.md - [The EU Omnibus price-reduction rule: the 30-day lowest price, explained for online stores](https://goingstellar.ro/research/omnibus-30-day-lowest-price-rule/) — published 2026-10-11: When an online store in the EU announces a price reduction, it must show the lowest price it charged for that product in at least the 30 days before the reduction, and any percentage must be calculated from that price. We checked an AI research report against Article 6a of Directive 98/6/EC, the European Commission's guidance and the 2024 Aldi Süd judgment, and kept only what a merchant needs. Markdown: https://goingstellar.ro/research/omnibus-30-day-lowest-price-rule.md - [Where to get street-level postal-code data for Romania, and how reliable it is](https://goingstellar.ro/research/romania-street-postcode-data/) — published 2026-10-11: The only official bulk file of Romanian postcodes with street ranges is Poșta Română's 2016 workbook on the national open-data portal, reusable commercially under OGL-ROU-1.0. It covers streets only in Bucharest and 47 large localities; everywhere else the code belongs to the whole locality. Newer-looking free sources we checked either lack postcodes, lack streets, or repackage the same 2016 file. Markdown: https://goingstellar.ro/research/romania-street-postcode-data.md - [The most common mistakes in Romanian delivery addresses, and how to correct them](https://goingstellar.ro/research/romanian-address-mistakes/) — published 2026-10-11: Most broken Romanian addresses fail on five things: a postcode that does not match the locality, a village written without its county, a street type fused into the street name, two incompatible versions of ș and ț, and block details lost in free text. We checked each rule against Poșta Română's own data and the UPU addressing sheet, and found that several popular ‘fixes’ are wrong. Markdown: https://goingstellar.ro/research/romanian-address-mistakes.md - [How does Shopify App Store search rank apps? What is documented and what is folklore](https://goingstellar.ro/research/shopify-app-store-search-ranking-documented-vs-folklore/) — published 2026-10-11: Shopify does not publish its App Store ranking formula. It documents a handful of things: term matching against your listing, behaviour after a search, a boost for Built for Shopify apps, and a statement that positive reviews lift an app in search. Most of the rest of what circulates as ranking advice is inference, and some of it breaks Shopify's own listing rules. Markdown: https://goingstellar.ro/research/shopify-app-store-search-ranking-documented-vs-folklore.md - [Shopify B2B in 2026: what the native features cover and when a wholesale app is still needed](https://goingstellar.ro/research/shopify-b2b-native-vs-wholesale-apps-2026/) — published 2026-10-11: Since 2 April 2026, Shopify's own B2B tools are on the Basic, Grow and Advanced plans, not only Plus: company profiles, up to three market catalogs, volume pricing, quantity rules and net payment terms. Plus keeps unlimited catalogs, catalogs assigned to individual companies, deposits and partial payments. Wholesale apps still matter mainly for per-customer pricing below Plus, registration flows and themes or apps that native B2B does not support. Markdown: https://goingstellar.ro/research/shopify-b2b-native-vs-wholesale-apps-2026.md - [Which Shopify platform changes and deadlines open or close app opportunities in 2026?](https://goingstellar.ro/research/shopify-platform-changes-deadlines-2026/) — published 2026-10-11: In 2025–2026 Shopify moved its AI-agent endpoints to the Universal Commerce Protocol, gave B2B and customer accounts new surfaces, and set hard end dates for Shopify Scripts, script tags and older catalog and cart APIs. We checked every date against Shopify's developer changelog and Help Center, and list what the AI research report we started from got wrong. Markdown: https://goingstellar.ro/research/shopify-platform-changes-deadlines-2026.md - [Returns and exchanges on Shopify in 2026: what the platform does natively and where apps fill gaps](https://goingstellar.ro/research/shopify-returns-native-vs-apps-2026/) — published 2026-10-11: Shopify's native returns now cover more than most comparison articles admit: return rules, self-serve return requests, refunds to store credit and a report of returns by reason. The real gaps are narrower: customers cannot request an exchange themselves, and return labels inside Shopify exist only for US domestic orders. Markdown: https://goingstellar.ro/research/shopify-returns-native-vs-apps-2026.md - [Three ways a browser shows you a page no visitor gets](https://goingstellar.ro/research/three-ways-a-browser-shows-a-page-no-visitor-gets/) — published 2026-08-31: Three defects on this site passed every screenshot and failed every measurement: headless Chrome refusing a phone-width layout, lazy loading that never fires inside a sideways-scrolling strip, and a scroll-driven animation that hid content permanently. A fourth, in CSS grid, pushed a footer column off the screen at phone width. All four were found by measuring, and the numbers below are from this site. Markdown: https://goingstellar.ro/research/three-ways-a-browser-shows-a-page-no-visitor-gets.md - [Four corrections before our market scanner meant anything](https://goingstellar.ro/research/four-corrections-market-scanner/) — published 2026-08-30: A category's lifetime review count says how big it once was, not whether anyone is arriving now. Here is what we had to fix before the output was usable, including the correction that changed our strategy. Markdown: https://goingstellar.ro/research/four-corrections-market-scanner.md - [The data failures that cost most never raised an alarm](https://goingstellar.ro/research/data-failures-that-cost-most-never-raised-an-alarm/) — published 2026-08-28: Our costliest data failures ran for days without an error, an alert, or a broken page. Each kept producing numbers on schedule; only the freshness of the data was wrong. The mechanisms we used to catch them are general; the intervals inside them are ours. Markdown: https://goingstellar.ro/research/data-failures-that-cost-most-never-raised-an-alarm.md - [Cost per order is wrong by exactly the confirmation rate](https://goingstellar.ro/research/cost-per-order-confirmation-rate/) — published 2026-08-28: In cash-on-delivery retail, dividing advertising spend by orders placed gives a figure that is smaller than the real one by a factor you can know in advance. We published the optimistic version first and were corrected. Markdown: https://goingstellar.ro/research/cost-per-order-confirmation-rate.md - [The bug on a browser we did not have](https://goingstellar.ro/research/the-bug-on-a-browser-we-did-not-have/) — published 2026-08-27: Product titles overflowed on phones and nowhere else. Three environments that claimed to be the mobile rendering all said the page was fine. Counting one CSS value across the live page found the cause without ever reproducing it. Markdown: https://goingstellar.ro/research/the-bug-on-a-browser-we-did-not-have.md - [A negative search result is not evidence of absence](https://goingstellar.ro/research/negative-search-result-is-not-evidence-of-absence/) — published 2026-08-27: 12 of 20 app listings sat rejected for over two weeks because the reviewers' questions lived in a ticket system, and the mailbox search that would have found the notifications was never validated. Markdown: https://goingstellar.ro/research/negative-search-result-is-not-evidence-of-absence.md - [When a bug wears the fallback's message](https://goingstellar.ro/research/when-a-bug-wears-the-fallback-message/) — published 2026-08-27: A parcel tracker reported missing credentials for every parcel. The credentials were there. A broad except clause kept turning each attempted fix into the same reassuring sentence. Markdown: https://goingstellar.ro/research/when-a-bug-wears-the-fallback-message.md - [The ignore pattern that deleted a live module](https://goingstellar.ro/research/ignore-pattern-deleted-live-module/) — published 2026-08-27: A data directory was ignored without a leading slash, so the pattern also matched a source package deeper in the tree. The package was never committed, a mirror deploy removed it from the server, and the only surviving description of what it did was its test suite. Markdown: https://goingstellar.ro/research/ignore-pattern-deleted-live-module.md - [Two signals, or a person](https://goingstellar.ro/research/two-signals-or-a-person/) — published 2026-08-26: Every plausible rule for automatically repairing a broken delivery address, measured against real orders — and why most of them were rejected. Markdown: https://goingstellar.ro/research/two-signals-or-a-person.md - [Geography predicts refusals. Shipping cost only leaks the answer.](https://goingstellar.ro/research/what-predicts-a-refused-parcel/) — published 2026-08-24: A refusal model trained on roughly 628,000 finished orders scores AUC 0.686 on an honest temporal holdout, and its riskiest fifth of orders holds 39% of all refusals. The first version scored 0.55 because it was reading the answer off a field that only exists after the parcel comes back. Most of the address rules we were confident about did nothing once we put a control group next to them. Markdown: https://goingstellar.ro/research/what-predicts-a-refused-parcel.md - [The right decision, in the wrong order](https://goingstellar.ro/research/right-decision-wrong-order/) — published 2026-08-24: A duplicate-order detector flagged 52 orders as duplicates in one day. Roughly 29 customers still got the same parcel twice, because two automated steps ran in the wrong sequence. Markdown: https://goingstellar.ro/research/right-decision-wrong-order.md - [Zero ads is not an answer](https://goingstellar.ro/research/zero-ads-is-not-an-answer/) — published 2026-08-24: Searched by domain, an ad transparency archive returned zero ads for three subjects. Their owners were running 17 and 13 ads at the time. Here is the check that works, and the recommendation it killed. Markdown: https://goingstellar.ro/research/zero-ads-is-not-an-answer.md - [The test was green, the effect was absent](https://goingstellar.ro/research/test-was-green-effect-was-absent/) — published 2026-08-20: We switched an old automated system off after confirming the new one produced shipping labels correctly. One module was still in shadow mode, and 114 orders over three days shipped without a gift the customer had already paid for. Markdown: https://goingstellar.ro/research/test-was-green-effect-was-absent.md - [A detector that fires on nothing](https://goingstellar.ro/research/detector-that-fires-on-nothing/) — published 2026-08-18: An event trigger set at 2.5 sigma produced 166 events on a device lying still and 151 while something was genuinely happening. Fixing it takes three conditions, not one. Markdown: https://goingstellar.ro/research/detector-that-fires-on-nothing.md - [The CPA spike was a measurement failure, not a performance failure](https://goingstellar.ro/research/cpa-spike-was-a-measurement-failure/) — published 2026-08-12: A store's reported cost per acquisition appeared to jump, so the budget was cut. Reported conversions had fallen from 158 to 44 a day while real orders held at 100 to 110 a day. Performance was fine, the tracking was not, and the budget went back. Markdown: https://goingstellar.ro/research/cpa-spike-was-a-measurement-failure.md - [Brand search ads do not add traffic. They replace it.](https://goingstellar.ro/research/brand-search-ads-cannibalise-organic/) — published 2026-08-04: An account suspension gave us a natural experiment across three online stores. Organic click-through collapsed while brand ads ran and recovered above baseline within a week of them stopping — on two of three. The third is why this is a test, not a rule. Markdown: https://goingstellar.ro/research/brand-search-ads-cannibalise-organic.md - [A target CPA does not know what an order is worth](https://goingstellar.ro/research/target-cpa-does-not-know-what-an-order-is-worth/) — published 2026-07-09: We built one profitability engine that counts only delivered orders, net of VAT, down to the individual SKU. When we compared its verdicts with the target-CPA gate we had been running, the verdicts inverted. The formula below is a planning gate, not realised profit. Markdown: https://goingstellar.ro/research/target-cpa-does-not-know-what-an-order-is-worth.md - [An inactive pixel was not a warning. It was an outage.](https://goingstellar.ro/research/an-inactive-pixel-was-not-a-warning-it-was-an-outage/) — published 2026-06-20: On cash-on-delivery stores running a third-party checkout, the advertising platforms were receiving no purchase event at all. The only visible symptom was a pixel marked inactive, and we read that as a warning for a long time before we read it as an outage. What follows is the mechanism, the fix, and the check anyone can run. Markdown: https://goingstellar.ro/research/an-inactive-pixel-was-not-a-warning-it-was-an-outage.md ## Full detail - [llms-full.txt](https://goingstellar.ro/llms-full.txt): every application with its description, every published figure with its source.