Deploy your Shopify Function (e.g., a cart-line discount using the `cart.lines.discounts.generate.run` target) and note the Function ID from the Partner Dashboard or the CLI deploy output
The mutation returns a `DiscountAutomaticApp` object with the discount `id` and `status` — verify `status` is `ACTIVE` before testing
Store any Function configuration data (thresholds, percentages) in a metafield on the discount using `metafieldsSet` targeting the `DiscountAutomaticApp` GID; the Function reads this via its `metafield` input in the run query
Test by placing an order that meets the discount criteria and confirming the Function-applied discount appears on the order's `discountApplications`
Monitor Function execution errors via the Partner Dashboard's Function logs or the CLI `shopify app dev --log-level debug` output
Known gotchas
The `functionId` must reference a deployed (not draft) Function associated with the same app — using a draft Function ID or a Function from a different app causes a 'Function not found' error
discountAutomaticAppCreate creates an automatic discount that applies without a code; for code-based Function discounts use `discountCodeAppCreate` instead
The `combinesWith` settings control discount stacking — automatic app discounts default to not combining with other automatic discounts; configure this explicitly to match your intended combining behavior
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp