ETA schema markup adds your shipping times to each product page as Schema.org structured data.
It's written for software, not shoppers: AI shopping agents and search crawlers can read it and understand when your products will ship and arrive.
Plus plan required. ETA schema markup is available on the Plus plan. Plus works with any Shopify store and has nothing to do with Shopify Plus.
What it publishes
Shipping details as JSON-LD. Each product page gets a Schema.org
OfferShippingDetailsblock with your handling time and transit time, alongside the product's name, URL, price, and availability.Day ranges, not dates. It publishes how many days you take to process and how many days delivery takes, such as handling of 2 days and transit of 3 to 5 days. It doesn't publish the arrival date shoppers see in your delivery widget.
In-stock and preorder versions. Each variant carries both. The page uses the one that matches the variant's inventory.
Stored on your variants. ArrivesBy saves the values in an app-owned metafield on each product variant, and your theme reads it from there.
Your rules, with limits. It uses the same rules as your delivery estimates, including metafield rules. Rules that depend on a market, country, shipping region, or location don't apply, and neither do rules with a specific ship date, such as a preorder date. A product that only matches one of those gets no markup.
Nothing changes on the visible page.
Before you turn it on
Be on the Plus plan.
Turn on the Delivery Promises app embed. The embed is what puts the markup on your product pages. In the theme editor, open App embeds, switch on Delivery Promises, and save.
Turn it on
In ArrivesBy, open Settings and scroll to Advanced.
If you see Product write permissions required, select Enable permissions and approve the request in Shopify.
Turn on ETA schema markup for AI shopping agents.
Select Save.
Saving starts a full catalog publish. ArrivesBy works through every variant in the background, and on a large catalog that can take a while. You don't need to stay on the page. The markup doesn't appear on your product pages until the publish finishes.
Keeping it current
Markup updates either when you create, edit, or delete a rule or when a variant goes in /out of stock.
Turn it off
Turning the setting off removes the markup from your product pages right away. Downgrading your plan will also remove the markup.
Verify in a validator
Make sure the app embed is on, the setting is on, and the first publish has finished.
Open a product page on your live store for a product that matches one of your rules.
Paste the page URL into the Schema Markup Validator at validator.schema.org, using the Fetch URL tab.
You should see a Product with an Offer. Inside it, shippingDetails holds an OfferShippingDetails entry with handlingTime and transitTime, each with minValue, maxValue, and a unit of DAY.
Prefer to check by hand? View the page source and search for application/ld+json. If your store is password-protected, online tools can't fetch it, so paste the page source into the validator's code tab instead.
Google's Rich Results Test will also show the structured data it finds. A clean result in any validator means the markup is well formed. It doesn't mean Google or any AI service will use it.
Will AI agents use it?
Schema.org is an open standard, and ArrivesBy publishes it in the standard format. AI assistants, shopping agents, and search engines can read it, but we cannot control how often they refresh their data.
It is not a product feed: ArrivesBy doesn't submit your products to Google Shopping or any other marketplace.
