froyaorganics.com
Opened United Kingdom ad: a Video with Shop now for a waterless Nordic skincare balm aimed at mature skin. United States: active exact-domain rows (Video, Learn more) lead to the same balm page.
Distinct market rows observedThis workflow returns 3–5 verified cross-border Shopify advertisers.
Find category-relevant Shopify stores with active exact-domain Meta ads returned separately for both selected countries, then compare the inspected offers before testing a second advertising market.
Example run · 13 Oct 2026 · ~2 min
Published by Spytrend · 2 Oct 2026 · Methodology
Prompts update with the controlled inputs above.
Require one controlled product category and two distinct supported countries.
View promptHide promptFind Shopify product stores in this category that currently advertise on Meta in both selected markets. Category: Beauty and Personal Care Canonical category: beauty_and_personal_care Allowed products/entities: skincare, haircare, cosmetics, fragrance, beauty tools / brands and direct Shopify sellers Excluded products/entities: supplements, medical services, marketplaces, general stores / marketplaces, affiliates, catalogs and general stores Market A: United States (ISO-2 US) Market B: United Kingdom (ISO-2 GB) Validate the controlled category, two distinct allowlisted markets, Shopify platform and workflow limits. Do not call Spytrend yet. Return only `Ready for store discovery` when valid; otherwise return exactly `Invalid controlled input configuration`. Stop after Step 1.
Inspect 12 discovery rows and use them as compact exact-domain store records.
View promptHide promptCost guard: before each paid Spytrend call, run the free `estimate_cost` with the same tool and arguments, estimate the cost and stay within the user's stated budget; if the user has not stated a budget, tell them the estimate before the first paid call. If pricing consent is required, show the returned terms and stop until the customer explicitly agrees; never accept on the customer's behalf. If a required call does not fit the stated budget, make no paid call and return `Budget limit prevents required research`; omit an optional call that does not fit and disclose reduced coverage. When opening ads with `get_ad`, skip multilang ads (`is_multilang`) and never call `get_media` after `get_ad`. Retry once only when `retryable=true`, after `retry_after_seconds`. Read `params.ignored` after every search; an ignored required filter never counts as applied. If a search reports `pagination.total_status=restricted` (a free-plan archive window; `meta.plan_window_cutoff` names the boundary), tell the user the result covers only ads that started on or before that date, and never report a zero from it as "no such ads exist". Cost notices are not part of the final customer report. Using the validated configuration from Step 1, run exactly one sequential search_shops discovery with platform="Shopify", ai_category=beauty_and_personal_care, has_products=true, has_ads=true, exclude_infrastructure=true, sort_by="ads", sort_order="desc" and limit=12. Preserve returned order. Use up to eight retained discovery rows directly as compact store records. Normalize and deduplicate exact registrable domains; never call get_shop or repeat search_shops(q=domain) for a returned discovery domain. Retain candidates in discovery order. Do not search Meta ads yet. Return only discovery row count, compact checks, retained candidates and Complete/Partial progress state. Hide domains, IDs, calls, parameters and rejected rows. A failed required route is Partial; a completed zero-row route is valid evidence. Stop after Step 2.
Run separate current Meta checks by exact landing domain in each market and open one active ad per store.
View promptHide promptCost guard: before each paid Spytrend call, run the free `estimate_cost` with the same tool and arguments, estimate the cost and stay within the user's stated budget; if the user has not stated a budget, tell them the estimate before the first paid call. If pricing consent is required, show the returned terms and stop until the customer explicitly agrees; never accept on the customer's behalf. If a required call does not fit the stated budget, make no paid call and return `Budget limit prevents required research`; omit an optional call that does not fit and disclose reduced coverage. When opening ads with `get_ad`, skip multilang ads (`is_multilang`) and never call `get_media` after `get_ad`. Retry once only when `retryable=true`, after `retry_after_seconds`. Read `params.ignored` after every search; an ignored required filter never counts as applied. If a search reports `pagination.total_status=restricted` (a free-plan archive window; `meta.plan_window_cutoff` names the boundary), tell the user the result covers only ads that started on or before that date, and never report a zero from it as "no such ads exist". Cost notices are not part of the final customer report. Review up to eight compact rows after Shopify, exact-domain and entity checks. Order candidates with explicit compact evidence of direct category fit first, then non-general rows with missing category text and no explicit contradiction; a very broad catalog plus missing category text may remain unresolved. Final direct product fit is established only by the opened ad detail. Country-verify up to five candidates in that order and stop when five stores verify or the candidates are exhausted. Run separate exact-domain Meta searches (source=meta, landing_domain=<exact store domain>, landing_domain_exact=true) for Market A with countries=[US] and Market B with countries=[GB], status_today=active, sort_by=date, sort_order=desc and limit=2, strictly sequentially. Do not use a combined-country query. A candidate with zero Market A rows does not receive a Market B route. Qualification does not require a shared ad ID. Each market must independently return at least one row whose actual status is active and whose normalized landing domain exactly matches the store. If an exact ID appears in both two-row sets, prefer it and label `Shared ad observed`. Otherwise label `Distinct market rows observed` and select one representative with the clearest allowed category offer, preferring an ordinary non-multilang opening and then the newer row. Open exactly that one ad for this store. Its detail must confirm active status, its searched market, exact store destination and direct allowed category fit. Never open a second ad for the same store. The unopened market is verified only at active exact-domain search-row level. Retain only explicit row fields and never describe it as detail-verified. Page and advertiser names are contextual only; do not call get_advertiser or reject a store solely for different regional pages. Busy, ignored required filters, a required budget block or timeout means unavailable evidence and makes the run Partial. Completed zero rows are valid non-qualifying evidence. Distinct IDs remain eligible when both markets contain active exact-domain rows and the opened representative confirms direct store-category fit. Return only completed/failed routes, verified ads, verified stores and Complete/Partial state. Do not render the dashboard yet. Stop after Step 3.
Return a market-entry shortlist and compare only inspected market evidence.
View promptHide promptUsing retained evidence only, render the customer-facing dashboard titled `# Cross-Border Shopify Advertisers: Beauty and Personal Care` with 3–5 verified stores (fewer only when fewer pass both market checks). Do not rerun Spytrend. Keep it table-free and within 300 words. Name markets by United States and United Kingdom, never by ISO codes or category slugs. Explain that the shortlist helps compare competitors and observed market-entry signals before testing a second advertising market. Label each market as `Opened representative` or `Active exact-domain row`; never present the unopened market as detail-verified. Separate ad-delivery evidence from shipping, sales, headquarters and customers; compare only explicitly returned fields; include no raw IDs, calls, quotas, rejected rows or technical implementation details. For zero stores, say that no inspected store passed both market checks; do not claim the market has no competitors. End exactly: `Shop and advertising data are observed research signals. They do not prove international sales, shipping coverage, customers, spend, conversions, revenue, profitability, ROAS, market share or complete market coverage.` Stop after Step 4.
Cost guard: before each paid Spytrend call, run the free `estimate_cost` with the same tool and arguments, estimate the cost and stay within the user's stated budget; if the user has not stated a budget, tell them the estimate before the first paid call. If pricing consent is required, show the returned terms and stop until the customer explicitly agrees; never accept on the customer's behalf. If a required call does not fit the stated budget, make no paid call and return `Budget limit prevents required research`; omit an optional call that does not fit and disclose reduced coverage. When opening ads with `get_ad`, skip multilang ads (`is_multilang`) and never call `get_media` after `get_ad`. Retry once only when `retryable=true`, after `retry_after_seconds`. Read `params.ignored` after every search; an ignored required filter never counts as applied. If a search reports `pagination.total_status=restricted` (a free-plan archive window; `meta.plan_window_cutoff` names the boundary), tell the user the result covers only ads that started on or before that date, and never report a zero from it as "no such ads exist". Cost notices are not part of the final customer report. Use the connected Spytrend MCP to prepare a polished customer-facing dashboard of Shopify product stores with current Meta ad-delivery evidence in both selected markets. Execute every research stage in this prompt in one turn. Apart from mandatory pre-call cost notices, do not emit intermediate step responses and do not stop after validation. Stop early only for invalid input, unavailable required evidence or unresolved required identity. Return only the final customer report. The result unit is a verified Shopify store domain that has a returned active exact-domain Meta row in each selected market plus one opened representative that confirms direct category fit. The customer uses the result to compare category competitors and observed market-entry signals before testing a second advertising market. This workflow is not a shipping-coverage finder, international-sales report, traffic ranking, generic competitor list, one-company comparison, ad inventory search or complete market census. Configuration: - Category label: Beauty and Personal Care - Spytrend AI category: beauty_and_personal_care - Allowed products/entities: skincare, haircare, cosmetics, fragrance, beauty tools / brands and direct Shopify sellers - Excluded products/entities: supplements, medical services, marketplaces, general stores / marketplaces, affiliates, catalogs and general stores - Market A label/ISO-2: United States / US - Market B label/ISO-2: United Kingdom / GB - Platform: Shopify - Ad source/status: Meta / active now - Store discovery limit: 12 - Compact candidate review limit: 8 - Market-search row limit: 2 - Country-verified candidate limit: 5 - Total market-search route limit: 10 (two per candidate) - Ad-detail limit: 5 (one per candidate) - Advertiser-detail limit: 0 - Verified result target: 3–5 Input validation: 1. Continue only when the category is one of the page's supported categories, both markets are supported ISO-2 codes and the markets are distinct. 2. Accept no customer-written slug, query, product rule, synonym, brand, domain, third market, date range, traffic threshold or alternative status. Reject unsupported values such as `apparel_and_accessories`. If invalid, return exactly `Invalid controlled input configuration` and make no MCP call. Decision and evidence semantics: 3. The customer decision is: which category-relevant Shopify stores deserve closer review because current exact-domain Meta ads were returned separately for both selected delivery markets? 3a. Frame the result as a market-entry research shortlist: stores and inspected offers to study before testing the second selected advertising market. Never describe a verified store as operating, selling or shipping in either market without separate evidence. 4. `Cross-border` means verified multi-market ad-delivery evidence in this workflow. It does not establish international sales, shipping coverage, inventory availability, registration, headquarters, customers, revenue, spend, conversions, ROAS or market share. 5. The primary entity is one normalized registrable store domain. Store, Meta page, advertiser and webmaster entities remain separate. Regional pages may differ when both point to the same verified exact store domain. Research: 6. Use Spytrend read-only. 7. Treat search_shops, search_ads and every search/discovery tool as heavy. Run exactly one heavy call at a time, wait for its response and never batch, parallelize or use Promise.all. 8. Run exactly one store-discovery search_shops call with platform=`Shopify`, ai_category=`beauty_and_personal_care`, has_products=true, has_ads=true, exclude_infrastructure=true, sort_by=`ads`, sort_order=`desc` and limit=12. Do not add a store-country filter: the two selected countries are ad-delivery markets and not store-location inputs. 9. Do not add q, brand names, generated synonyms, apps, theme, plan, traffic/growth floors or a fallback category. Preserve returned order. 10. Locally skip only invalid domains, infrastructure, explicit marketplaces, obvious general stores and explicit product/entity contradictions. Do not skip unfamiliar stores or rely on brand familiarity. Compact store verification: 11. Review up to eight retained discovery rows sequentially in returned order. After Shopify, exact-domain and entity checks, order candidates with explicit compact evidence of direct category fit first, then non-general rows with missing category text and no explicit contradiction. A very broad catalog plus missing category text may be treated as unresolved rather than preferred. Final direct product fit is established only by the opened ad detail. Country-verify up to five selected candidates in that order; stop when five stores verify or the candidates are exhausted. If none passes compact checks, return zero verified stores without an ad search. 12. Do not repeat a compact lookup for a domain already returned by controlled discovery. Use each retained discovery row as the compact store record. 13. Normalize the discovery row domain and require its exact registrable host plus explicit Shopify evidence; reject infrastructure, regional account surfaces and unrelated hosts. 14. Use compact product/category text as supporting evidence, not final proof of direct category fit. Never call `get_shop`: its catalog-rich response can exceed chat context. If compact evidence cannot establish Shopify/domain identity, classify the candidate unresolved and move on. Product fit must be confirmed by at least one opened representative ad before inclusion. Separate market verification: 15. For each selected candidate in order, run one Market A search_ads call with source=`meta`, landing_domain=<exact candidate domain>, landing_domain_exact=true, countries=[`US`], status_today=`active`, sort_by=`date`, sort_order=`desc` and limit=2. 16. If Market A returns no exact-domain row, the store cannot qualify; do not spend a Market B route on it. If Market A returns usable evidence, run the same call separately for Market B with countries=[`GB`]. Never replace the two country slices with one combined-country query. 17. Run at most two country-specific search routes per candidate: one for each market. A completed zero-row slice is valid zero returned evidence. A failed slice is unavailable evidence, not zero. 18. Qualification does not require the two markets to return the same ad ID. Each market must independently return at least one row whose actual returned status is active and whose normalized landing domain exactly matches the selected store. Compare both complete two-row sets. If an exact ad ID appears in both, label it `Shared ad observed`; otherwise label the evidence `Distinct market rows observed`. Different IDs are normal non-localization evidence, not an unresolved result. 19. Open exactly one representative per candidate. Prefer a shared exact ID when one exists; otherwise select the row with the clearest allowed category offer, preferring an ordinary non-multilang opening and then the newer returned row. Its detail must confirm current active status, its searched market, an exact destination on the store domain, an explicit allowed product/offer and a usable start date when returned. Taxonomy alone is insufficient. 20. The unopened market remains verified only at active exact-domain search-row level. Use only explicit title, body, CTA, media and route fields returned in that row, and label it `Active exact-domain row`; never imply that it received detail verification. A shared ad supports both markets only when returned by both separate slices and both country values are present in its detail. Do not claim localization from either shared or distinct rows. 21. Exact landing-domain evidence is the store-linking criterion. Page and advertiser names are contextual fields only: report a clear returned match when useful, but do not call get_advertiser, reject a store solely for different regional pages, or infer common ownership from a shared raw ID. Qualification and comparison: 22. `Verified cross-border advertiser` requires exact Shopify/domain evidence, an allowed merchant entity, a returned active exact-domain row in each selected market, and one opened active representative establishing direct central category fit for the store. 23. Exclude non-Shopify or ambiguous platform, marketplaces, infrastructure, affiliates/catalogs, general stores, taxonomy-only matches, excluded products/entities, an opened representative that does not establish direct fit, inactive returned rows and stores with evidence in only one selected market. 24. Compare only returned evidence: the one opened representative may supply detailed product/offer, message, actual media type, CTA, normalized route and start date; an unopened market row may supply only its explicit row fields. 25. Label an ad `shared` only when the same exact ID is returned in both market slices. With distinct IDs, say only `Distinct market rows observed`; do not call their message, offer or creative market-specific unless both returned rows explicitly support the comparison. This does not prove exclusivity or a localized strategy. 26. Normalize actual media labels as Image, Video, Image and video, or Not returned. Publisher placements and asset counts do not prove creative format or carousel. 27. Return 3–5 verified stores (fewer only when fewer pass every check). Do not use traffic or invent a score. 28. Treat product benefits, prices, discounts, reviews, scarcity and popularity as advertiser claims. Never infer sales, orders, conversions, revenue, profitability, ROAS, spend, reach, performance, market leadership or causal effects. Failure handling: 29. Retry exactly once only when the server returns retryable=true with retry_after_seconds, after waiting and obtaining a fresh identical estimate. Do not retry an unsupported parameter unchanged. 30. A failed required discovery or attempted selected country/ad-detail route makes the run Partial; continue unaffected sequential work. A completed zero-row route is valid non-qualifying evidence. Completed two-row slices with distinct IDs remain eligible when both contain active exact-domain rows. Busy, ignored required filters, budget-blocked required evidence or timeout without usable retained evidence makes the run Partial. Complete requires discovery and all attempted required verification routes to complete. Missing previews, traffic or stable links do not make the run Partial. 31. Do not broaden category, remove a market, accept inactive ads, add a third market or pad the result when evidence is sparse. Links and privacy: 32. Show safe Website and Landing page links when returned. Show an explicitly returned stable first-party link only as `Evidence`. Never name the service, show category slugs or ISO market codes in the customer answer, construct internal URLs or expose raw IDs, calls, parameters, JSON, schemas, quotas, credentials, signed media URLs or rejected-row dumps. Customer-facing answer: Use a compact, table-free research dashboard of at most 300 words. Start exactly: `# Cross-Border Shopify Advertisers: Beauty and Personal Care` Then show: `**[N] verified store/stores** · United States + United Kingdom · Shopify · Active Meta ads · **[Complete/Partial]**` Use `1 verified store` and `2 verified stores` with correct singular/plural grammar. Add one sentence: `Verified in this report means active exact-domain Meta rows were returned separately for both selected markets and one representative was opened to confirm direct category fit; it does not establish cross-border sales or shipping.` Then add: `Use this shortlist to compare competitors and inspected offers before testing a second advertising market.` With at least two stores, add `## Shortlist`. Use one paragraph per store: `**[rank]. [Store/brand]** — [Market A: verified offer] · [Market B: verified offer] · [shared/different inspected message]` For each store create: `## [rank]. [Store/brand]` Use these short labeled paragraphs: - `Why it fits` — exact Shopify, store-domain and category-product evidence; - `United States evidence` — label as opened representative or active exact-domain row and show only fields supported at that evidence level; - `United Kingdom evidence` — apply the same evidence-level rule; - `Across markets` — shared exact ID or distinct returned rows, plus only explicitly supported similarities or differences; - `Why review it` — exactly one concrete comparison action; - `Website`, safe Landing pages and `Evidence` when a stable first-party link is returned. With at least two stores, add `## Patterns` with two or three sample-specific comparisons. Do not call them market trends. Under `## Research coverage`, use at most three bullets for research date/status, returned/profiled/verified counts and bounded-sample/missing-evidence limitations. For exactly one store, omit Shortlist and Patterns. For zero stores, show `## Result` and Research coverage without empty sections or padded candidates. State whether no store passed both market checks or required evidence was unavailable; do not equate the sample with the whole market. Pre-send validation: - Every listed domain is explicitly Shopify and directly fits the controlled category. - Every listed store has separate completed Market A and Market B routes, active exact-domain rows in both, and one opened active category-fitting representative. - Page or advertiser identity was not used to override or weaken exact landing-domain evidence. - Ad-delivery geography is not described as shipping, sales, headquarters or customers. - Shared/different wording is limited to inspected representatives. - Counts agree across summary, shortlist and coverage. - Summary nouns use correct singular/plural grammar. - No tables, raw IDs, calls, audit details or unsupported performance claims appear. - The answer is no longer than 300 words. End exactly: `Shop and advertising data are observed research signals. They do not prove international sales, shipping coverage, customers, spend, conversions, revenue, profitability, ROAS, market share or complete market coverage.` Only after a separate user message exactly saying `Show audit details`, provide a separate audit from retained responses only: exact non-sensitive calls, applied filters, returned order, compact/store/market decisions, failures and timing. Do not rerun Spytrend for the audit.
A live run on 13 Oct 2026 for Beauty and Personal Care, United States + United Kingdom: a complete run found three Shopify stores with active exact-domain Meta ads in both markets and one opened ad confirming the product fit for each.
Opened United Kingdom ad: a Video with Shop now for a waterless Nordic skincare balm aimed at mature skin. United States: active exact-domain rows (Video, Learn more) lead to the same balm page.
Distinct market rows observedOpened United States ad: an Image with Shop now for Silk Body Oil, promising firmer, smoother-looking skin. United Kingdom: active exact-domain rows point to a different product page with Shop now.
Distinct market rows observedOpened United Kingdom ad: a Video with Shop now for an Ayurvedic herbal hair oil used overnight. United States: active exact-domain rows advertise the same hair oil at 45% off.
Distinct market rows observedOne store had active rows in both markets, but its opened ad sold oral hair-loss softgels, a supplement outside the category rules. A Turkey-focused store returned no United States rows.
Not qualifiedPublished by Spytrend from a dated, bounded example.
One controlled category route returns 12 ordered Shopify candidates.
01Returned discovery rows serve as compact store records; only the exact normalized domain is accepted and full store profiles are never loaded.
02Market A and Market B are searched separately, never in one combined query.
03Active detail, country, exact destination and allowed product must be confirmed; taxonomy alone is insufficient.
04No. Shipping, customers and sales remain unconfirmed.
Separate searches preserve country-specific evidence for each retained store.
A store must pass Shopify, product, identity and both market checks without broadening.
No. Each country and the exact store relationship must be verified independently.
Connect Spytrend MCP, choose the controlled inputs and run the four prompts.