Order bumps
Order bumps are a one-click add-on offer rendered inside the checkout, just above the place-order button. They lift average order value when the cart-add is frictionless: same form, same payment method, no redirect.
Three approved layouts
Bumps render through OCart_Bump_Renderer and ship in three styles, controlled by display_config.style:
- Dashed - bordered box with a checkbox
- Card - elevated card with a swatch
- Ribbon - inline ribbon stripe
Targeting
OCart_Bump_Selector resolves the right bump for each cart. Targeting rules live on the offer row in wp_ocart_offers.targeting_rules (JSON). Supported axes:
- Funnel ID (only show on a specific funnel)
- Product IDs in cart
- Cart minimum total
- A/B test variant assignment
A bump is only eligible if its status is active. Bumps are stored in wp_ocart_offers with type='bump'.
Pricing
OCart_Offer_Pricing::resolve_price() reads pricing_rule, which can be:
- Flat price
- Percentage off the product's regular price
- Fixed dollar discount
Lifecycle
For every cart that sees a bump, OCart records an OCart_Offer_Events_Repo row in wp_ocart_offer_events with one of: shown, accepted, declined, failed. Each event carries the cart ID and a unique idempotency key.
A/B testing
Bumps are a first-class A/B test surface. Tests stored in wp_ocart_tests with surface='bump'. The Bayesian engine (method='bayesian') is the default, with power_target=0.80, significance=0.95, mde_relative=0.10. Frequentist and bandit methods are also available.

