Confirming your payment

Paddle has your payment. This usually takes under a minute.

Help by DeltaBreen
PricingDocsConnect
Sign inStart free
← Connect

WordPress

The plugin puts the support form, a logged-in user's own tickets and the Help button on your WordPress site. There's nothing to paste: no key, no DNS record, no code. This page explains what it does, and what to check if it doesn't connect.

Install

  1. Download the plugin from Connect (/downloads/help-by-deltabreen.zip), then upload it under Plugins → Add New → Upload Plugin. It needs WordPress 6.3 and PHP 7.4 or newer.
  2. Under Settings → Help by DeltaBreen, press Connect with Help by DeltaBreen. Sign in (or create a free account) and approve. You need to be the workspace's owner or an admin.
  3. Add the Support form block to a page.

Your site needs HTTPS. A site on your own computer (localhost) connects in test mode. Its messages are marked as tests and deleted after a week.

What Connect sets up

A site in HelpNamed after your WordPress site. If its address already belongs to one of your sites in Help, or you added one built with WordPress, it joins that one. If your plan has no room for another, it shares your first.
Its keyThe live key, kept in the plugin's settings.
Its domainVerified with no DNS record, because the site answered our call (see below).
Logged-in usersThe plugin signs a ten-minute token for each logged-in user, with a secret only your site holds. Each user sees their own tickets and your replies.
The side panelOn Lite and higher: when an agent opens a ticket, we ask your site for that user's profile and, with WooCommerce and the other plugins below, what they hold of them. On Free it's set up but paused, and it turns on by itself when you move to a plan with room.

How your site shows it's really your site

Connecting gives your site a secret that says who its users are, so we make sure only your site gets it:

  1. An administrator approves in the portal. The approval goes back to your site's own admin address, and it's only good for one thing: connecting the site at that address.
  2. Your site makes a secret and sends it to us with the approval.
  3. We call your site back, signed with that secret, at up to three addresses: the REST API (/wp-json/help-by-deltabreen/v1/connector), the REST API without pretty links (/?rest_route=…) and admin-ajax.php. One right answer is enough.
  4. Only then do we give your site its key and its secret, and the approval ends.

A copied approval is no use to anyone but your site. That one answer also verifies the domain and connects the side panel. Our calls come from the address and User-Agent listed in integrations.md.

If our call back fails

The plugin's settings page shows how each of the three addresses answered. The usual causes:

It saysUsually means
refused the call (401 or 403)A security plugin or your host's firewall blocks callers who aren't logged in. Allow /wp-json/help-by-deltabreen/ and connect again.
was not found (404)The REST API or pretty links are turned off. The other two addresses cover this.
answered with a page, not with dataA cache, a "coming soon" page or a login wall is answering for your site.
did not answer in timeYour host allows one request at a time, so the site was still waiting for us while we called it.
is on a private networkYour site can't be reached from the internet.

If your site later changes how it can be reached (say you add a security plugin), the side panel will say your site turned our call away. Press Connect again to pick the address that works now.

On the page

Blocks: Support form, My support tickets, Help articles, Help button. Shortcodes: [deltabreen_help_form] (subject="true", title, intro, button, fields), [deltabreen_help_tickets], [deltabreen_help_articles] (section), [deltabreen_help_launcher] (label, subject, fields). The Help button can also be shown on every page from the settings page.

Fields filled in by your page. A field you add to the form in the portal as "Filled in by your page" is never shown to the visitor; the page gives it a value. In a block that's Filled in by your page, and in a shortcode fields: [deltabreen_help_form fields="plan=gold, source=pricing"], each a field's key, = and its value (no commas inside a value). On a WooCommerce order's page (a customer's own order under My account, or the page after checkout), order_id is filled in with that order's number by itself, so add a field with the key order_id and each ticket sent from there says which order it's about.

The user's role. A logged-in user's token says their role on your site (customer, subscriber…), and their tickets show it under "From your site". On Business, a set of reply times can be for some roles: under Settings, then Reply times, write role in "When your site says" and the roles beside it. Switch it off under Settings → Help by DeltaBreen.

Help articles (Pro and higher) are written in the portal, on the site's Articles tab, not in WordPress. Put the Help articles block on a page, give that page's address as the Help page address (the site's Settings tab), and your form starts suggesting the articles that match while a visitor writes. The Help button gets a Help articles tab as well, so a site that shows only the button still has them. To do that it sends us what they have typed so far; we keep none of it, and you can switch it off on the Articles tab. A picture in an article must be on your site's own verified domain, so upload it to your Media Library and use its address. The embed's guide has the rest.

The page is the same for every visitor, so page caches are safe. The form asks /wp-admin/admin-ajax.php?action=deltabreen_help_token who is logged in. That address answers with a token for a logged-in user and with nothing (204) for anyone else, and it's never cached (no-store). One visitor's token is never in a cached page for the next.

The credit under the form ("Help by DeltaBreen") is off on WordPress on every plan, unless you turn it on.

A site in German, French, Spanish, Italian or Dutch shows the form in that language: WordPress tells the page its language, and the form takes it, with your own words for that language from the site's Form tab where you wrote some. Once the plugin has a translation of its own for your site's language, its words are used instead. What you type in a block wins over all of them.

Replies from our emails open on your site. The button in each of our emails to your customers (a reply, confirm your address, how did we do) opens their ticket over your home page, with nothing to set: plugin 0.8.0 and later loads Help there when the link asks for it. Give a help page in the portal and the button opens tickets there instead.

What the side panel shows

The user's name, email address, username, role, sign-up date and a link to their profile, and what these plugins hold of them, from whichever your site runs:

PluginWhat the panel shows
WooCommerceNumber of orders, total spent, the five most recent orders
Easy Digital DownloadsThe same for their downloads, and with Software Licensing each licence's product, status and expiry (never its key)
LearnDash, LifterLMS, Tutor LMSEach course they're enrolled in, and how far through it they are
Paid Memberships Pro, Restrict Content Pro, MemberPress, Wishlist MemberEach membership, its status and when it ends
BuddyPress, BuddyBossTheir profile, the groups they're in that aren't hidden, and when they were last active

A field your site has nothing for isn't shown. We ask for it when an agent opens a ticket, show it, and don't store it. If you rearrange the panel under Integrations in the portal, it stays as you made it; one you never changed takes new fields when the plugin brings them.

Buttons for WooCommerce

On Pro and higher, a shop is given three buttons for the side panel the first time it connects with WooCommerce running. Each takes the order's number as the side panel shows it, and works only on that customer's own orders.

ButtonWhat it doesWord to type
Refund an orderRefunds through the order's own payment method: what's left, or the amount you type. For a whole order it can put the items back in stock. If the payment method can't refund by itself, it says so and nothing changes: refund it in WooCommerce.refund
Cancel an orderCancels an order that's waiting for payment, on hold or being made. No money moves.cancel
Email the order detailsSends the customer WooCommerce's own email with the order's details.send

Change who may press each, or remove one, on the integration's Buttons tab. One you remove isn't made again.

Tickets from your other forms

Already have a contact form? Under Settings → Help by DeltaBreen, Your forms lists every form of Contact Form 7, WPForms, Gravity Forms and Fluent Forms on your site. Switch a form on and each entry also becomes a ticket, once the form plugin has taken it as no spam. Your form plugin still sends its own email.

  • We guess which field is the email, the message, the name and the subject; change any of them there. Every other answer goes under the message as a line. Files, hidden fields and consent boxes are never sent.
  • A logged-in user's entry from WPForms, Gravity Forms or Fluent Forms lands as that user, in their own tickets on your pages. Contact Form 7 doesn't say who is logged in, so its entries come as guests. A guest is answered at the email they typed, and confirms it first as on our own form.
  • It counts toward your plan's tickets like our form. When Free's month is used up, a guest's entry isn't taken (the form plugin's email still goes); a logged-in user's always is.
  • If Help can't be reached, the entry waits in your site's own database and is tried again each hour for a day.

WordPress's privacy tools

Tools → Export Personal Data includes the tickets a person sent through this site, as their account here and as a guest with that email: each ticket's subject, status and dates, the messages they could read and the names of their files. Your team's private notes aren't in it; the customer's page in Help has the full copy. Tools → Erase Personal Data removes those tickets from Help. If you set one of them to be kept ("Keep this ticket"), nothing of that person's is removed and WordPress says so.

On your dashboard

Administrators see a box on the WordPress dashboard, "Tickets in Help": how many tickets are open, waiting on the customer, unassigned and late (late only on a plan with reply times), and a button to open them. Your site asks us at most every five minutes, signed with its secret, and we answer with those four numbers and nothing else. Hide it from Screen Options at the top of the dashboard if you don't want it. The admin bar shows how many are open, with a link.

Page builders

The shortcodes work in any page builder. Elementor also has three widgets, under General: Support form, My support tickets and Help articles, with the blocks' settings.

Updates

The plugin downloaded from Connect tells WordPress when a newer version is out, so it shows under Dashboard → Updates like any other. It asks us twice a day at most and sends nothing about your site.

A staging copy

When your host copies your site to a staging site, the copy takes the plugin's connection with it. If WordPress marks the copy as staging or development (most hosts' staging buttons do), the copy switches itself to test mode: it asks us once, signed with the connection it copied, and is given your site's test key and a sign-in secret for that copy alone. Its form, its logged-in users and the forms you switched on then make test tickets, in the same site in Help as your live site. Nobody is emailed, and they're deleted after a week. There's nothing to connect, and no domain to add.

Until the copy has switched, it shows no form, never the live one. Its Settings → Help by DeltaBreen says why. A copy whose host gave it new WordPress salts can't read the connection it copied, so it stays off. Your live site isn't affected either way.

A network of sites

On a WordPress network, connect each site from its own Settings → Help by DeltaBreen. Each keeps its own connection, also two sites on one host (example.com/shop and example.com/blog), and removing the plugin cleans every site. When you approve, the page names the site with its folder, and Pick for me gives each site its own site in Help. To answer two of them as one, choose the same site in Help under Connect it to.

Bringing your old tickets over

Used another helpdesk plugin on this site before? Bring its tickets over from Settings → Import in the portal: choose A helpdesk plugin on WordPress, then your site and the plugin on it. The Import page lists the ones we read.

  • There's no key to copy. We ask the plugin on your site, signed with your site's secret, and it reads the other plugin's tickets from your database. Nothing on your site is changed.
  • Tickets, replies and private notes come over, with their dates, status, priority and tags. Files come too, on Lite and higher, within your plan's storage.
  • A customer with an account on your site comes as that logged-in user, so their old tickets are in their own list on your pages. Anyone else comes as a guest.
  • Nobody is emailed, and it doesn't count toward your plan's tickets. Running it again brings only what's new.
  • It needs version 0.3.0 of the plugin or later. An older one is asked to update.

For developers

// Add your own fields to what agents see, then pick them on the integration's Side panel tab in the portal.
add_filter( 'deltabreen_help_customer', function ( $data, $user ) {
	$data['membership'] = get_user_meta( $user->ID, 'membership_level', true );
	return $data;
}, 10, 2 );

// Run a button (Pro and higher) that you added on the integration's Buttons tab, with the key "cancel_subscription".
// The agent has typed the word by the time this runs. The same idempotency key means the same press.
add_filter( 'deltabreen_help_action', function ( $result, $key, $user, $params, $envelope ) {
	if ( 'cancel_subscription' !== $key ) {
		return $result;
	}
	my_shop_cancel_subscription( $user->ID, $envelope['action']['idempotency_key'] );
	return array( 'ok' => true, 'message' => 'Subscription cancelled' );
}, 10, 5 );

// Treat some users as guests.
add_filter( 'deltabreen_help_identify_user', fn ( $identify, $user ) => ! in_array( 'administrator', $user->roles, true ), 10, 2 );

define( 'DELTABREEN_HELP_URL', '…' ) in wp-config.php points the plugin at another stack.

Disconnecting

Disconnect this site in the plugin makes your site forget its key and secrets. Disconnect next to the site on the Sites page in the portal ends it on our side. We stop accepting the site's secret within the hour, its side panel goes away, and its domain needs verifying again unless a DNS record or a file already does that. Your tickets are kept either way.

Help by DeltaBreen

A helpdesk that lives inside your own site. One price per workspace, never per agent.

Get started

PricingDocsConnect

Legal

TermsRefund policyPrivacyData processing agreementSecurity

Company

[email protected]© 2026 DeltaBreen Limited · Company number 826627 · Gorey, Co. Wexford, Ireland