Progressive Discount doesn’t register a shortcode, a widget, or a block — there is no manual placement step. The active campaign’s progress bar is injected automatically wherever its Display & Rules toggles say it should appear.
Cart and Checkout
On a standard (non-block) Cart page, the ladder is injected just above the cart table whenever Show in Cart is on. On a standard Checkout page, it’s injected just above the checkout form whenever Show in Checkout is on. Both stay live as the cart changes — adding, removing or changing quantities updates the progress bar and message immediately, without a full page reload.
Inside the Side Cart drawer
If Side Cart is also installed and active, its drawer includes a dedicated slot that calls directly into Progressive Discount’s own renderer — the exact same message copy and colours configured in Styling the progress bar, just displayed inside the drawer instead of the cart or checkout page. There is nothing extra to configure on the Progressive Discount side for this to work; it reads the same active campaign as everywhere else.
For theme and plugin developers
Progressive Discount does not register any do_action or apply_filters hooks of its own for extending its output — if you need to reach its data directly (for example, to build a custom placement beyond Cart, Checkout and the Side Cart drawer), the calculator and renderer are reachable through its singleton:
$pd = PD_Plugin::instance();
$context = $pd->cart_calculator->get_context( WC()->cart );
echo $pd->progress_renderer->render( $context );
This is the same call Side Cart’s own drawer slot makes internally — it always reflects whichever campaign is currently Active, and returns nothing if no campaign is active.