A South African DTC brand fights an unusual AEO battle. Shoppers ask the engines in English and Afrikaans. Half the addressable market sits across borders, in the SADC region, the UK and Australia. And the deciding facts are rarely the product itself. They are duties, delivery times, and whether the price is really in rand.
Short answer
Winning AI answers cross-border means publishing exactly those facts in machine-readable form, in both languages where it counts, on one consistent domain. The engines will answer the duty and currency questions with or without your input. The only question is whether they quote you, or guess.
What you need to know
- Afrikaans buying queries are real and weakly served. Authentic Afrikaans content wins citations cheaply.
- Cross-border facts are what decides the answer, not the product description.
- Explicit currency in the markup removes the guess. Otherwise the model converts, badly.
- Silence gets filled with stale third-party commentary. A dated service note beats it.
- One inherited robots.txt block can zero a whole engine. Confirm the crawlers can reach you.
Why is South Africa a special case for answer engines?
Three structural quirks.
First, bilingual demand. “Beste skoonheidsprodukte aanlyn” and “best beauty products online South Africa” are the same buyer, but engines often answer the Afrikaans query from thin sources, because almost nobody publishes structured Afrikaans commerce content.
Second, cross-border ambiguity. A Johannesburg brand selling to Windhoek, Gaborone and London triggers duty, currency and shipping questions the engines will answer regardless.
Third, marketplace gravity. Generic queries default to global marketplaces, unless local brands hand the engines specific, quotable facts.
| Signal | Where to publish it | Failure when missing |
|---|---|---|
| ZAR pricing per market | Offer markup with priceCurrency | Prices quoted in wrong currency |
| Duties and who pays them | Cross-border shipping page in HTML | Engines guess, buyers get surprised |
| Delivery times per destination | Shipping policy, per-country sentences | Vague answers lose to marketplaces |
| Afrikaans buying answers | Bilingual FAQ or content hub | Afrikaans queries answered by forums |
| Brand entity and locality | Organization schema, local directories | Confused with foreign namesakes |
How do you serve two languages without duplicate-content problems?
Treat Afrikaans as a first-class content layer, not a machine translation of the English site.
The pages that deserve Afrikaans versions are the decision ones: category buying guides, shipping and returns, the FAQ. Mark them up with correct lang attributes and interlink them as alternates.
Engines answering Afrikaans prompts reward the rare store that wrote real answers in the language. Generative translation of your English pages is the fallback the engines will do anyway, badly, if you leave the gap. The architecture for running one store across language markets without splitting authority is in international Shopify GEO with Shopify Markets.
How do you make rand pricing and duties machine-readable?
Publish one Offer per market, with explicit price and priceCurrency. A buyer in Pretoria gets ZAR, and a buyer in London gets the GBP price you actually charge, not a model’s conversion of it.
Then write the duties sentence the engines keep getting wrong. Who pays import duty, at which threshold, for which destinations, in plain HTML on your shipping page. Wrong tax-and-duty answers are among the most common cross-border hallucinations, and the fix pattern is detailed in cross-border taxes and AI hallucinations.
Which logistics facts win the answer?
The boring ones, stated per destination. “Delivery to Namibia takes 4 to 6 working days, duties included at checkout.”
Google’s AI features documentation is explicit that AI surfaces build on the regular index, which means a per-country sentence on a crawlable page is all the infrastructure an engine needs to quote you precisely, while competitors get summarised vaguely. Add the same facts to your product schema’s shipping details, and keep checkout, page and markup telling one story.
How do you measure cross-border AEO progress?
Build a prompt set in both languages and per market. Ten English prompts, five Afrikaans, five per export destination, mixing category picks with logistics questions like “does this brand ship to Botswana”.
Run them monthly across ChatGPT, Gemini and Perplexity. Log citations and wrong facts, and trace each wrong fact to its on-domain source.
Before the first run, confirm the retrieval crawlers can reach you at all. The user agents to allow are listed in OpenAI’s bot documentation, and one inherited robots.txt block silently zeroes a whole engine. Brands in comparable emerging-market positions, like the Gulf stores in Arabic SGE for ecommerce in MENA, consistently find the same lesson: the local-language and logistics gaps are where small brands beat global marketplaces.
Nivk.com runs this loop automatically for Shopify stores, tracking both languages, flagging wrong duty and delivery answers, and pointing each miss to the page that fixes it.
Frequently asked questions
What is the best way for a South African store to appear in AI answers abroad?
Publish per-destination logistics facts and per-market Offer pricing, then earn one or two authoritative local mentions in each target market. Engines recommend the store whose cross-border facts they can quote confidently, and most competitors never publish them.
Should I write content in Afrikaans for AI search?
For decision content, yes. Afrikaans buying queries are real and weakly served, so authentic Afrikaans guides and FAQs win citations cheaply. Translate the decision layer first; product descriptions can follow if the traffic justifies it.
How do I stop engines quoting USD prices for my ZAR store?
Set price and priceCurrency explicitly in every market’s Offer markup, and show the same currency in visible HTML. Models convert currencies when the markup is ambiguous, and explicit fields remove the guess.
Do load-shedding or delivery disruptions belong on my site for AI purposes?
A short, honest service-status note helps more than silence when disruptions are real, because engines fill silence with outdated third-party commentary. Keep it dated and remove it when resolved, so it never becomes the stale fact an engine repeats.


