Skip to content

Setting up the withdrawal button

WP-ImmoMakler provides a withdrawal button with an accompanying withdrawal form that lets consumers withdraw from a contract they concluded with you (for example an estate agency agreement) online. After submitting, the consumer immediately receives an automatic acknowledgement of receipt by email, and you as the estate agent are notified by email in parallel.

The feature is included in all editions (BASIC and PLUS).

With the implementation of the EU requirements, Section 356a of the German Civil Code (BGB) (effective from 19 June 2026) requires an easily accessible, digital withdrawal function for distance contracts concluded online. The process has three stages:

  1. A permanently visible, clearly labelled button (e.g. “Withdraw from contract”).
  2. A confirmation page with a form to identify the contract.
  3. An explicit confirmation click and an immediate acknowledgement of receipt to the consumer on a durable medium (email).

You will find the central settings in the back end of your website (wp-admin) under WP-ImmoMakler → Settings → Withdrawal button.

Withdrawal button tab with notes, spam protection, recipient fields, archive copy, withdrawal page and button label
SettingDescription
Recipient email (withdrawals)Address to which incoming withdrawals are sent. Prefilled with the contact form recipient. If the field is left empty, the contact form’s fallback recipient and, failing that, the WordPress administrator address are used.
Recipient name (withdrawals)Display name of the recipient. Prefilled with the contact form recipient.
Archive copyOptional additional address that receives a copy of every withdrawal for archiving.
Withdrawal pagePage selector: the page on which the withdrawal form is embedded. In “Link” mode the button points to this page.
Button labelText on the withdrawal button (default: “Withdraw from contract”).
Button colourBackground colour of the button (default: dark red). Without a custom hover colour (see below), the hover colour is calculated automatically a little darker. When embedded via a page builder, its own style settings can override this colour.
Button hover colourBackground colour on mouse hover. Empty = automatically a little darker than the button colour. This setting also applies when no Button colour is configured above - the button then keeps your theme’s appearance and only switches to this colour on hover. If a shortcode, block or page-builder element sets its own background colour, that button always gets its own automatically darkened hover colour instead. When embedded via a page builder, its own style settings can override this colour.
Button text colourText colour of the button in the normal state (default: white) - applies to both the withdrawal button and the form’s submit button. Without a custom hover text colour (see below), it also applies on hover. Page-builder style settings can override it.
Button hover text colourText colour on mouse hover. Empty = the same colour as the normal state. Page-builder style settings can override it.
Introductory text above the formShown above the form.
Submit button labelText on the button that submits the form (default: “Submit withdrawal”).
Acknowledgement-of-receipt text (email)Introductory text of the automatic confirmation email to the consumer.
Privacy policy pagePage selector for the privacy notice link in the form. If nothing is selected, the privacy policy page configured in WordPress is used.

The sender name of the emails is taken from the Sender name and Sender email fields of the contact form (under WP-ImmoMakler → Settings → Contact form).

Two shortcodes are available. Like all WP-ImmoMakler shortcodes, they use hyphens.

[immomakler-widerruf-button]
[immomakler-widerruf-button mode=modal]
AttributeValuesDescription
modelink (default), modal, noneBehaviour of the button (see below).
labelTextLabel. Empty = default text from the settings.
pageURL or page IDTarget in link mode. Empty = withdrawal page from the settings. In the page builders you conveniently choose the page from a drop-down list.
linkURLCustom link to any address (e.g. external URL, anchor or builder pop-up action). Overrides page.
colorHex colourBackground colour of the button (e.g. #1a7f5a). Empty = colour from the settings. Without a custom hover colour in the settings, the hover colour is calculated automatically a little darker.
classCSS class(es)Additional classes on the button - for example as a trigger for a builder pop-up.

Modes:

  • link - The button is a link to the configured withdrawal page (where the form is embedded).
  • modal - The button opens the form in an overlay on the same page. The form is delivered automatically.
  • none - The button triggers no behaviour of its own. This mode is meant for using a builder-native pop-up as the trigger (see Native page-builder pop-ups).
Withdrawal button on the frontend Withdrawal form in an overlay above the page
[immomakler-widerruf-form]
AttributeValuesDescription
post_idWordPress post ID of the propertyOptional. Prefills the contract-identification field with the property’s object ID and title. This is the internal WordPress post ID of the property, not the external property number (objektnr_extern, e.g. “W882”).
contract_identification_prefillTextOptional. Prefills the identification field with a fixed text. Takes precedence over post_id.
object_idWordPress post ID of the propertyDeprecated. Alias for post_id, still works.
object_labelTextDeprecated. Alias for contract_identification_prefill, still works.

When post_id is given, the form prefills the “Information identifying the contract” field with the property’s object ID (external property number) and title. The consumer can still edit these details.

Embed the button and the form depending on the desired flow: either the button in link mode on any page and the form on a dedicated withdrawal page, or the button in modal mode, which shows the form directly in the overlay.

Completed withdrawal form on the frontend with ticked checkboxes (sample data)

The form (the confirmation page) is deliberately short and only asks for what a withdrawal requires. All fields are mandatory (marked with *):

  • First name and Surname
  • Details identifying the contract (text field) - or the part of the contract the consumer wishes to withdraw from (e.g. contract number, contract date, property ID etc.)
  • Email address - the acknowledgement of receipt is sent to this address

Below these follow the declaration “I hereby withdraw from the contract identified above.”, a mandatory confirmation of the withdrawal and consent to the privacy policy. The form is submitted via the button whose text you set in the settings (default “Submit withdrawal”).

When submitted, the form is transmitted via AJAX - so the page does not reload, and the acknowledgement of receipt appears right in place. If JavaScript is disabled, the form continues to work as a normal form submission.

Two emails are triggered:

  • To the consumer: an immediate acknowledgement of receipt with the content of the withdrawal as well as the date and time of submission. The confirmation documents only the receipt of the withdrawal - it is deliberately not a confirmation of its effectiveness, which is checked and communicated separately. In your own texts, therefore, avoid wording such as “Your withdrawal has been confirmed”.
  • To you (estate agent): a notification with all the submitted details. The consumer’s email address is set as the reply address (Reply-To); optionally, an archive copy is sent as a separate email to the configured archive address.
Acknowledgement of receipt shown in the frontend after submitting the withdrawal Automatic acknowledgement of receipt sent to the consumer by email

Every incoming withdrawal is stored in WordPress in addition to being sent by email. You will find the stored withdrawal emails in the back end of your website (wp-admin) under WP-ImmoMakler → Withdrawal Emails. The menu item only appears once the withdrawal form has actually been used at least once - even if the sending was not successful.

For every withdrawal, WP-ImmoMakler creates a single record that documents both emails sent for it together - the notification to your email address and the acknowledgement of receipt to the customer. For both, the list shows the recipient address used and whether the sending was successful according to WordPress. For the acknowledgement of receipt, a further distinction is made between it not being sent at all - for example on suspicion of spam or after the hourly limit was reached (see below) - and an actual sending attempt having failed.

List view of the stored withdrawal emails with columns for the recipient address and the send status

Unlike with contact inquiries, there is no setting for withdrawal emails to turn off the storage - a withdrawal is a legally significant declaration with a deadline, so storing it is a fixed part of sending it.

The form is protected by the same invisible checks as every form in the plugin - a honeypot field, the form’s origin, and the fill time. In addition, you can enable ALTCHA. Both are configured under WP-ImmoMakler → Settings → Spam Protection; for an overview, see Spam Protection. The check requires no input from your visitors; the form is still sent via AJAX.

A withdrawal always reaches you: if spam is suspected, the notification to you is merely flagged, never withheld. Only the acknowledgement of receipt to the sender may be skipped in that case.

For every supported page builder there are two elements - one for the button and one for the form. Internally they render the same shortcodes.

In the button element you choose the withdrawal page from a drop-down list of your pages (instead of entering a URL or ID). If the selection is left empty, the withdrawal page from the settings is used. Via the optional Custom link (URL) field you can instead point the button to any address - for example an external URL, an anchor or the action of a builder-native pop-up; this link overrides the chosen withdrawal page.

Page builderElements
Gutenberg“Withdrawal button” and “Withdrawal form” blocks
Elementor“Cancellation button” and “Cancellation form” widgets (category “WP-ImmoMakler: usable site-wide”)
Divi“WP-ImmoMakler Cancellation Button” and “WP-ImmoMakler Cancellation Form” modules
WPBakery“Cancellation button” and “Cancellation form” elements
Bricks“Cancellation button” and “Cancellation form” elements
Oxygen“Cancellation button” and “Cancellation form” elements
Elementor widget panel with the withdrawal button and withdrawal form widgets Block inserter with the withdrawal button and withdrawal form blocks

You set the background colour most easily via the Button colour setting (see above); without a custom Button hover colour, the hover colour is derived from it automatically. For styling beyond that, the button is a simple, semantic element with the CSS class immomakler-widerruf-button. Its appearance can be customised via CSS custom properties without editing PHP - for example in the Customizer under “Additional CSS”:

.immomakler-widerruf-button {
--immomakler-widerruf-button-bg: #1a7f5a;
--immomakler-widerruf-button-bg-hover: #14654780;
--immomakler-widerruf-button-radius: 6px;
}

In the page builders, the respective builder-native style options (colour, spacing, typography) are also available directly on the button element. These settings each take precedence over the global colour setting:

  • Elementor: Style tab with the familiar button settings - alignment, typography, text and background colour (normal and hover state), border, border radius, box shadow and padding.
  • Divi: Design tab with text/typography, background, border (incl. radius), box shadow and spacing.
  • Bricks: Style tab, Button group with typography, text and background colour (normal and hover), border, box shadow and padding.
  • WPBakery: Design tab with text and background colour (normal and hover), border radius, padding as well as the WPBakery-native design options.
  • Oxygen: controls for text and background colour (normal and hover), border radius and padding directly on the element.
  • Gutenberg: the block uses the global button colour by default. Via the Button colour setting in the block you can choose a custom colour; without a custom hover colour in the settings, the hover colour is calculated automatically a little darker from it. If the field is left empty, the global colour still applies.

The page-builder style options above apply only to the withdrawal button (the trigger). The submit button inside the form takes the colour set under Button colour (with the hover colour set under Button hover colour, or the automatically derived one); its text is configured separately via Submit button label.

If, instead of the built-in overlay, you want to use a pop-up from your page builder (for example Elementor Pro Popups, Bricks Popups or an Oxygen modal), proceed as follows:

  1. Set the button to none mode (in the page builder: “No behaviour (builder pop-up)”).
  2. Give the button a trigger class via the “Additional CSS class” field (or the class attribute), e.g. widerruf-popup-oeffnen.
  3. Create a pop-up in your builder and configure it to open when this class is clicked.
  4. Place the withdrawal form element (or the shortcode [immomakler-widerruf-form]) inside the pop-up.
Elementor withdrawal button widget with the builder pop-up mode and the trigger class widerruf-popup-oeffnen

Elementor Pro offers no pop-up trigger for a click on a CSS class. Instead, store an Elementor pop-up action in the “Custom link” field (link attribute).

The output and the email texts can be customised via filter hooks:

FilterPurpose
immomakler_widerruf_button_htmlHTML of the button.
immomakler_widerruf_form_htmlHTML of the form or the success message.
immomakler_widerruf_makler_emailtextText of the notification to the estate agent.
immomakler_widerruf_confirmation_emailtextText of the acknowledgement of receipt to the consumer.