Every other concept in these docs — Smart Rules, behavior modes, discounts, translations — is a property of an offer, not a separate thing you configure on its own. That's worth stating plainly because the admin UI (and the API behind it) groups these as tabs on one offer editor, which can make them feel like independent features rather than facets of a single entity.
An offer's product selection can be a fixed list you choose, or handed off to ShopBrain to select dynamically from cart contents and order history. Its context field is an array, not a single value, which is what lets one offer run in several related contexts at once — a product-page offer that also shows in the cart drawer, for instance — sharing the same products, discount, and Smart Rules, but rendering with each context's own display and layout capabilities.
Two things about offer identity are easy to miss. First, an offer's context list determines which behavior modes, layout options, and translation fields are even available to it — the editor hides what the current context combination doesn't support rather than showing it disabled, so a missing option usually means a context mismatch, not a bug. Second, "Offer" is the term used throughout this product and these docs, but the underlying API and codebase call the same entity a "Rule." If you're ever working from API responses or error messages directly, expect to see "rule" where the UI says "offer."