Skip to main content

How rules work

Learn how to create and manage rules to control which delivery estimates appear for specific products, markets, and regions.

Written by Trevor Reid

Rules are how you control which delivery estimate ArrivesBy shows — and to whom. Each rule defines which products it applies to, any additional filters (market, region, location), and the lead and transit times to display. When a customer views a product, ArrivesBy finds every rule that matches and applies the most specific one. If nothing matches, it falls back to the Default rule.

The Default rule

The Default rule is always present and cannot be deleted. It is the catch-all — any product that doesn't match a more specific rule will show the delivery times configured here.

Set up the Default rule before creating any other rules. It establishes the baseline estimate every product falls back to.

Creating a rule

Click Add rule from the Rules page to create a new rule. Every rule has a name, a scope (what it applies to), optional additional filters, and delivery time settings.

Rule name

The name is for your reference only — customers never see it. Use something descriptive like "Express shipping — US East" or "Preorder: Spring Drop."

Status

A rule can be set to Active (live immediately) or Draft (saved but not applied). You can also schedule a rule to activate and expire on specific dates — see Publishing schedule below.

Applies to

This section controls which products the rule targets. There are four modes:

  • Specific products or variants — targets individual products or specific variants you select by name.

  • Specific collections — targets any product that belongs to one of the selected Shopify collections.

  • Product attributes — targets products based on tag, type, or vendor using a condition builder (see below).

  • All products — targets every product in your store. Useful when you want a broad rule that a more specific rule can override for certain products.

Product attributes

Selecting Product attributes reveals a condition builder. Each row lets you match products by Tag, Product type, or Vendor.

Click + Add condition to add more rows. A product matches the rule if it satisfies any of the conditions — for example, a rule with Tag = "fragile" and Type = "Furniture" will apply to products tagged "fragile" or products with type "Furniture."

Additional filters

Additional filters narrow a rule further. Unlike "Applies to," additional filters are AND'd — every selected filter must match for the rule to apply.

For example: a rule scoped to Collection = "Furniture" with a Shipping region filter of "East coast" will only apply to Furniture products ordered by customers in your East coast region.

Market

Scope the rule to a specific Shopify market (for example, "United States" or "European Union"). Only customers shopping in that market will see this rule's estimates. Leave blank to apply to all markets.

Permissions required

Market and location filters require ArrivesBy to have read access to your markets and locations. If you see a prompt to enable permissions, grant access so ArrivesBy can show location- and market-specific delivery dates.

Location

Scope the rule to orders fulfilled from a specific warehouse or fulfillment location. This is useful when your processing time varies by location — for example, your main warehouse ships in 1 day, but a secondary warehouse takes 3 days.

Shipping region

Scope the rule to a custom shipping region defined in ArrivesBy. Shipping regions let you group states and provinces into named delivery zones and apply different transit times to each. Supported countries: US, Canada, Australia, and New Zealand. → Learn about geolocation & shipping regions

Slot

Scope the rule to a specific block slot (A–F). Slots are for stores with multiple ArrivesBy blocks on the same product page showing different estimates — for example, standard vs. express shipping. → Learn about block slots

Lead time

Lead time is how long it takes for an order to be ready to ship after it's placed. ArrivesBy counts lead time in business days — the days your store processes and ships orders, as configured in your shop settings.

In-stock lead time

The Show delivery estimates toggle in this section controls whether estimates appear for products that are in stock.

  • On — estimates show for in-stock products. Enter the number of business days it takes you to process and ship an order. Use 0 for same-day dispatch.

  • Off — no estimate is shown for in-stock products. Useful if you want to hide estimates for a specific product group or suppress them entirely for this rule.

Preorder / out-of-stock lead time

This section controls estimates for products that have 0 inventory but are set to continue selling when out of stock in Shopify (preorder mode).

  • Off — no estimate is shown for out-of-stock products.

  • On — estimates show for out-of-stock products. Choose one of two modes:

Business days — enter the number of business days until the order ships. This works the same as in-stock lead time but only applies when the product is out of stock.

Specific date — enter the exact date the order will ship. This is ideal for preorder products with a known restock or release date. ArrivesBy uses this as the ship date directly, jumping ahead to the next business day if it falls on a non-processing day.

Expired ship dates

If the specific ship date has passed, ArrivesBy will not show estimates for out-of-stock products until you update the date. Expired rules are flagged in the rules list.

Transit time

Transit time is how long the carrier takes to deliver after the order ships. Enter a min and max transit time in business days. ArrivesBy displays this as a date range to the customer — for example, "Arrives between Jun 12 – Jun 15."

  • To show a single exact date, enter the same value in both fields (or leave max blank).

  • Transit days are counted based on carrier operating days, configured in your shop settings.

Publishing schedule

Rules support optional Activate on and Expire on dates, useful for seasonal promotions, sale events, or temporary preorder windows.

  • Activate on — the rule goes live on this date. Before this date it behaves as a Draft even if its status is set to Active.

  • Expire on — the rule deactivates after this date and shows as Expired in the rules list.

Leave both fields blank for a rule that is always active. Rules can have four computed states:

  • Active — live now

  • Draft — manually set to Draft, not applied

  • Scheduled — status is Active, but Activate on is in the future

  • Expired — status is Active, but Expire on has passed

How rules are prioritized

When multiple rules match a product, ArrivesBy applies them in layers — each layer can override the one before it. The order, from lowest to highest priority, is:

  1. Default rule — always applied first as the baseline.

  2. Product rules — applied on top of the default. When multiple product rules match, more specific conditions win over broader ones (for example, a rule targeting a specific collection beats a rule targeting all products).

  3. Market and location rules — always applied last and always win, regardless of how specific the matching product rule is.

Example

You have a Default rule (3–5 day transit) and a product rule for your "Furniture" collection (7–10 days). You also have a market/location rule for the West coast (1–2 days). A West coast customer looking at a Furniture product will see 1–2 days — the market rule wins even though the Furniture rule is more specific than the Default.

Troubleshooting

Rule systems can get complicated quickly. If you have many rules active at the same time — targeting overlapping collections, tags, vendors, or markets — it can be hard to predict which rule will win for a given product and customer. When a product matches multiple rules at the same priority level, the outcome may not be what you expect.

The best way to diagnose what's happening is to use the debug mode in Shopify's online theme editor.

  1. Open your store in the Shopify theme editor (Online Store → Themes → Customize).

  2. Navigate to a product page that's showing an unexpected estimate.

  3. Click the ArrivesBy app block to select it.

  4. In the block settings, enable Debug mode.

With debug mode on, the ArrivesBy block displays the name of the rule that produced the current estimate alongside the delivery dates. This tells you exactly which rule is winning — so you can go back to the Rules page and adjust its scope or priority accordingly.

Tips for keeping rules manageable

  • Start with the Default rule and add specific rules only when you need different times for a subset of products.

  • Avoid creating multiple rules that could match the same product at the same priority level — use more specific conditions (individual products or collections) rather than broad attribute rules that might overlap.

  • Test your rules in the theme editor with Troubleshooting mode if you ever see something unexpected.

Did this answer your question?