Shopify workflow4 prompts · 2–4 stores

Compare detected Shopify apps across stores.

This workflow returns one verified Shopify app-stack comparison.

Inspect one store or compare exact detected relationships across multiple stores, with incomplete detection stated explicitly.

2stores compared

Example run · 13 Oct 2026 · <1 min

Published by Spytrend · 29 Sep 2026 · Methodology

Run in order

A 4-step Shopify app-stack comparison

Prompts update with two required and up to two optional store domains.

Validate the comparison set

Normalize two to four stores for one comparison.

View promptHide prompt
Prompt 01
Compare detected Shopify app stacks for these store domains: mejuri.com, dusk.com, none, none. Focus: apps_only.

Ignore entries equal to `none` (optional fields left blank). Normalize and deduplicate two to four public merchant domains, preserving submitted order. Reject invalid or infrastructure domains. Never substitute fuzzy, related, regional, campaign, account, shop or subdomain matches. Do not call tools.

Return only the retained domains and evidence boundary: `Detected technology may be incomplete. Not returned does not mean an app is not installed or used.` Stop after Step 1.
Read compact exact-domain records

Retain exact returned app labels without loading full product catalogs.

View promptHide prompt
Prompt 02
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. Cost notices are not part of the final customer report.
For each retained domain, run sequentially search_shops(q=<exact normalized host>, platform="Shopify", exclude_infrastructure=true, limit=5). Accept only the row whose normalized host exactly equals the submitted host.

Never call get_shop, search_ads, get_ad or get_advertiser. Retain Shopify identity, exact app names and identifiers/categories. Keep pixels, analytics, theme, plan, review, messaging, payment, checkout and tracker fields as Supporting technology. Preserve every returned app but do not call the list complete.

Return only concise retained evidence and lookup status. Hide calls, IDs, quotas, timing and fuzzy rows. Stop after Step 2.
Classify and compare

Classify evidence and calculate exact overlap among qualified stores.

View promptHide prompt
Prompt 03
Using retained evidence only, classify each domain as Qualified, Limited evidence or Unresolved. Missing data is Not returned, never absent or unused. Compare exact normalized app display names only among Qualified stores. Do not merge similar names or functions. Limited and Unresolved domains stay outside overlap denominators.

Set execution status to Complete when every required exact-domain lookup completed and its required filters were applied, including lookups with no exact row or sparse technology. Use Partial only when at least one required lookup failed or a required filter was ignored. Evidence incompleteness does not by itself make execution Partial.

Return only classifications and supported exact-name overlap. Stop after Step 3.
Write the app-stack comparison

Show functional differences, useful questions and evidence limits.

View promptHide prompt
Prompt 04
Write the final answer from retained evidence only. Do not make more tool calls.

Use `# Compare Shopify App Stacks`, show counts plus Complete/Partial, then state: `Detected technology may be incomplete. Not returned does not mean an app is not installed or used.` Show Shared exact apps, one compact section per store, store-specific detections, up to four inspection questions and Evidence limits. If no exact app is shared, say so plainly.

Preserve the retained execution status exactly. Do not change Complete to Partial merely because detected technology may be incomplete or fields were not returned.

Use no tables and stay within 320 words. Hide the service name, internal labels, calls, IDs, quotas, timing, retries and run summaries. Do not infer active use, configuration, performance, revenue, ROAS or profitability.

End exactly: `Detected technology is an observed relationship, not proof of active configuration, usage, completeness, quality, conversions, revenue, ROAS or profitability.`

Stop after Step 4.
Use the complete workflow in one promptAll evidence rules in one copyable promptView promptHide prompt
Complete workflow
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. Cost notices are not part of the final customer report.
Use the connected Spytrend MCP to compare detected Shopify app relationships for **mejuri.com, dusk.com, none, none**. Focus: **apps_only**.

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.

## Inputs

1. Ignore entries equal to `none` (optional fields left blank). Accept two to four unique public merchant domains. Normalize hosts, preserve submitted order and deduplicate exact normalized hosts. Reject infrastructure, localhost, IP addresses and invalid domains. If fewer than two or more than four remain, return exactly `Invalid controlled input configuration` and make no MCP call.
2. Never substitute a related, regional, campaign, account, shop or fuzzy-matched domain.

## Compact evidence

3. For each retained domain, run sequentially:
   `search_shops(q=<exact normalized host>, platform="Shopify", exclude_infrastructure=true, limit=5)`
4. Accept only a row whose normalized host exactly equals the submitted host. A root domain does not match its subdomain; a submitted subdomain requires that exact host.
5. Never call `get_shop`, `search_ads`, `get_ad` or `get_advertiser`. Missing exact rows and sparse technology remain unresolved or limited evidence.
6. Retain explicit Shopify identity, exact app display names and returned app identifiers/categories. Keep pixels, analytics, theme, plan, review, email/SMS, payment, checkout and tracker fields in a separate Supporting technology block. Country and traffic are optional context, not app-stack evidence.
7. Preserve every app returned in the compact exact-domain row. Deduplicate only identical normalized display names. Never call the returned list complete.

## Classification and comparison

8. Classify each domain as Qualified, Limited evidence or Unresolved. Qualified requires the exact Shopify domain and at least one focus-relevant technology field. Limited evidence means the exact Shopify domain resolved but focus-relevant technology is missing, empty or ambiguous. Unresolved means no exact row, a domain conflict or unconfirmed Shopify identity.
9. Missing data is `Not returned`, never zero, not installed or not used.
10. Calculate overlap only among Qualified stores using exact normalized app display names. Show all-store overlap only when present in every Qualified store. Show pair/subset overlap only when at least two Qualified stores share the exact name. Limited and Unresolved domains stay outside overlap denominators.
11. Do not merge similar app names, vendors or functions. Group by function only when returned categories or a maintained catalog relationship supports it.

## Customer answer

12. Return `# Compare Shopify App Stacks` and `**[N] qualified · [M] limited · [K] unresolved · [Complete/Partial]**`.
13. Immediately add: `Detected technology may be incomplete. Not returned does not mean an app is not installed or used.`
14. Show Shared exact apps, one compact section per submitted domain, store-specific detections, up to four inspection questions and Evidence limits. If no exact app is shared, say so plainly.
15. For `apps_only`, show every exact app name and omit supporting fields. For other focuses, show relevant exact apps and supporting technology. For `all_detected_technology`, show both.
16. Keep the answer table-free and within 320 words. Hide service name, preset/workflow/search-set names, taxonomy slugs, route and tool names, calls, parameters, raw IDs, JSON, quotas, tokens, timing, retries, run summaries and rejected fuzzy rows.
17. Label an explicitly returned stable first-party link `Evidence`. Never construct one.
18. Mark Partial only when a required lookup failed. A completed lookup with no exact row or sparse technology is Complete with Limited/Unresolved classification.
19. Never rank stack quality or infer maturity, optimization, active use, conversions, revenue, ROAS or profitability.

End exactly:

`Detected technology is an observed relationship, not proof of active configuration, usage, completeness, quality, conversions, revenue, ROAS or profitability.`
Example output

Mejuri and Dusk compared app by app.

Stores are columns and exact app names are rows. Both stores resolved as exact root-domain Shopify merchants and qualified; Mejuri returned 5 exact apps and Dusk returned 12. With the Apps only focus, pixels and theme fields stay out of the matrix.

Evidence boundaryNot returned is not proof of non-use. Only exact app names returned for each store are compared; similar names and functions are not merged.
Detected Shopify app-stack matrixExample run · 13 Oct 2026
AppMejuri · mejuri.comDusk · dusk.com
KlarnaDetectedDetected
Postscript SMSDetectedDetected
YotpoDetectedDetected
GorgiasDetectedNot returned
Shop PayDetectedNot returned
Bloomreach Discovery v2Not returnedDetected
Elevar Conversion TrackingNot returnedDetected
Judge.me ReviewsNot returnedDetected
Microsoft ClarityNot returnedDetected
Swym WishlistNot returnedDetected
contentsquare-analyticsNot returnedDetected
dusk-auroraNot returnedDetected
loyalty-rewards-and-referralsNot returnedDetected
pandectes-gdprNot returnedDetected
Shared exact apps: Klarna, Postscript SMS and Yotpo · 2 qualified · Complete.
Key findings

A comparison built for inspection.

01

Literal intersection

Shared means the exact same display name, including capitalization and punctuation.

02

Function by function

Differences appear as readable blocks for messaging, reviews, checkout, analytics and other supported functions.

03

No stack ranking

The result raises implementation questions without scoring quality or recommending that one store copy another.

Methodology

How detected Shopify app stacks are compared.

Published by Spytrend from a dated, bounded example.

One compact lookup per store

Each normalized domain is checked sequentially through one compact exact-domain store lookup.

Identity

Exact display names

Intersections use literal names from each Qualified store compact app list.

Comparison key

Consistent taxonomy

Each store keeps its functional grouping while the comparison calculates case-sensitive exact-name overlap.

Grouping

Supporting context

Structured technology fields explain asymmetries but never change exact counts.

Evidence boundary
FAQ

Questions about this workflow.

How many stores can I compare?

Use two to four unique public merchant domains for one comparison.

What counts as a shared app?

The same case-sensitive display name must appear in every participating store exact app list.

Are similar apps merged?

No. Similar names, vendors or functions do not create an exact match.

What does Not returned mean?

It means the relationship was absent from the returned exact list. It is not proof that the store does not use it.

Does a larger app count mean a better stack?

No. Exact counts do not measure quality, maturity, optimization or performance.

Spytrend MCP

Compare Shopify app stacks by store.

Connect Spytrend MCP, enter two to four domains and run the prompts in one AI chat.