For the complete documentation index, see llms.txt. This page is also available as Markdown.

Withdrawal Button

Give EU customers the online "withdraw from contract here" function required since 19 June 2026, and handle every withdrawal statement from one place.

Directive (EU) 2023/2673 added a new Article 11a to the EU Consumer Rights Directive. Since 19 June 2026, every shop that sells to EU consumers online must offer a withdrawal function — a way for the customer to withdraw from a distance contract on the website itself, not only by email or letter. The function must provide:

  • an entry point labelled "withdraw from contract here" that is prominent, easy to reach and available throughout the withdrawal period;

  • an online statement where the consumer gives their name, something that identifies the contract (the order) and the electronic address to send the confirmation to;

  • a separate "confirm withdrawal" control, so nobody withdraws by accident;

  • an acknowledgment of receipt on a durable medium, containing the content of the statement and the date and time it was submitted.

A statement counts as made in time if it is submitted before the 14-day withdrawal period ends, and no reason may be required. You must also mention that the function exists, and where to find it, in your pre-contractual information — in practice, your refund policy.

Germany implements the rule as § 356a BGB with the labels "Vertrag widerrufen" and "Widerruf bestätigen". Poland's transposition is delayed, but the obligation under the Directive stands for anyone selling to Polish consumers.

Withdrawal Button in Omnibus Owl adds the entry point to your storefront, hosts the two-step statement page on your own domain, records every statement with its submission time, and gives you one place to accept, decline and track them.

The acknowledgment of receipt is sent by email automatically. The moment a customer confirms the statement, Omnibus Owl emails them an acknowledgment containing the full statement and the date and time of submission, in the language they used on your storefront. You can edit its texts per language and adjust the sender, reply-to, logo and colour — see Acknowledgment email.

On your storefront

The Withdrawal Button app embed, enabled in the Shopify theme editor, adds two things to your theme:

  • Footer link — a "Withdraw from contract here" link in the footer of every page, so it is reachable during the whole withdrawal period. In the theme editor you can set the footer selector, alignment, colour and spacing.

  • Floating button (optional) — a button that stays visible while the shopper scrolls, with its own position, offset and colours.

Both lead to the withdrawal page at:

https://<your-store>/apps/omnibus/withdraw

The page is rendered inside your theme, on your store's domain, and needs no customer login. You can link to the same address from a navigation menu, a footer block or your refund policy.

Prefer a link in your own footer menu? Untick Show a link in the footer in the app embed's settings, then go to Online Store → Navigation, open your footer menu and add a menu item labelled "Withdraw from contract here" (or the wording of your language) with the link /apps/omnibus/withdraw. The withdrawal page follows the storefront language automatically. Keep the label prominent — the law requires the entry point to be easy to find on every page during the withdrawal period.

The withdrawal page

The statement is submitted in two steps, exactly as the law lays out.

Step 1 — Statement. The customer enters their name, order number and email address. If you have turned on Ask for a reason, a reason field is shown as well — it is always optional and never blocks the statement.

Step 2 — Review and confirm. When the order number and email match an order in your store, the page shows the order's items (with a checkbox per item when you allow withdrawing single items), the dates the order was placed and received, the statement text, and the name, email and date. The customer then clicks Confirm withdrawal.

If nothing matches — a typo in the order number, an order placed with a different email — the statement is still accepted and flagged as unmatched in the app. The law does not allow a statement to be refused because it could not be matched to an order automatically; you match it yourself afterwards.

Receipt. After confirming, the customer sees a receipt with a reference number (for example WD-2026-0142), the date and time of submission, the withdrawn items and a short what happens next text. At the same moment the acknowledgment email is sent to the address the customer gave — that is the acknowledgment of receipt on a durable medium the Directive requires. The order is tagged (default withdrawal-requested, editable in Settings) so you can spot it in the Shopify admin, and the statement is written to the order as a read-only Withdrawal statement metafield — visible on the order page, usable in Shopify Flow, and kept with the order even if you uninstall the app. It is updated whenever you accept, decline or refund, and records whether the acknowledgment email was delivered.

The Withdrawals tab

The page opens on the Withdrawals tab:

  • Withdrawal function — the On / Off switch and the storefront address of the withdrawal page.

  • App Blocks Status — the same theme check as on the other feature pages: pick a theme, see whether the Withdrawal Button app embed is Installed or Not Installed, and click Install to open the theme editor with the embed ready to activate. Installation guide in the card header opens the setup steps.

  • Awaiting your action — new statements that need a decision, accepted statements that you have not yet refunded (refund within 14 days), and unmatched statements waiting to be linked to an order.

  • Last 30 days — statements received, accepted and declined, and your average time from statement to refund.

Below is the list of statements: reference, date and time, customer, order, items, status (New, Accepted, Refunded, Declined) and the Acknowledgment column — Sent, Pending or Not delivered. Search by reference, customer or order, filter by status and period, and Export CSV for your records.

Statement details

Click a statement to open it. You see the statement exactly as submitted, and — when matched — the order with its placed and delivered dates, the withdrawal period (14 days from delivery) with a Submitted in time or After the period label, and the refund due date (14 days from the statement). A timeline records what happened and when.

An Acknowledgment email card shows the delivery status of the acknowledgment sent to the customer. View email opens the email exactly as it was sent — it is kept with the statement as evidence — and Resend sends it again. If the address bounced, the status changes to Not delivered so you can contact the customer another way. Statements recorded before acknowledgment emails were introduced, or whose sending failed, show Send now instead.

Actions:

  • Accept — for fulfilled orders you can also Create a return request in Shopify for the withdrawn items; for unfulfilled orders, Cancel the order and restock. Both checkboxes start from your Settings defaults.

  • Decline — with a note. Use it only where the law allows: goods without a right of withdrawal (for example sealed goods opened after delivery, or personalised items) or statements made after the period.

  • Mark as refunded — once the money has gone back to the customer.

Omnibus Owl never moves money. Refunds are always issued by you from the order in the Shopify admin, as today — the app only records that it happened.

Settings

Setting
Default
What it does

Match the statement to an order

On

Look up the order by order number and email so the review step can show its items and dates. Off: the customer only types the details.

Let customers withdraw single items

On

Show a checkbox per item on the review step. Off: the statement always covers the whole order.

Ask for a reason

Off

Add an optional reason field to the form. It is never required.

Acknowledgment email — Sender name

Your store name

The name the customer sees as the sender. Emails are sent from Omnibus Owl's verified address with this name.

Acknowledgment email — Reply-to address

Your store contact email

Where the customer's reply goes.

Acknowledgment email — Show my store logo

On

Use the default logo from Shopify Settings → Brand at the top of the email. Without a logo, your store name is shown instead.

Acknowledgment email — Accent colour

—

Hex colour of the top border of the email.

Acknowledgment email — Notify me of every statement

Off

Send you a short summary with a link to the statement each time one is submitted. The address defaults to your store contact email and can be changed.

Acknowledgment email — Preview email / Send test to me

—

Preview email shows the email as the customer will receive it; Send test to me sends it to your notification address. The card also links to the texts on the Languages tab.

Unfulfilled orders, after you accept

Cancel and restock

What Accept suggests for orders that have not shipped: cancel the order and restock the items, or do nothing.

Fulfilled orders, after you accept

Create a return request

What Accept suggests for shipped orders: create a return request in Shopify for the withdrawn items, or do nothing.

Tag the order

withdrawal-requested

The tag added to the order when a statement is submitted. Leave empty to add no tag.

Your refund policy

—

Suggested wording that mentions the withdrawal function and its address on your store, with a Copy button.

Records

—

Statements are stored with their submission time and mirrored onto the matched order as a read-only metafield. Export CSV downloads them all.

Mention the function in your refund policy

The Directive requires you to tell customers, before they order, that the withdrawal function exists and where it is. The Your refund policy card gives you a ready-made paragraph containing your store's withdrawal address. Copy it and paste it into your refund policy (Shopify admin → Settings → Policies) or your terms and conditions. Omnibus Owl cannot edit your policies for you.

Records and data

Every statement is kept with its content, the date and time of submission and the acknowledgment email as it was sent, which is your evidence that it was received and acknowledged. Statements are deleted when a customer's data is erased through a Shopify data-erasure request, and when you uninstall the app — export a CSV first if you need to keep them.

Acknowledgment email

Article 11a(4) of the Consumer Rights Directive requires you to acknowledge receipt of the statement on a durable medium, with the statement's content and the date and time it was submitted. Omnibus Owl does this by email, automatically, the moment the customer confirms — there is nothing to switch on. The email goes to the address the customer gave in the statement, in the language they used on your storefront.

What the email contains

The email has one fixed layout:

  • your store logo (the default logo from Shopify Settings → Brand, if you have one and Show my store logo is on) or your store name, above a coloured top border;

  • a heading and a greeting and introduction;

  • the statement block — the statement text, the items with quantities and prices, the order number, the ordered and received dates, the customer's name, the confirmation address, the reference number and the date and time of submission. This block is generated from the statement and cannot be edited or removed, because it is what makes the email a valid acknowledgment;

  • a what happens next paragraph;

  • a closing and signature and your store's contact email;

  • a footer with your store name and address and a legal line.

Editable texts

On the Languages tab, the new Acknowledgment email group lets you edit, per storefront language: the subject, the heading, the greeting and introduction, the title above the statement block, what happens next, the closing and signature and the legal line. These texts can include the placeholders {{date}}, {{time}}, {{reference}}, {{name}}, {{order}} and {{shop}}, replaced with the submission date and time, the reference number, the customer's name, the order number and your store name.

English, German and Polish ship with ready-made page and email texts; other languages start from the English text until you translate them. The two button labels are pre-filled with the statutory wording for all 20 EU languages the app supports.

Email settings

The Acknowledgment email card on the Settings tab controls how the email is sent and looks:

  • Sender name — defaults to your store name. Emails are sent from Omnibus Owl's verified address with your name as the sender, so they are delivered reliably without any DNS setup on your side.

  • Reply-to address — defaults to your store contact email. When the customer replies, the reply lands here.

  • Show my store logo — uses the default logo from Shopify Settings → Brand; if there is none, the store name is shown instead.

  • Accent colour — the hex colour of the email's top border.

  • Notify me of every statement — sends you a short summary with a link to the statement each time one is submitted. The notification address defaults to your store contact email and can be changed.

  • Preview email shows the email as the customer will receive it, and Send test to me sends it to your notification address. A link takes you to the texts on the Languages tab.

Delivery status

The Withdrawals tab shows each statement's acknowledgment as Sent, Pending or Not delivered. Bounces are detected automatically and shown as Not delivered — the statement still counts as received, so contact the customer another way to acknowledge it. In the statement details you can View email (the copy exactly as sent, kept as evidence) and Resend it; statements recorded before this feature existed, or whose sending failed, offer Send now.

Languages

The Languages tab lists every published storefront language. For each one you can edit:

  • the two statutory labels — the entry point (Withdraw from contract here) and the confirmation control (Confirm withdrawal);

  • every text of the withdrawal page: the form, the review step, the receipt and the error messages;

  • the texts of the acknowledgment email — see Editable texts.

The two button labels are pre-filled with the wording prescribed by law for every EU language the app supports — taken from the official language versions of the Directive (German uses the wording of § 356a BGB) — and carry a badge saying so. Norwegian has no official version and starts from English with a Verify wording badge until you edit it.

The receipt text can include the placeholders {{date}}, {{time}} and {{reference}}, which are replaced with the submission date, time and reference number. The email texts additionally accept {{name}}, {{order}} and {{shop}}.

Setting it up

  1. Open the installation guide and tick Withdrawal Button.

  2. Enable the app embed — click Enable to open the theme editor with the Withdrawal Button embed ready to switch on, Save in the editor, then Verify.

  3. Grant order access — click Grant access on the banner on the Withdrawals tab (see Permissions).

  4. Turn the function on — the switch on the Withdrawals tab or in the guide.

  5. Mention the function in your refund policy — copy the suggested wording from Settings and paste it into your policy.

The card on your home page shows the feature as Active or Not set up, together with the number of new statements awaiting your decision.

Permissions

Omnibus Owl does not ask for access to your orders when you install it. Only the Withdrawal Button uses orders, so the app asks for that access when you need it: until you grant it, the Withdrawals tab shows a yellow Allow order access to use the withdrawal function banner. Click Grant access and approve the request in the Shopify dialog. The banner disappears once access is granted.

The access covers:

  • Orders: to match statements to orders (including orders older than 60 days, because a withdrawal can arrive late), tag them, record each statement on the order, and cancel an unfulfilled order when you accept.

  • Returns: to create return requests for shipped orders when you accept.

Without it, customers can still submit statements. Every statement is still recorded and acknowledged, but it shows as unmatched, and accepting it does not change anything in Shopify. Nothing is changed on an order until you accept a statement.

The withdrawal page itself is served on your store's domain through the app proxy, which the app already has permission for.

With the acknowledgment email, Shopify asks for one more permission: reading your store's brand assets, so the email can show the logo you set under Settings → Brand.

What's not included

  • Sending from your own domain. Acknowledgment emails are sent from Omnibus Owl's verified address, with your store name as the sender and your reply-to address, so they reach customers without any DNS setup. Sending from your own email domain is not offered.

  • An order action inside customer accounts. The withdrawal page is reached from the storefront link, the floating button and your refund policy; there is no button on the order page of the customer account yet.

Good to know

Does the link have to be in the footer? The law asks for a prominent, easy-to-reach entry point that stays available for the whole withdrawal period. A footer link on every page meets that; the floating button makes it even more visible. Hiding the link behind a login does not.

Can I ask why the customer is withdrawing? You can ask — turn on Ask for a reason — but the field is always optional. The right of withdrawal does not depend on a reason.

What if the order wasn't placed through Shopify, or I can't find it? The statement is still received and flagged as unmatched. Look it up by the customer's details, then accept or decline it like any other.

Does this replace my existing withdrawal form or email address? No. Customers may still withdraw by email, letter or your model withdrawal form; the online function is an additional channel the law now requires.

Last updated